forked from aws/aws-sdk-go
-
Notifications
You must be signed in to change notification settings - Fork 1
/
service.go
154 lines (140 loc) · 5.42 KB
/
service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
package codecommit
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/client"
"github.com/aws/aws-sdk-go/aws/client/metadata"
"github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/aws/signer/v4"
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
)
// This is the AWS CodeCommit API Reference. This reference provides descriptions
// of the operations and data types for AWS CodeCommit API along with usage
// examples.
//
// You can use the AWS CodeCommit API to work with the following objects:
//
// Repositories, by calling the following:
//
// * BatchGetRepositories, which returns information about one or more repositories
// associated with your AWS account
//
// * CreateRepository, which creates an AWS CodeCommit repository
//
// * DeleteRepository, which deletes an AWS CodeCommit repository
//
// * GetRepository, which returns information about a specified repository
//
// * ListRepositories, which lists all AWS CodeCommit repositories associated
// with your AWS account
//
// * UpdateRepositoryDescription, which sets or updates the description of
// the repository
//
// * UpdateRepositoryName, which changes the name of the repository. If you
// change the name of a repository, no other users of that repository will
// be able to access it until you send them the new HTTPS or SSH URL to use.
//
// Branches, by calling the following:
//
// * CreateBranch, which creates a new branch in a specified repository
//
// * GetBranch, which returns information about a specified branch
//
// * ListBranches, which lists all branches for a specified repository
//
// * UpdateDefaultBranch, which changes the default branch for a repository
//
// Information about committed code in a repository, by calling the following:
//
// * GetBlob, which returns the base-64 encoded content of an individual
// Git blob object within a repository
//
// * GetCommit, which returns information about a commit, including commit
// messages and author and committer information
//
// * GetDifferences, which returns information about the differences in a
// valid commit specifier (such as a branch, tag, HEAD, commit ID or other
// fully qualified reference)
//
// Triggers, by calling the following:
//
// * GetRepositoryTriggers, which returns information about triggers configured
// for a repository
//
// * PutRepositoryTriggers, which replaces all triggers for a repository
// and can be used to create or delete triggers
//
// * TestRepositoryTriggers, which tests the functionality of a repository
// trigger by sending data to the trigger target
//
// For information about how to use AWS CodeCommit, see the AWS CodeCommit User
// Guide (http://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html).
// The service client's operations are safe to be used concurrently.
// It is not safe to mutate any of the client's properties though.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codecommit-2015-04-13
type CodeCommit struct {
*client.Client
}
// Used for custom client initialization logic
var initClient func(*client.Client)
// Used for custom request initialization logic
var initRequest func(*request.Request)
// Service information constants
const (
ServiceName = "codecommit" // Service endpoint prefix API calls made to.
EndpointsID = ServiceName // Service ID for Regions and Endpoints metadata.
)
// New creates a new instance of the CodeCommit client with a session.
// If additional configuration is needed for the client instance use the optional
// aws.Config parameter to add your extra config.
//
// Example:
// // Create a CodeCommit client from just a session.
// svc := codecommit.New(mySession)
//
// // Create a CodeCommit client with additional configuration
// svc := codecommit.New(mySession, aws.NewConfig().WithRegion("us-west-2"))
func New(p client.ConfigProvider, cfgs ...*aws.Config) *CodeCommit {
c := p.ClientConfig(EndpointsID, cfgs...)
return newClient(*c.Config, c.Handlers, c.Endpoint, c.SigningRegion, c.SigningName)
}
// newClient creates, initializes and returns a new service client instance.
func newClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegion, signingName string) *CodeCommit {
svc := &CodeCommit{
Client: client.New(
cfg,
metadata.ClientInfo{
ServiceName: ServiceName,
SigningName: signingName,
SigningRegion: signingRegion,
Endpoint: endpoint,
APIVersion: "2015-04-13",
JSONVersion: "1.1",
TargetPrefix: "CodeCommit_20150413",
},
handlers,
),
}
// Handlers
svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler)
svc.Handlers.Build.PushBackNamed(jsonrpc.BuildHandler)
svc.Handlers.Unmarshal.PushBackNamed(jsonrpc.UnmarshalHandler)
svc.Handlers.UnmarshalMeta.PushBackNamed(jsonrpc.UnmarshalMetaHandler)
svc.Handlers.UnmarshalError.PushBackNamed(jsonrpc.UnmarshalErrorHandler)
// Run custom client initialization if present
if initClient != nil {
initClient(svc.Client)
}
return svc
}
// newRequest creates a new request for a CodeCommit operation and runs any
// custom request initialization.
func (c *CodeCommit) newRequest(op *request.Operation, params, data interface{}) *request.Request {
req := c.NewRequest(op, params, data)
// Run custom request initialization if present
if initRequest != nil {
initRequest(req)
}
return req
}