Update vendor

This commit is contained in:
James Jeffrey
2017-07-19 15:43:53 -07:00
parent 06505cef17
commit f9a46f7c1c
30 changed files with 1131 additions and 160 deletions

View File

@@ -1,3 +1,25 @@
Release v1.10.13 (2017-07-19)
===
### Service Client Updates
* `service/budgets`: Updates service API and documentation
* Update budget Management API's to list/create/update RI_UTILIZATION type budget. Update budget Management API's to support DAILY timeUnit for RI_UTILIZATION type budget.
### SDK Enhancements
* `service/s3`: Use interfaces assertions instead of ValuesAtPath for S3 field lookups. [#1401](https://github.com/aws/aws-sdk-go/pull/1401)
* Improves the performance across the board for all S3 API calls by removing the usage of `ValuesAtPath` being used for every S3 API call.
### SDK Bugs
* `aws/request`: waiter test bug
* waiters_test.go file would sometimes fail due to travis hiccups. This occurs because a test would sometimes fail the cancel check and succeed the timeout. However, the timeout check should never occur in that test. This fix introduces a new field that dictates how waiters will sleep.
Release v1.10.12 (2017-07-17)
===
### Service Client Updates
* `service/cognito-idp`: Updates service API and documentation
* `service/lambda`: Updates service API and documentation
* Lambda@Edge lets you run code closer to your end users without provisioning or managing servers. With Lambda@Edge, your code runs in AWS edge locations, allowing you to respond to your end users at the lowest latency. Your code is triggered by Amazon CloudFront events, such as requests to and from origin servers and viewers, and it is ready to execute at every AWS edge location whenever a request for content is received. You just upload your Node.js code to AWS Lambda and Lambda takes care of everything required to run and scale your code with high availability. You only pay for the compute time you consume - there is no charge when your code is not running.
Release v1.10.11 (2017-07-14)
===

View File

@@ -79,8 +79,9 @@ type Waiter struct {
MaxAttempts int
Delay WaiterDelay
RequestOptions []Option
NewRequest func([]Option) (*Request, error)
RequestOptions []Option
NewRequest func([]Option) (*Request, error)
SleepWithContext func(aws.Context, time.Duration) error
}
// ApplyOptions updates the waiter with the list of waiter options provided.
@@ -195,8 +196,15 @@ func (w Waiter) WaitWithContext(ctx aws.Context) error {
if sleepFn := req.Config.SleepDelay; sleepFn != nil {
// Support SleepDelay for backwards compatibility and testing
sleepFn(delay)
} else if err := aws.SleepWithContext(ctx, delay); err != nil {
return awserr.New(CanceledErrorCode, "waiter context canceled", err)
} else {
sleepCtxFn := w.SleepWithContext
if sleepCtxFn == nil {
sleepCtxFn = aws.SleepWithContext
}
if err := sleepCtxFn(ctx, delay); err != nil {
return awserr.New(CanceledErrorCode, "waiter context canceled", err)
}
}
}

View File

@@ -100,8 +100,9 @@ func TestWaiterPathAll(t *testing.T) {
})
w := request.Waiter{
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -164,8 +165,9 @@ func TestWaiterPath(t *testing.T) {
})
w := request.Waiter{
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -228,8 +230,9 @@ func TestWaiterFailure(t *testing.T) {
})
w := request.Waiter{
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -321,8 +324,9 @@ func TestWaiterError(t *testing.T) {
})
w := request.Waiter{
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -389,8 +393,9 @@ func TestWaiterStatus(t *testing.T) {
})
w := request.Waiter{
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(0),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -447,9 +452,10 @@ func TestWaiter_WithContextCanceled(t *testing.T) {
reqCount := 0
w := request.Waiter{
Name: "TestWaiter",
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(1 * time.Millisecond),
Name: "TestWaiter",
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(1 * time.Millisecond),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -475,6 +481,16 @@ func TestWaiter_WithContextCanceled(t *testing.T) {
},
}
w.SleepWithContext = func(c aws.Context, delay time.Duration) error {
context := c.(*awstesting.FakeContext)
select {
case <-context.DoneCh:
return context.Err()
default:
return nil
}
}
err := w.WaitWithContext(ctx)
if err == nil {
@@ -498,9 +514,10 @@ func TestWaiter_WithContext(t *testing.T) {
statuses := []int{http.StatusNotFound, http.StatusOK}
w := request.Waiter{
Name: "TestWaiter",
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(1 * time.Millisecond),
Name: "TestWaiter",
MaxAttempts: 10,
Delay: request.ConstantWaiterDelay(1 * time.Millisecond),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,
@@ -543,9 +560,10 @@ func TestWaiter_AttemptsExpires(t *testing.T) {
reqCount := 0
w := request.Waiter{
Name: "TestWaiter",
MaxAttempts: 2,
Delay: request.ConstantWaiterDelay(1 * time.Millisecond),
Name: "TestWaiter",
MaxAttempts: 2,
Delay: request.ConstantWaiterDelay(1 * time.Millisecond),
SleepWithContext: aws.SleepWithContext,
Acceptors: []request.WaiterAcceptor{
{
State: request.SuccessWaiterState,

View File

@@ -5,4 +5,4 @@ package aws
const SDKName = "aws-sdk-go"
// SDKVersion is the version of this SDK
const SDKVersion = "1.10.11"
const SDKVersion = "1.10.13"

View File

@@ -236,13 +236,14 @@
"BudgetName":{
"type":"string",
"max":100,
"pattern":"[^:]+"
"pattern":"[^:\\\\]+"
},
"BudgetType":{
"type":"string",
"enum":[
"USAGE",
"COST"
"COST",
"RI_UTILIZATION"
]
},
"Budgets":{
@@ -588,7 +589,7 @@
],
"members":{
"Amount":{"shape":"NumericValue"},
"Unit":{"shape":"GenericString"}
"Unit":{"shape":"UnitValue"}
}
},
"Subscriber":{
@@ -629,11 +630,16 @@
"TimeUnit":{
"type":"string",
"enum":[
"DAILY",
"MONTHLY",
"QUARTERLY",
"ANNUALLY"
]
},
"UnitValue":{
"type":"string",
"min":1
},
"UpdateBudgetRequest":{
"type":"structure",
"required":[

View File

@@ -45,7 +45,7 @@
}
},
"BudgetName": {
"base": "A string represents the budget name. No \":\" character is allowed.",
"base": "A string represents the budget name. No \":\" and \"\\\" character is allowed.",
"refs": {
"Budget$BudgetName": null,
"CreateNotificationRequest$BudgetName": null,
@@ -61,7 +61,7 @@
}
},
"BudgetType": {
"base": "The type of a budget. Can be COST or USAGE.",
"base": "The type of a budget. It should be COST, USAGE, or RI_UTILIZATION.",
"refs": {
"Budget$BudgetType": null
}
@@ -236,7 +236,6 @@
"DescribeSubscribersForNotificationRequest$NextToken": null,
"DescribeSubscribersForNotificationResponse$NextToken": null,
"DimensionValues$member": null,
"Spend$Unit": null,
"Subscriber$Address": null
}
},
@@ -365,11 +364,17 @@
}
},
"TimeUnit": {
"base": "The time unit of the budget. e.g. weekly, monthly, etc.",
"base": "The time unit of the budget. e.g. MONTHLY, QUARTERLY, etc.",
"refs": {
"Budget$TimeUnit": null
}
},
"UnitValue": {
"base": "A string to represent budget spend unit. It should be not null and not empty.",
"refs": {
"Spend$Unit": null
}
},
"UpdateBudgetRequest": {
"base": "Request of UpdateBudget",
"refs": {

View File

@@ -305,6 +305,9 @@
{"shape":"TooManyRequestsException"},
{"shape":"LimitExceededException"},
{"shape":"UserNotFoundException"},
{"shape":"InvalidSmsRoleAccessPolicyException"},
{"shape":"InvalidEmailRoleAccessPolicyException"},
{"shape":"InvalidSmsRoleTrustRelationshipException"},
{"shape":"InternalErrorException"}
]
},
@@ -2212,6 +2215,7 @@
"LambdaConfig":{"shape":"LambdaConfigType"},
"AutoVerifiedAttributes":{"shape":"VerifiedAttributesListType"},
"AliasAttributes":{"shape":"AliasAttributesListType"},
"UsernameAttributes":{"shape":"UsernameAttributesListType"},
"SmsVerificationMessage":{"shape":"SmsVerificationMessageType"},
"EmailVerificationMessage":{"shape":"EmailVerificationMessageType"},
"EmailVerificationSubject":{"shape":"EmailVerificationSubjectType"},
@@ -3757,6 +3761,7 @@
"SchemaAttributes":{"shape":"SchemaAttributesListType"},
"AutoVerifiedAttributes":{"shape":"VerifiedAttributesListType"},
"AliasAttributes":{"shape":"AliasAttributesListType"},
"UsernameAttributes":{"shape":"UsernameAttributesListType"},
"SmsVerificationMessage":{"shape":"SmsVerificationMessageType"},
"EmailVerificationMessage":{"shape":"EmailVerificationMessageType"},
"EmailVerificationSubject":{"shape":"EmailVerificationSubjectType"},
@@ -3796,6 +3801,17 @@
"MFAOptions":{"shape":"MFAOptionListType"}
}
},
"UsernameAttributeType":{
"type":"string",
"enum":[
"phone_number",
"email"
]
},
"UsernameAttributesListType":{
"type":"list",
"member":{"shape":"UsernameAttributeType"}
},
"UsernameExistsException":{
"type":"structure",
"members":{

View File

@@ -390,15 +390,15 @@
"AuthFlowType": {
"base": null,
"refs": {
"AdminInitiateAuthRequest$AuthFlow": "<p>The authentication flow for this call to execute. The API action will depend on this value. For example:</p> <ul> <li> <p> <code>REFRESH_TOKEN_AUTH</code> will take in a valid refresh token and return new tokens.</p> </li> <li> <p> <code>USER_SRP_AUTH</code> will take in <code>USERNAME</code> and <code>SRPA</code> and return the SRP variables to be used for next challenge execution.</p> </li> </ul> <p>Valid values include:</p> <ul> <li> <p> <code>USER_SRP_AUTH</code>: Authentication flow for the Secure Remote Password (SRP) protocol.</p> </li> <li> <p> <code>REFRESH_TOKEN_AUTH</code>/<code>REFRESH_TOKEN</code>: Authentication flow for refreshing the access token and ID token by supplying a valid refresh token.</p> </li> <li> <p> <code>CUSTOM_AUTH</code>: Custom authentication flow.</p> </li> <li> <p> <code>ADMIN_NO_SRP_AUTH</code>: Non-SRP authentication flow; you can pass in the USERNAME and PASSWORD directly if the flow is enabled for calling the app client.</p> </li> </ul>",
"InitiateAuthRequest$AuthFlow": "<p>The authentication flow for this call to execute. The API action will depend on this value. For example: </p> <ul> <li> <p> <code>REFRESH_TOKEN_AUTH</code> will take in a valid refresh token and return new tokens.</p> </li> <li> <p> <code>USER_SRP_AUTH</code> will take in USERNAME and SRPA and return the SRP variables to be used for next challenge execution.</p> </li> </ul> <p>Valid values include:</p> <ul> <li> <p> <code>USER_SRP_AUTH</code>: Authentication flow for the Secure Remote Password (SRP) protocol.</p> </li> <li> <p> <code>REFRESH_TOKEN_AUTH</code>/<code>REFRESH_TOKEN</code>: Authentication flow for refreshing the access token and ID token by supplying a valid refresh token.</p> </li> <li> <p> <code>CUSTOM_AUTH</code>: Custom authentication flow.</p> </li> </ul> <p> <code>ADMIN_NO_SRP_AUTH</code> is not a valid value.</p>"
"AdminInitiateAuthRequest$AuthFlow": "<p>The authentication flow for this call to execute. The API action will depend on this value. For example:</p> <ul> <li> <p> <code>REFRESH_TOKEN_AUTH</code> will take in a valid refresh token and return new tokens.</p> </li> <li> <p> <code>USER_SRP_AUTH</code> will take in <code>USERNAME</code> and <code>SRP_A</code> and return the SRP variables to be used for next challenge execution.</p> </li> </ul> <p>Valid values include:</p> <ul> <li> <p> <code>USER_SRP_AUTH</code>: Authentication flow for the Secure Remote Password (SRP) protocol.</p> </li> <li> <p> <code>REFRESH_TOKEN_AUTH</code>/<code>REFRESH_TOKEN</code>: Authentication flow for refreshing the access token and ID token by supplying a valid refresh token.</p> </li> <li> <p> <code>CUSTOM_AUTH</code>: Custom authentication flow.</p> </li> <li> <p> <code>ADMIN_NO_SRP_AUTH</code>: Non-SRP authentication flow; you can pass in the USERNAME and PASSWORD directly if the flow is enabled for calling the app client.</p> </li> </ul>",
"InitiateAuthRequest$AuthFlow": "<p>The authentication flow for this call to execute. The API action will depend on this value. For example: </p> <ul> <li> <p> <code>REFRESH_TOKEN_AUTH</code> will take in a valid refresh token and return new tokens.</p> </li> <li> <p> <code>USER_SRP_AUTH</code> will take in <code>USERNAME</code> and <code>SRP_A</code> and return the SRP variables to be used for next challenge execution.</p> </li> </ul> <p>Valid values include:</p> <ul> <li> <p> <code>USER_SRP_AUTH</code>: Authentication flow for the Secure Remote Password (SRP) protocol.</p> </li> <li> <p> <code>REFRESH_TOKEN_AUTH</code>/<code>REFRESH_TOKEN</code>: Authentication flow for refreshing the access token and ID token by supplying a valid refresh token.</p> </li> <li> <p> <code>CUSTOM_AUTH</code>: Custom authentication flow.</p> </li> </ul> <p> <code>ADMIN_NO_SRP_AUTH</code> is not a valid value.</p>"
}
},
"AuthParametersType": {
"base": null,
"refs": {
"AdminInitiateAuthRequest$AuthParameters": "<p>The authentication parameters. These are inputs corresponding to the <code>AuthFlow</code> that you are invoking. The required values depend on the value of <code>AuthFlow</code>:</p> <ul> <li> <p>For <code>USER_SRP_AUTH</code>: <code>USERNAME</code> (required), <code>SRPA</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>REFRESH_TOKEN_AUTH/REFRESH_TOKEN</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>REFRESH_TOKEN</code> (required), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>ADMIN_NO_SRP_AUTH</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (if app client is configured with client secret), <code>PASSWORD</code> (required), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>CUSTOM_AUTH</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (if app client is configured with client secret), <code>DEVICE_KEY</code> </p> </li> </ul>",
"InitiateAuthRequest$AuthParameters": "<p>The authentication parameters. These are inputs corresponding to the <code>AuthFlow</code> that you are invoking. The required values depend on the value of <code>AuthFlow</code>:</p> <ul> <li> <p>For <code>USER_SRP_AUTH</code>: <code>USERNAME</code> (required), <code>SRPA</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>REFRESH_TOKEN_AUTH/REFRESH_TOKEN</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>REFRESH_TOKEN</code> (required), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>CUSTOM_AUTH</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (if app client is configured with client secret), <code>DEVICE_KEY</code> </p> </li> </ul>"
"AdminInitiateAuthRequest$AuthParameters": "<p>The authentication parameters. These are inputs corresponding to the <code>AuthFlow</code> that you are invoking. The required values depend on the value of <code>AuthFlow</code>:</p> <ul> <li> <p>For <code>USER_SRP_AUTH</code>: <code>USERNAME</code> (required), <code>SRP_A</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>REFRESH_TOKEN_AUTH/REFRESH_TOKEN</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>REFRESH_TOKEN</code> (required), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>ADMIN_NO_SRP_AUTH</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (if app client is configured with client secret), <code>PASSWORD</code> (required), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>CUSTOM_AUTH</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (if app client is configured with client secret), <code>DEVICE_KEY</code> </p> </li> </ul>",
"InitiateAuthRequest$AuthParameters": "<p>The authentication parameters. These are inputs corresponding to the <code>AuthFlow</code> that you are invoking. The required values depend on the value of <code>AuthFlow</code>:</p> <ul> <li> <p>For <code>USER_SRP_AUTH</code>: <code>USERNAME</code> (required), <code>SRP_A</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>REFRESH_TOKEN_AUTH/REFRESH_TOKEN</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (required if the app client is configured with a client secret), <code>REFRESH_TOKEN</code> (required), <code>DEVICE_KEY</code> </p> </li> <li> <p>For <code>CUSTOM_AUTH</code>: <code>USERNAME</code> (required), <code>SECRET_HASH</code> (if app client is configured with client secret), <code>DEVICE_KEY</code> </p> </li> </ul>"
}
},
"AuthenticationResultType": {
@@ -2101,6 +2101,19 @@
"UsersListType$member": null
}
},
"UsernameAttributeType": {
"base": null,
"refs": {
"UsernameAttributesListType$member": null
}
},
"UsernameAttributesListType": {
"base": null,
"refs": {
"CreateUserPoolRequest$UsernameAttributes": "<p>Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.</p>",
"UserPoolType$UsernameAttributes": "<p>Specifies whether email addresses or phone numbers can be specified as usernames when a user signs up.</p>"
}
},
"UsernameExistsException": {
"base": "<p>This exception is thrown when Amazon Cognito encounters a user name that already exists in the user pool.</p>",
"refs": {

View File

@@ -310,7 +310,8 @@
"output":{"shape":"ListFunctionsResponse"},
"errors":[
{"shape":"ServiceException"},
{"shape":"TooManyRequestsException"}
{"shape":"TooManyRequestsException"},
{"shape":"InvalidParameterValueException"}
]
},
"ListTags":{
@@ -820,8 +821,8 @@
"FunctionConfiguration":{
"type":"structure",
"members":{
"FunctionName":{"shape":"FunctionName"},
"FunctionArn":{"shape":"FunctionArn"},
"FunctionName":{"shape":"NamespacedFunctionName"},
"FunctionArn":{"shape":"NameSpacedFunctionArn"},
"Runtime":{"shape":"Runtime"},
"Role":{"shape":"RoleArn"},
"Handler":{"shape":"Handler"},
@@ -836,7 +837,8 @@
"DeadLetterConfig":{"shape":"DeadLetterConfig"},
"Environment":{"shape":"EnvironmentResponse"},
"KMSKeyArn":{"shape":"KMSKeyArn"},
"TracingConfig":{"shape":"TracingConfigResponse"}
"TracingConfig":{"shape":"TracingConfigResponse"},
"MasterArn":{"shape":"FunctionArn"}
}
},
"FunctionList":{
@@ -849,6 +851,10 @@
"min":1,
"pattern":"(arn:aws:lambda:)?([a-z]{2}-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?"
},
"FunctionVersion":{
"type":"string",
"enum":["ALL"]
},
"GetAccountSettingsRequest":{
"type":"structure",
"members":{
@@ -896,7 +902,7 @@
"required":["FunctionName"],
"members":{
"FunctionName":{
"shape":"FunctionName",
"shape":"NamespacedFunctionName",
"location":"uri",
"locationName":"FunctionName"
},
@@ -912,7 +918,7 @@
"required":["FunctionName"],
"members":{
"FunctionName":{
"shape":"FunctionName",
"shape":"NamespacedFunctionName",
"location":"uri",
"locationName":"FunctionName"
},
@@ -936,7 +942,7 @@
"required":["FunctionName"],
"members":{
"FunctionName":{
"shape":"FunctionName",
"shape":"NamespacedFunctionName",
"location":"uri",
"locationName":"FunctionName"
},
@@ -1019,7 +1025,7 @@
"required":["FunctionName"],
"members":{
"FunctionName":{
"shape":"FunctionName",
"shape":"NamespacedFunctionName",
"location":"uri",
"locationName":"FunctionName"
},
@@ -1084,7 +1090,7 @@
],
"members":{
"FunctionName":{
"shape":"FunctionName",
"shape":"NamespacedFunctionName",
"location":"uri",
"locationName":"FunctionName"
},
@@ -1211,6 +1217,16 @@
"ListFunctionsRequest":{
"type":"structure",
"members":{
"MasterRegion":{
"shape":"MasterRegion",
"location":"querystring",
"locationName":"MasterRegion"
},
"FunctionVersion":{
"shape":"FunctionVersion",
"location":"querystring",
"locationName":"FunctionVersion"
},
"Marker":{
"shape":"String",
"location":"querystring",
@@ -1252,7 +1268,7 @@
"required":["FunctionName"],
"members":{
"FunctionName":{
"shape":"FunctionName",
"shape":"NamespacedFunctionName",
"location":"uri",
"locationName":"FunctionName"
},
@@ -1283,6 +1299,10 @@
]
},
"Long":{"type":"long"},
"MasterRegion":{
"type":"string",
"pattern":"ALL|[a-z]{2}(-gov)?-[a-z]+-\\d{1}"
},
"MaxListItems":{
"type":"integer",
"max":10000,
@@ -1293,6 +1313,22 @@
"max":1536,
"min":128
},
"NameSpacedFunctionArn":{
"type":"string",
"pattern":"arn:aws:lambda:[a-z]{2}-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?"
},
"NamespacedFunctionName":{
"type":"string",
"max":170,
"min":1,
"pattern":"(arn:aws:lambda:)?([a-z]{2}-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_\\.]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?"
},
"NamespacedStatementId":{
"type":"string",
"max":100,
"min":1,
"pattern":"([a-zA-Z0-9-_.]+)"
},
"PolicyLengthExceededException":{
"type":"structure",
"members":{
@@ -1338,7 +1374,7 @@
"locationName":"FunctionName"
},
"StatementId":{
"shape":"StatementId",
"shape":"NamespacedStatementId",
"location":"uri",
"locationName":"StatementId"
},

View File

@@ -19,7 +19,7 @@
"InvokeAsync": "<important> <p>This API is deprecated. We recommend you use <code>Invoke</code> API (see <a>Invoke</a>).</p> </important> <p>Submits an invocation request to AWS Lambda. Upon receiving the request, Lambda executes the specified function asynchronously. To see the logs generated by the Lambda function execution, see the CloudWatch Logs console.</p> <p>This operation requires permission for the <code>lambda:InvokeFunction</code> action.</p>",
"ListAliases": "<p>Returns list of aliases created for a Lambda function. For each alias, the response includes information such as the alias ARN, description, alias name, and the function version to which it points. For more information, see <a href=\"http://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html\">Introduction to AWS Lambda Aliases</a>.</p> <p>This requires permission for the lambda:ListAliases action.</p>",
"ListEventSourceMappings": "<p>Returns a list of event source mappings you created using the <code>CreateEventSourceMapping</code> (see <a>CreateEventSourceMapping</a>). </p> <p>For each mapping, the API returns configuration information. You can optionally specify filters to retrieve specific event source mappings.</p> <p>If you are using the versioning feature, you can get list of event source mappings for a specific Lambda function version or an alias as described in the <code>FunctionName</code> parameter. For information about the versioning feature, see <a href=\"http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html\">AWS Lambda Function Versioning and Aliases</a>. </p> <p>This operation requires permission for the <code>lambda:ListEventSourceMappings</code> action.</p>",
"ListFunctions": "<p>Returns a list of your Lambda functions. For each function, the response includes the function configuration information. You must use <a>GetFunction</a> to retrieve the code for your function.</p> <p>This operation requires permission for the <code>lambda:ListFunctions</code> action.</p> <p>If you are using versioning feature, the response returns list of $LATEST versions of your functions. For information about the versioning feature, see <a href=\"http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html\">AWS Lambda Function Versioning and Aliases</a>. </p>",
"ListFunctions": "<p>Returns a list of your Lambda functions. For each function, the response includes the function configuration information. You must use <a>GetFunction</a> to retrieve the code for your function.</p> <p>This operation requires permission for the <code>lambda:ListFunctions</code> action.</p> <p>If you are using the versioning feature, you can list all of your functions or only <code>$LATEST</code> versions. For information about the versioning feature, see <a href=\"http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html\">AWS Lambda Function Versioning and Aliases</a>. </p>",
"ListTags": "<p>Returns a list of tags assigned to a function when supplied the function ARN (Amazon Resource Name).</p>",
"ListVersionsByFunction": "<p>List all versions of a function. For information about the versioning feature, see <a href=\"http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html\">AWS Lambda Function Versioning and Aliases</a>. </p>",
"PublishVersion": "<p>Publishes a version of your function from the current snapshot of $LATEST. That is, AWS Lambda takes a snapshot of the function code and configuration information from $LATEST and publishes a new version. The code and configuration cannot be modified after publication. For information about the versioning feature, see <a href=\"http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html\">AWS Lambda Function Versioning and Aliases</a>. </p>",
@@ -278,7 +278,7 @@
"refs": {
"AliasConfiguration$AliasArn": "<p>Lambda function ARN that is qualified using the alias name as the suffix. For example, if you create an alias called <code>BETA</code> that points to a helloworld function version, the ARN is <code>arn:aws:lambda:aws-regions:acct-id:function:helloworld:BETA</code>.</p>",
"EventSourceMappingConfiguration$FunctionArn": "<p>The Lambda function to invoke when AWS Lambda detects an event on the stream.</p>",
"FunctionConfiguration$FunctionArn": "<p>The Amazon Resource Name (ARN) assigned to the function.</p>",
"FunctionConfiguration$MasterArn": "<p>Returns the ARN (Amazon Resource Name) of the master function.</p>",
"ListTagsRequest$Resource": "<p>The ARN (Amazon Resource Name) of the function.</p>",
"TagResourceRequest$Resource": "<p>The ARN (Amazon Resource Name) of the Lambda function.</p>",
"UntagResourceRequest$Resource": "<p>The ARN (Amazon Resource Name) of the function.</p>"
@@ -319,16 +319,9 @@
"CreateFunctionRequest$FunctionName": "<p>The name you want to assign to the function you are uploading. The function names appear in the console and are returned in the <a>ListFunctions</a> API. Function names are used to specify functions to other AWS Lambda API operations, such as <a>Invoke</a>. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"DeleteAliasRequest$FunctionName": "<p>The Lambda function name for which the alias is created. Deleting an alias does not delete the function version to which it is pointing. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"DeleteFunctionRequest$FunctionName": "<p>The Lambda function to delete.</p> <p> You can specify the function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"FunctionConfiguration$FunctionName": "<p>The name of the function. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"GetAliasRequest$FunctionName": "<p>Function name for which the alias is created. An alias is a subresource that exists only in the context of an existing Lambda function so you must specify the function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"GetFunctionConfigurationRequest$FunctionName": "<p>The name of the Lambda function for which you want to retrieve the configuration information.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"GetFunctionRequest$FunctionName": "<p>The Lambda function name.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"GetPolicyRequest$FunctionName": "<p>Function name whose resource policy you want to retrieve.</p> <p> You can specify the function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"InvocationRequest$FunctionName": "<p>The Lambda function name.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"InvokeAsyncRequest$FunctionName": "<p>The Lambda function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"ListAliasesRequest$FunctionName": "<p>Lambda function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"ListEventSourceMappingsRequest$FunctionName": "<p>The name of the Lambda function.</p> <p> You can specify the function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"ListVersionsByFunctionRequest$FunctionName": "<p>Function name whose versions to list. You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"PublishVersionRequest$FunctionName": "<p>The Lambda function name. You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"RemovePermissionRequest$FunctionName": "<p>Lambda function whose resource policy you want to remove a permission from.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"UpdateAliasRequest$FunctionName": "<p>The function name for which the alias is created. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
@@ -337,6 +330,12 @@
"UpdateFunctionConfigurationRequest$FunctionName": "<p>The name of the Lambda function.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 character in length. </p>"
}
},
"FunctionVersion": {
"base": null,
"refs": {
"ListFunctionsRequest$FunctionVersion": "<p>Optional string. If not specified, only the unqualified functions ARNs (Amazon Resource Names) will be returned.</p> <p>Valid value:</p> <p> <code>ALL</code> _ Will return all versions, including <code>$LATEST</code> which will have fully qualified ARNs (Amazon Resource Names).</p>"
}
},
"GetAccountSettingsRequest": {
"base": null,
"refs": {
@@ -554,6 +553,12 @@
"FunctionConfiguration$CodeSize": "<p>The size, in bytes, of the function .zip file you uploaded.</p>"
}
},
"MasterRegion": {
"base": null,
"refs": {
"ListFunctionsRequest$MasterRegion": "<p>Optional string. If not specified, will return only regular function versions (i.e., non-replicated versions).</p> <p>Valid values are:</p> <p>The region from which the functions are replicated. For example, if you specify <code>us-east-1</code>, only functions replicated from that region will be returned.</p> <p> <code>ALL</code> _ Will return all functions from any region. If specified, you also must specify a valid FunctionVersion parameter.</p>"
}
},
"MaxListItems": {
"base": null,
"refs": {
@@ -571,6 +576,30 @@
"UpdateFunctionConfigurationRequest$MemorySize": "<p>The amount of memory, in MB, your Lambda function is given. AWS Lambda uses this memory size to infer the amount of CPU allocated to your function. Your function use-case determines your CPU and memory requirements. For example, a database operation might need less memory compared to an image processing function. The default value is 128 MB. The value must be a multiple of 64 MB.</p>"
}
},
"NameSpacedFunctionArn": {
"base": null,
"refs": {
"FunctionConfiguration$FunctionArn": "<p>The Amazon Resource Name (ARN) assigned to the function.</p>"
}
},
"NamespacedFunctionName": {
"base": null,
"refs": {
"FunctionConfiguration$FunctionName": "<p>The name of the function. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"GetFunctionConfigurationRequest$FunctionName": "<p>The name of the Lambda function for which you want to retrieve the configuration information.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"GetFunctionRequest$FunctionName": "<p>The Lambda function name.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"GetPolicyRequest$FunctionName": "<p>Function name whose resource policy you want to retrieve.</p> <p> You can specify the function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). If you are using versioning, you can also provide a qualified function ARN (ARN that is qualified with function version or alias name as suffix). AWS Lambda also allows you to specify only the function name with the account ID qualifier (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"InvocationRequest$FunctionName": "<p>The Lambda function name.</p> <p> You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>",
"InvokeAsyncRequest$FunctionName": "<p>The Lambda function name. Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length.</p>",
"ListVersionsByFunctionRequest$FunctionName": "<p>Function name whose versions to list. You can specify a function name (for example, <code>Thumbnail</code>) or you can specify Amazon Resource Name (ARN) of the function (for example, <code>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</code>). AWS Lambda also allows you to specify a partial ARN (for example, <code>account-id:Thumbnail</code>). Note that the length constraint applies only to the ARN. If you specify only the function name, it is limited to 64 characters in length. </p>"
}
},
"NamespacedStatementId": {
"base": null,
"refs": {
"RemovePermissionRequest$StatementId": "<p>Statement ID of the permission to remove.</p>"
}
},
"PolicyLengthExceededException": {
"base": "<p>Lambda function access policy is limited to 20 KB.</p>",
"refs": {
@@ -638,7 +667,7 @@
"refs": {
"CreateFunctionRequest$Runtime": "<p>The runtime environment for the Lambda function you are uploading.</p> <p>To use the Python runtime v3.6, set the value to \"python3.6\". To use the Python runtime v2.7, set the value to \"python2.7\". To use the Node.js runtime v6.10, set the value to \"nodejs6.10\". To use the Node.js runtime v4.3, set the value to \"nodejs4.3\".</p> <note> <p>Node v0.10.42 is currently marked as deprecated. You must migrate existing functions to the newer Node.js runtime versions available on AWS Lambda (nodejs4.3 or nodejs6.10) as soon as possible. You can request a one-time extension until June 30, 2017 by going to the Lambda console and following the instructions provided. Failure to do so will result in an invalid parmaeter error being returned. Note that you will have to follow this procedure for each region that contains functions written in the Node v0.10.42 runtime.</p> </note>",
"FunctionConfiguration$Runtime": "<p>The runtime environment for the Lambda function.</p>",
"UpdateFunctionConfigurationRequest$Runtime": "<p>The runtime environment for the Lambda function.</p> <p>To use the Python runtime v3.6, set the value to \"python3.6\". To use the Python runtime v2.7, set the value to \"python2.7\". To use the Node.js runtime v6.10, set the value to \"nodejs6.10\". To use the Node.js runtime v4.3, set the value to \"nodejs4.3\". To use the Python runtime v3.6, set the value to \"python3.6\". To use the Python runtime v2.7, set the value to \"python2.7\".</p> <note> <p>Node v0.10.42 is currently marked as deprecated. You must migrate existing functions to the newer Node.js runtime versions available on AWS Lambda (nodejs4.3 or nodejs6.10) as soon as possible. You can request a one-time extension until June 30, 2017 by going to the Lambda console and following the instructions provided. Failure to do so will result in an invalid parameter value error being returned. Note that you will have to follow this procedure for each region that contains functions written in the Node v0.10.42 runtime.</p> </note>"
"UpdateFunctionConfigurationRequest$Runtime": "<p>The runtime environment for the Lambda function.</p> <p>To use the Python runtime v3.6, set the value to \"python3.6\". To use the Python runtime v2.7, set the value to \"python2.7\". To use the Node.js runtime v6.10, set the value to \"nodejs6.10\". To use the Node.js runtime v4.3, set the value to \"nodejs4.3\". To use the Python runtime v3.6, set the value to \"python3.6\".</p> <note> <p>Node v0.10.42 is currently marked as deprecated. You must migrate existing functions to the newer Node.js runtime versions available on AWS Lambda (nodejs4.3 or nodejs6.10) as soon as possible. You can request a one-time extension until June 30, 2017 by going to the Lambda console and following the instructions provided. Failure to do so will result in an invalid parameter error being returned. Note that you will have to follow this procedure for each region that contains functions written in the Node v0.10.42 runtime.</p> </note>"
}
},
"S3Bucket": {
@@ -695,8 +724,7 @@
"StatementId": {
"base": null,
"refs": {
"AddPermissionRequest$StatementId": "<p>A unique statement identifier.</p>",
"RemovePermissionRequest$StatementId": "<p>Statement ID of the permission to remove.</p>"
"AddPermissionRequest$StatementId": "<p>A unique statement identifier.</p>"
}
},
"String": {

View File

@@ -59,6 +59,12 @@ func s3Customizations(a *API) {
delete(s.MemberRefs, "ContentMD5")
}
for _, refName := range []string{"Bucket", "SSECustomerKey", "CopySourceSSECustomerKey"} {
if ref, ok := s.MemberRefs[refName]; ok {
ref.GenerateGetter = true
}
}
// Expires should be a string not time.Time since the format is not
// enforced by S3, and any value can be set to this field outside of the SDK.
if strings.HasSuffix(name, "Output") {

View File

@@ -33,6 +33,8 @@ type ShapeRef struct {
Deprecated bool `json:"deprecated"`
OrigShapeName string `json:"-"`
GenerateGetter bool
}
// ErrorInfo represents the error block of a shape's structure
@@ -580,6 +582,19 @@ func (s *{{ $builderShapeName }}) Set{{ $name }}(v {{ $context.GoStructValueType
return s
}
{{ if $elem.GenerateGetter -}}
func (s *{{ $builderShapeName }}) get{{ $name }}() (v {{ $context.GoStructValueType $name $elem }}) {
{{ if $elem.UseIndirection -}}
if s.{{ $name }} == nil {
return v
}
return *s.{{ $name }}
{{ else -}}
return s.{{ $name }}
{{ end -}}
}
{{- end }}
{{ end }}
{{ end }}
`))

View File

@@ -1167,12 +1167,12 @@ type Budget struct {
// BudgetLimit is a required field
BudgetLimit *Spend `type:"structure" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
// The type of a budget. Can be COST or USAGE.
// The type of a budget. It should be COST, USAGE, or RI_UTILIZATION.
//
// BudgetType is a required field
BudgetType *string `type:"string" required:"true" enum:"BudgetType"`
@@ -1193,7 +1193,7 @@ type Budget struct {
// TimePeriod is a required field
TimePeriod *TimePeriod `type:"structure" required:"true"`
// The time unit of the budget. e.g. weekly, monthly, etc.
// The time unit of the budget. e.g. MONTHLY, QUARTERLY, etc.
//
// TimeUnit is a required field
TimeUnit *string `type:"string" required:"true" enum:"TimeUnit"`
@@ -1536,7 +1536,7 @@ type CreateNotificationInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -1654,7 +1654,7 @@ type CreateSubscriberInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -1765,7 +1765,7 @@ type DeleteBudgetInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -1836,7 +1836,7 @@ type DeleteNotificationInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -1927,7 +1927,7 @@ type DeleteSubscriberInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -2038,7 +2038,7 @@ type DescribeBudgetInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -2215,7 +2215,7 @@ type DescribeNotificationsForBudgetInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -2326,7 +2326,7 @@ type DescribeSubscribersForNotificationInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -2604,10 +2604,10 @@ type Spend struct {
// Amount is a required field
Amount *string `type:"string" required:"true"`
// A generic String.
// A string to represent budget spend unit. It should be not null and not empty.
//
// Unit is a required field
Unit *string `type:"string" required:"true"`
Unit *string `min:"1" type:"string" required:"true"`
}
// String returns the string representation
@@ -2629,6 +2629,9 @@ func (s *Spend) Validate() error {
if s.Unit == nil {
invalidParams.Add(request.NewErrParamRequired("Unit"))
}
if s.Unit != nil && len(*s.Unit) < 1 {
invalidParams.Add(request.NewErrParamMinLen("Unit", 1))
}
if invalidParams.Len() > 0 {
return invalidParams
@@ -2840,7 +2843,7 @@ type UpdateNotificationInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -2951,7 +2954,7 @@ type UpdateSubscriberInput struct {
// AccountId is a required field
AccountId *string `min:"12" type:"string" required:"true"`
// A string represents the budget name. No ":" character is allowed.
// A string represents the budget name. No ":" and "\" character is allowed.
//
// BudgetName is a required field
BudgetName *string `type:"string" required:"true"`
@@ -3073,13 +3076,16 @@ func (s UpdateSubscriberOutput) GoString() string {
return s.String()
}
// The type of a budget. Can be COST or USAGE.
// The type of a budget. It should be COST, USAGE, or RI_UTILIZATION.
const (
// BudgetTypeUsage is a BudgetType enum value
BudgetTypeUsage = "USAGE"
// BudgetTypeCost is a BudgetType enum value
BudgetTypeCost = "COST"
// BudgetTypeRiUtilization is a BudgetType enum value
BudgetTypeRiUtilization = "RI_UTILIZATION"
)
// The comparison operator of a notification. Currently we support less than,
@@ -3113,8 +3119,11 @@ const (
SubscriptionTypeEmail = "EMAIL"
)
// The time unit of the budget. e.g. weekly, monthly, etc.
// The time unit of the budget. e.g. MONTHLY, QUARTERLY, etc.
const (
// TimeUnitDaily is a TimeUnit enum value
TimeUnitDaily = "DAILY"
// TimeUnitMonthly is a TimeUnit enum value
TimeUnitMonthly = "MONTHLY"

View File

@@ -1727,6 +1727,20 @@ func (c *CognitoIdentityProvider) AdminResetUserPasswordRequest(input *AdminRese
// * ErrCodeUserNotFoundException "UserNotFoundException"
// This exception is thrown when a user is not found.
//
// * ErrCodeInvalidSmsRoleAccessPolicyException "InvalidSmsRoleAccessPolicyException"
// This exception is returned when the role provided for SMS configuration does
// not have permission to publish using Amazon SNS.
//
// * ErrCodeInvalidEmailRoleAccessPolicyException "InvalidEmailRoleAccessPolicyException"
// This exception is thrown when Amazon Cognito is not allowed to use your email
// identity. HTTP status code: 400.
//
// * ErrCodeInvalidSmsRoleTrustRelationshipException "InvalidSmsRoleTrustRelationshipException"
// This exception is thrown when the trust relationship is invalid for the role
// provided for SMS configuration. This can happen if you do not trust cognito-idp.amazonaws.com
// or the external ID provided in the role does not match what is provided in
// the SMS configuration for the user pool.
//
// * ErrCodeInternalErrorException "InternalErrorException"
// This exception is thrown when Amazon Cognito encounters an internal error.
//
@@ -9232,7 +9246,7 @@ type AdminInitiateAuthInput struct {
// * REFRESH_TOKEN_AUTH will take in a valid refresh token and return new
// tokens.
//
// * USER_SRP_AUTH will take in USERNAME and SRPA and return the SRP variables
// * USER_SRP_AUTH will take in USERNAME and SRP_A and return the SRP variables
// to be used for next challenge execution.
//
// Valid values include:
@@ -9255,7 +9269,7 @@ type AdminInitiateAuthInput struct {
// The authentication parameters. These are inputs corresponding to the AuthFlow
// that you are invoking. The required values depend on the value of AuthFlow:
//
// * For USER_SRP_AUTH: USERNAME (required), SRPA (required), SECRET_HASH
// * For USER_SRP_AUTH: USERNAME (required), SRP_A (required), SECRET_HASH
// (required if the app client is configured with a client secret), DEVICE_KEY
//
// * For REFRESH_TOKEN_AUTH/REFRESH_TOKEN: USERNAME (required), SECRET_HASH
@@ -11705,6 +11719,10 @@ type CreateUserPoolInput struct {
// The cost allocation tags for the user pool. For more information, see Adding
// Cost Allocation Tags to Your User Pool (http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-cost-allocation-tagging.html)
UserPoolTags map[string]*string `type:"map"`
// Specifies whether email addresses or phone numbers can be specified as usernames
// when a user signs up.
UsernameAttributes []*string `type:"list"`
}
// String returns the string representation
@@ -11879,6 +11897,12 @@ func (s *CreateUserPoolInput) SetUserPoolTags(v map[string]*string) *CreateUserP
return s
}
// SetUsernameAttributes sets the UsernameAttributes field's value.
func (s *CreateUserPoolInput) SetUsernameAttributes(v []*string) *CreateUserPoolInput {
s.UsernameAttributes = v
return s
}
// Represents the response from the server for the request to create a user
// pool.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/cognito-idp-2016-04-18/CreateUserPoolResponse
@@ -13955,7 +13979,7 @@ type InitiateAuthInput struct {
// * REFRESH_TOKEN_AUTH will take in a valid refresh token and return new
// tokens.
//
// * USER_SRP_AUTH will take in USERNAME and SRPA and return the SRP variables
// * USER_SRP_AUTH will take in USERNAME and SRP_A and return the SRP variables
// to be used for next challenge execution.
//
// Valid values include:
@@ -13976,7 +14000,7 @@ type InitiateAuthInput struct {
// The authentication parameters. These are inputs corresponding to the AuthFlow
// that you are invoking. The required values depend on the value of AuthFlow:
//
// * For USER_SRP_AUTH: USERNAME (required), SRPA (required), SECRET_HASH
// * For USER_SRP_AUTH: USERNAME (required), SRP_A (required), SECRET_HASH
// (required if the app client is configured with a client secret), DEVICE_KEY
//
// * For REFRESH_TOKEN_AUTH/REFRESH_TOKEN: USERNAME (required), SECRET_HASH
@@ -17718,6 +17742,10 @@ type UserPoolType struct {
// The cost allocation tags for the user pool. For more information, see Adding
// Cost Allocation Tags to Your User Pool (http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-cost-allocation-tagging.html)
UserPoolTags map[string]*string `type:"map"`
// Specifies whether email addresses or phone numbers can be specified as usernames
// when a user signs up.
UsernameAttributes []*string `type:"list"`
}
// String returns the string representation
@@ -17868,6 +17896,12 @@ func (s *UserPoolType) SetUserPoolTags(v map[string]*string) *UserPoolType {
return s
}
// SetUsernameAttributes sets the UsernameAttributes field's value.
func (s *UserPoolType) SetUsernameAttributes(v []*string) *UserPoolType {
s.UsernameAttributes = v
return s
}
// The user type.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/cognito-idp-2016-04-18/UserType
type UserType struct {
@@ -18243,6 +18277,14 @@ const (
UserStatusTypeForceChangePassword = "FORCE_CHANGE_PASSWORD"
)
const (
// UsernameAttributeTypePhoneNumber is a UsernameAttributeType enum value
UsernameAttributeTypePhoneNumber = "phone_number"
// UsernameAttributeTypeEmail is a UsernameAttributeType enum value
UsernameAttributeTypeEmail = "email"
)
const (
// VerifiedAttributeTypePhoneNumber is a VerifiedAttributeType enum value
VerifiedAttributeTypePhoneNumber = "phone_number"

View File

@@ -1870,9 +1870,9 @@ func (c *Lambda) ListFunctionsRequest(input *ListFunctionsInput) (req *request.R
//
// This operation requires permission for the lambda:ListFunctions action.
//
// If you are using versioning feature, the response returns list of $LATEST
// versions of your functions. For information about the versioning feature,
// see AWS Lambda Function Versioning and Aliases (http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).
// If you are using the versioning feature, you can list all of your functions
// or only $LATEST versions. For information about the versioning feature, see
// AWS Lambda Function Versioning and Aliases (http://docs.aws.amazon.com/lambda/latest/dg/versioning-aliases.html).
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
@@ -1887,6 +1887,13 @@ func (c *Lambda) ListFunctionsRequest(input *ListFunctionsInput) (req *request.R
//
// * ErrCodeTooManyRequestsException "TooManyRequestsException"
//
// * ErrCodeInvalidParameterValueException "InvalidParameterValueException"
// One of the parameters in the request is invalid. For example, if you provided
// an IAM role for AWS Lambda to assume in the CreateFunction or the UpdateFunctionConfiguration
// API, that AWS Lambda is unable to assume you will get this exception. You
// will also get this exception if you have selected a deprecated runtime, such
// as Node v0.10.42.
//
func (c *Lambda) ListFunctions(input *ListFunctionsInput) (*ListFunctionsOutput, error) {
req, out := c.ListFunctionsRequest(input)
return out, req.Send()
@@ -4292,6 +4299,9 @@ type FunctionConfiguration struct {
// Formats (https://www.w3.org/TR/NOTE-datetime).
LastModified *string `type:"string"`
// Returns the ARN (Amazon Resource Name) of the master function.
MasterArn *string `type:"string"`
// The memory size, in MB, you configured for the function. Must be a multiple
// of 64 MB.
MemorySize *int64 `min:"128" type:"integer"`
@@ -4388,6 +4398,12 @@ func (s *FunctionConfiguration) SetLastModified(v string) *FunctionConfiguration
return s
}
// SetMasterArn sets the MasterArn field's value.
func (s *FunctionConfiguration) SetMasterArn(v string) *FunctionConfiguration {
s.MasterArn = &v
return s
}
// SetMemorySize sets the MemorySize field's value.
func (s *FunctionConfiguration) SetMemorySize(v int64) *FunctionConfiguration {
s.MemorySize = &v
@@ -5333,10 +5349,31 @@ func (s *ListEventSourceMappingsOutput) SetNextMarker(v string) *ListEventSource
type ListFunctionsInput struct {
_ struct{} `type:"structure"`
// Optional string. If not specified, only the unqualified functions ARNs (Amazon
// Resource Names) will be returned.
//
// Valid value:
//
// ALL _ Will return all versions, including $LATEST which will have fully qualified
// ARNs (Amazon Resource Names).
FunctionVersion *string `location:"querystring" locationName:"FunctionVersion" type:"string" enum:"FunctionVersion"`
// Optional string. An opaque pagination token returned from a previous ListFunctions
// operation. If present, indicates where to continue the listing.
Marker *string `location:"querystring" locationName:"Marker" type:"string"`
// Optional string. If not specified, will return only regular function versions
// (i.e., non-replicated versions).
//
// Valid values are:
//
// The region from which the functions are replicated. For example, if you specify
// us-east-1, only functions replicated from that region will be returned.
//
// ALL _ Will return all functions from any region. If specified, you also must
// specify a valid FunctionVersion parameter.
MasterRegion *string `location:"querystring" locationName:"MasterRegion" type:"string"`
// Optional integer. Specifies the maximum number of AWS Lambda functions to
// return in response. This parameter value must be greater than 0.
MaxItems *int64 `location:"querystring" locationName:"MaxItems" min:"1" type:"integer"`
@@ -5365,12 +5402,24 @@ func (s *ListFunctionsInput) Validate() error {
return nil
}
// SetFunctionVersion sets the FunctionVersion field's value.
func (s *ListFunctionsInput) SetFunctionVersion(v string) *ListFunctionsInput {
s.FunctionVersion = &v
return s
}
// SetMarker sets the Marker field's value.
func (s *ListFunctionsInput) SetMarker(v string) *ListFunctionsInput {
s.Marker = &v
return s
}
// SetMasterRegion sets the MasterRegion field's value.
func (s *ListFunctionsInput) SetMasterRegion(v string) *ListFunctionsInput {
s.MasterRegion = &v
return s
}
// SetMaxItems sets the MaxItems field's value.
func (s *ListFunctionsInput) SetMaxItems(v int64) *ListFunctionsInput {
s.MaxItems = &v
@@ -6263,15 +6312,15 @@ type UpdateFunctionConfigurationInput struct {
// Python runtime v2.7, set the value to "python2.7". To use the Node.js runtime
// v6.10, set the value to "nodejs6.10". To use the Node.js runtime v4.3, set
// the value to "nodejs4.3". To use the Python runtime v3.6, set the value to
// "python3.6". To use the Python runtime v2.7, set the value to "python2.7".
// "python3.6".
//
// Node v0.10.42 is currently marked as deprecated. You must migrate existing
// functions to the newer Node.js runtime versions available on AWS Lambda (nodejs4.3
// or nodejs6.10) as soon as possible. You can request a one-time extension
// until June 30, 2017 by going to the Lambda console and following the instructions
// provided. Failure to do so will result in an invalid parameter value error
// being returned. Note that you will have to follow this procedure for each
// region that contains functions written in the Node v0.10.42 runtime.
// provided. Failure to do so will result in an invalid parameter error being
// returned. Note that you will have to follow this procedure for each region
// that contains functions written in the Node v0.10.42 runtime.
Runtime *string `type:"string" enum:"Runtime"`
// The function execution time at which AWS Lambda should terminate the function.
@@ -6482,6 +6531,11 @@ const (
EventSourcePositionAtTimestamp = "AT_TIMESTAMP"
)
const (
// FunctionVersionAll is a FunctionVersion enum value
FunctionVersionAll = "ALL"
)
const (
// InvocationTypeEvent is a InvocationType enum value
InvocationTypeEvent = "Event"

View File

@@ -596,6 +596,8 @@ func ExampleLambda_ListFunctions_shared00() {
fmt.Println(lambda.ErrCodeServiceException, aerr.Error())
case lambda.ErrCodeTooManyRequestsException:
fmt.Println(lambda.ErrCodeTooManyRequestsException, aerr.Error())
case lambda.ErrCodeInvalidParameterValueException:
fmt.Println(lambda.ErrCodeInvalidParameterValueException, aerr.Error())
default:
fmt.Println(aerr.Error())
}

File diff suppressed because it is too large Load Diff

View File

@@ -44,3 +44,21 @@ func defaultInitRequestFn(r *request.Request) {
r.Handlers.Unmarshal.PushFront(copyMultipartStatusOKUnmarhsalError)
}
}
// bucketGetter is an accessor interface to grab the "Bucket" field from
// an S3 type.
type bucketGetter interface {
getBucket() string
}
// sseCustomerKeyGetter is an accessor interface to grab the "SSECustomerKey"
// field from an S3 type.
type sseCustomerKeyGetter interface {
getSSECustomerKey() string
}
// copySourceSSECustomerKeyGetter is an accessor interface to grab the
// "CopySourceSSECustomerKey" field from an S3 type.
type copySourceSSECustomerKeyGetter interface {
getCopySourceSSECustomerKey() string
}

View File

@@ -8,7 +8,6 @@ import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/awsutil"
"github.com/aws/aws-sdk-go/aws/request"
)
@@ -113,15 +112,9 @@ func updateEndpointForAccelerate(r *request.Request) {
// Attempts to retrieve the bucket name from the request input parameters.
// If no bucket is found, or the field is empty "", false will be returned.
func bucketNameFromReqParams(params interface{}) (string, bool) {
b, _ := awsutil.ValuesAtPath(params, "Bucket")
if len(b) == 0 {
return "", false
}
if bucket, ok := b[0].(*string); ok {
if bucketStr := aws.StringValue(bucket); bucketStr != "" {
return bucketStr, true
}
if iface, ok := params.(bucketGetter); ok {
b := iface.getBucket()
return b, len(b) > 0
}
return "", false

View File

@@ -5,17 +5,27 @@ import (
"encoding/base64"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/awsutil"
"github.com/aws/aws-sdk-go/aws/request"
)
var errSSERequiresSSL = awserr.New("ConfigError", "cannot send SSE keys over HTTP.", nil)
func validateSSERequiresSSL(r *request.Request) {
if r.HTTPRequest.URL.Scheme != "https" {
p, _ := awsutil.ValuesAtPath(r.Params, "SSECustomerKey||CopySourceSSECustomerKey")
if len(p) > 0 {
if r.HTTPRequest.URL.Scheme == "https" {
return
}
if iface, ok := r.Params.(sseCustomerKeyGetter); ok {
if len(iface.getSSECustomerKey()) > 0 {
r.Error = errSSERequiresSSL
return
}
}
if iface, ok := r.Params.(copySourceSSECustomerKeyGetter); ok {
if len(iface.getCopySourceSSECustomerKey()) > 0 {
r.Error = errSSERequiresSSL
return
}
}
}

View File

@@ -1 +1 @@
0.1.33
0.1.34

View File

@@ -121,7 +121,7 @@ func NewPatchAppsAppRoutesRouteNotFound() *PatchAppsAppRoutesRouteNotFound {
/*PatchAppsAppRoutesRouteNotFound handles this case with default header values.
App does not exist.
App / Route does not exist.
*/
type PatchAppsAppRoutesRouteNotFound struct {
Payload *models.Error

View File

@@ -4,6 +4,7 @@ package routes
// Editing this file might prove futile when you re-run the swagger generate command
import (
"net/http"
"time"
"golang.org/x/net/context"
@@ -47,6 +48,15 @@ func NewPutAppsAppRoutesRouteParamsWithContext(ctx context.Context) *PutAppsAppR
}
}
// NewPutAppsAppRoutesRouteParamsWithHTTPClient creates a new PutAppsAppRoutesRouteParams object
// with the default values initialized, and the ability to set a custom HTTPClient for a request
func NewPutAppsAppRoutesRouteParamsWithHTTPClient(client *http.Client) *PutAppsAppRoutesRouteParams {
var ()
return &PutAppsAppRoutesRouteParams{
HTTPClient: client,
}
}
/*PutAppsAppRoutesRouteParams contains all the parameters to send to the API endpoint
for the put apps app routes route operation typically these are written to a http.Request
*/
@@ -68,8 +78,9 @@ type PutAppsAppRoutesRouteParams struct {
*/
Route string
timeout time.Duration
Context context.Context
timeout time.Duration
Context context.Context
HTTPClient *http.Client
}
// WithTimeout adds the timeout to the put apps app routes route params
@@ -94,6 +105,17 @@ func (o *PutAppsAppRoutesRouteParams) SetContext(ctx context.Context) {
o.Context = ctx
}
// WithHTTPClient adds the HTTPClient to the put apps app routes route params
func (o *PutAppsAppRoutesRouteParams) WithHTTPClient(client *http.Client) *PutAppsAppRoutesRouteParams {
o.SetHTTPClient(client)
return o
}
// SetHTTPClient adds the HTTPClient to the put apps app routes route params
func (o *PutAppsAppRoutesRouteParams) SetHTTPClient(client *http.Client) {
o.HTTPClient = client
}
// WithApp adds the app to the put apps app routes route params
func (o *PutAppsAppRoutesRouteParams) WithApp(app string) *PutAppsAppRoutesRouteParams {
o.SetApp(app)
@@ -130,7 +152,9 @@ func (o *PutAppsAppRoutesRouteParams) SetRoute(route string) {
// WriteToRequest writes these params to a swagger request
func (o *PutAppsAppRoutesRouteParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
r.SetTimeout(o.timeout)
if err := r.SetTimeout(o.timeout); err != nil {
return err
}
var res []error
// path param app

View File

@@ -23,8 +23,8 @@ type PutAppsAppRoutesRouteReader struct {
func (o *PutAppsAppRoutesRouteReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) {
switch response.Code() {
case 201:
result := NewPutAppsAppRoutesRouteCreated()
case 200:
result := NewPutAppsAppRoutesRouteOK()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
@@ -37,40 +37,36 @@ func (o *PutAppsAppRoutesRouteReader) ReadResponse(response runtime.ClientRespon
}
return nil, result
case 500:
result := NewPutAppsAppRoutesRouteInternalServerError()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return nil, result
default:
result := NewPutAppsAppRoutesRouteDefault(response.Code())
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
if response.Code()/100 == 2 {
return result, nil
}
return nil, result
}
}
// NewPutAppsAppRoutesRouteCreated creates a PutAppsAppRoutesRouteCreated with default headers values
func NewPutAppsAppRoutesRouteCreated() *PutAppsAppRoutesRouteCreated {
return &PutAppsAppRoutesRouteCreated{}
// NewPutAppsAppRoutesRouteOK creates a PutAppsAppRoutesRouteOK with default headers values
func NewPutAppsAppRoutesRouteOK() *PutAppsAppRoutesRouteOK {
return &PutAppsAppRoutesRouteOK{}
}
/*PutAppsAppRoutesRouteCreated handles this case with default header values.
/*PutAppsAppRoutesRouteOK handles this case with default header values.
Route updated
Route created or updated
*/
type PutAppsAppRoutesRouteCreated struct {
type PutAppsAppRoutesRouteOK struct {
Payload *models.RouteWrapper
}
func (o *PutAppsAppRoutesRouteCreated) Error() string {
return fmt.Sprintf("[PUT /apps/{app}/routes/{route}][%d] putAppsAppRoutesRouteCreated %+v", 201, o.Payload)
func (o *PutAppsAppRoutesRouteOK) Error() string {
return fmt.Sprintf("[PUT /apps/{app}/routes/{route}][%d] putAppsAppRoutesRouteOK %+v", 200, o.Payload)
}
func (o *PutAppsAppRoutesRouteCreated) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
func (o *PutAppsAppRoutesRouteOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(models.RouteWrapper)
@@ -89,7 +85,7 @@ func NewPutAppsAppRoutesRouteBadRequest() *PutAppsAppRoutesRouteBadRequest {
/*PutAppsAppRoutesRouteBadRequest handles this case with default header values.
One or more of the routes were invalid due to parameters being missing or invalid.
Invalid route due to parameters being missing or invalid.
*/
type PutAppsAppRoutesRouteBadRequest struct {
Payload *models.Error
@@ -111,35 +107,6 @@ func (o *PutAppsAppRoutesRouteBadRequest) readResponse(response runtime.ClientRe
return nil
}
// NewPutAppsAppRoutesRouteInternalServerError creates a PutAppsAppRoutesRouteInternalServerError with default headers values
func NewPutAppsAppRoutesRouteInternalServerError() *PutAppsAppRoutesRouteInternalServerError {
return &PutAppsAppRoutesRouteInternalServerError{}
}
/*PutAppsAppRoutesRouteInternalServerError handles this case with default header values.
Could not accept routes due to internal error.
*/
type PutAppsAppRoutesRouteInternalServerError struct {
Payload *models.Error
}
func (o *PutAppsAppRoutesRouteInternalServerError) Error() string {
return fmt.Sprintf("[PUT /apps/{app}/routes/{route}][%d] putAppsAppRoutesRouteInternalServerError %+v", 500, o.Payload)
}
func (o *PutAppsAppRoutesRouteInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(models.Error)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}
// NewPutAppsAppRoutesRouteDefault creates a PutAppsAppRoutesRouteDefault with default headers values
func NewPutAppsAppRoutesRouteDefault(code int) *PutAppsAppRoutesRouteDefault {
return &PutAppsAppRoutesRouteDefault{

View File

@@ -113,7 +113,7 @@ func (a *Client) GetAppsAppRoutesRoute(params *GetAppsAppRoutesRouteParams) (*Ge
}
/*
PatchAppsAppRoutesRoute updates a route
PatchAppsAppRoutesRoute updates a route fails if the route or app does not exist accepts partial updates skips validation of zero values
Update a route
*/
@@ -145,7 +145,7 @@ func (a *Client) PatchAppsAppRoutesRoute(params *PatchAppsAppRoutesRouteParams)
/*
PostAppsAppRoutes creates new route
Create a new route in an app, if app doesn't exists, it creates the app
Create a new route in an app, if app doesn't exists, it creates the app. Post does not skip validation of zero values.
*/
func (a *Client) PostAppsAppRoutes(params *PostAppsAppRoutesParams) (*PostAppsAppRoutesOK, error) {
// TODO: Validate the params before sending
@@ -172,6 +172,36 @@ func (a *Client) PostAppsAppRoutes(params *PostAppsAppRoutesParams) (*PostAppsAp
}
/*
PutAppsAppRoutesRoute creates a route if it does not exist update if it does will also create app if it does not exist put does not skip validation of zero values
Update or Create a route
*/
func (a *Client) PutAppsAppRoutesRoute(params *PutAppsAppRoutesRouteParams) (*PutAppsAppRoutesRouteOK, error) {
// TODO: Validate the params before sending
if params == nil {
params = NewPutAppsAppRoutesRouteParams()
}
result, err := a.transport.Submit(&runtime.ClientOperation{
ID: "PutAppsAppRoutesRoute",
Method: "PUT",
PathPattern: "/apps/{app}/routes/{route}",
ProducesMediaTypes: []string{"application/json"},
ConsumesMediaTypes: []string{"application/json"},
Schemes: []string{"http", "https"},
Params: params,
Reader: &PutAppsAppRoutesRouteReader{formats: a.formats},
Context: params.Context,
Client: params.HTTPClient,
})
if err != nil {
return nil, err
}
return result.(*PutAppsAppRoutesRouteOK), nil
}
// SetTransport changes the transport on the client
func (a *Client) SetTransport(transport runtime.ClientTransport) {
a.transport = transport

View File

@@ -38,7 +38,7 @@ Go Resty first released on Sep 15, 2015 then go-resty grew gradually as a very h
* Cookies for your request and CookieJar support
* SRV Record based request instead of Host URL
* Client settings like `Timeout`, `RedirectPolicy`, `Proxy`, `TLSClientConfig`, `Transport`, etc.
* Optionally allows GET request with payload, see [SetAllowGetMethodPayload](https://godoc.org/github.com/go-resty/resty#Client.SetOutputDirectory#Client.SetAllowGetMethodPayload)
* Optionally allows GET request with payload, see [SetAllowGetMethodPayload](https://godoc.org/github.com/go-resty/resty#Client.SetAllowGetMethodPayload)
* resty design
* Have client level settings & options and also override at Request level if you want to
* Request and Response middlewares

View File

@@ -87,6 +87,8 @@ type Client struct {
RetryWaitTime time.Duration
RetryMaxWaitTime time.Duration
RetryConditions []RetryConditionFunc
JSONMarshal func(v interface{}) ([]byte, error)
JSONUnmarshal func(data []byte, v interface{}) error
httpClient *http.Client
transport *http.Transport
@@ -811,6 +813,7 @@ func IsXMLType(ct string) bool {
}
// Unmarshal content into object from JSON or XML
// Deprecated: kept for backward compatibility
func Unmarshal(ct string, b []byte, d interface{}) (err error) {
if IsJSONType(ct) {
err = json.Unmarshal(b, d)
@@ -821,6 +824,17 @@ func Unmarshal(ct string, b []byte, d interface{}) (err error) {
return
}
// Unmarshalc content into object from JSON or XML
func Unmarshalc(c *Client, ct string, b []byte, d interface{}) (err error) {
if IsJSONType(ct) {
err = c.JSONUnmarshal(b, d)
} else if IsXMLType(ct) {
err = xml.Unmarshal(b, d)
}
return
}
func getLogger(w io.Writer) *log.Logger {
return log.New(w, "RESTY ", log.LstdFlags)
}

View File

@@ -6,6 +6,7 @@ package resty
import (
"crypto/tls"
"encoding/json"
"io"
"net/http"
"net/http/cookiejar"
@@ -36,6 +37,8 @@ func New() *Client {
RetryCount: 0,
RetryWaitTime: defaultWaitTime,
RetryMaxWaitTime: defaultMaxWaitTime,
JSONMarshal: json.Marshal,
JSONUnmarshal: json.Unmarshal,
httpClient: &http.Client{Jar: cookieJar},
transport: &http.Transport{},
}

View File

@@ -6,7 +6,6 @@ package resty
import (
"bytes"
"encoding/json"
"encoding/xml"
"errors"
"fmt"
@@ -245,7 +244,7 @@ func parseResponseBody(c *Client, res *Response) (err error) {
// Considered as Result
if res.StatusCode() > 199 && res.StatusCode() < 300 {
if res.Request.Result != nil {
err = Unmarshal(ct, res.body, res.Request.Result)
err = Unmarshalc(c, ct, res.body, res.Request.Result)
return
}
}
@@ -258,7 +257,7 @@ func parseResponseBody(c *Client, res *Response) (err error) {
}
if res.Request.Error != nil {
err = Unmarshal(ct, res.body, res.Request.Error)
err = Unmarshalc(c, ct, res.body, res.Request.Error)
}
}
}
@@ -356,7 +355,7 @@ func handleRequestBody(c *Client, r *Request) (err error) {
bodyBytes = []byte(s)
} else if IsJSONType(contentType) &&
(kind == reflect.Struct || kind == reflect.Map || kind == reflect.Slice) {
bodyBytes, err = json.Marshal(r.Body)
bodyBytes, err = c.JSONMarshal(r.Body)
} else if IsXMLType(contentType) && (kind == reflect.Struct) {
bodyBytes, err = xml.Marshal(r.Body)
}

View File

@@ -1135,6 +1135,23 @@ func TestSRVInvalidService(t *testing.T) {
assertEqual(t, true, strings.Contains(err.Error(), "no such host"))
}
func TestDeprecatedCodeCovergae(t *testing.T) {
var user1 User
err := Unmarshal("application/json",
[]byte(`{"username":"testuser", "password":"testpass"}`), &user1)
assertError(t, err)
assertEqual(t, "testuser", user1.Username)
assertEqual(t, "testpass", user1.Password)
var user2 User
err = Unmarshal("application/xml",
[]byte(`<?xml version="1.0" encoding="UTF-8"?><User><Username>testuser</Username><Password>testpass</Password></User>`),
&user2)
assertError(t, err)
assertEqual(t, "testuser", user1.Username)
assertEqual(t, "testpass", user1.Password)
}
func getTestDataPath() string {
pwd, _ := os.Getwd()
return pwd + "/test-data"