forked from aws/aws-sdk-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSignableRequest.java
More file actions
146 lines (130 loc) · 4.49 KB
/
SignableRequest.java
File metadata and controls
146 lines (130 loc) · 4.49 KB
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
/*
* Copyright 2015-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws;
import com.amazonaws.http.HttpMethodName;
import java.io.InputStream;
import java.net.URI;
import java.util.List;
import java.util.Map;
/**
* Represents a sign-able request being sent to an Amazon Web Service, including the
* parameters being sent as part of the request, the endpoint to which the
* request should be sent, etc.
* <p>
* This class is only intended for internal use inside the AWS client libraries.
* Callers shouldn't ever interact directly with objects of this class.
*
* @param <T>
* The type of original, user facing request represented by this
* request.
*/
public interface SignableRequest<T> {
/**
* Sets the specified header for this request.
*
* @param name
* The name of the header to set.
* @param value
* The header's value.
*/
void addHeader(String name, String value);
/**
* Returns a map of all the headers included in this request.
*
* @return A map of all the headers included in this request.
*/
Map<String, String> getHeaders();
/**
* Returns the path to the resource being requested.
*
* @return The path to the resource being requested.
*/
String getResourcePath();
/**
* Adds the specified request parameter to this request.
*
* @param name
* The name of the request parameter.
* @param value
* The value of the request parameter.
*/
void addParameter(String name, String value);
/**
* Returns a map of all parameters in this request.
*
* @return A map of all parameters in this request.
*/
Map<String, List<String>> getParameters();
/**
* Returns the service endpoint (ex: "https://ec2.amazonaws.com") to which
* this request should be sent.
*
* @return The service endpoint to which this request should be sent.
*/
URI getEndpoint();
/**
* Returns the HTTP method (GET, POST, etc) to use when sending this
* request.
*
* @return The HTTP method to use when sending this request.
*/
HttpMethodName getHttpMethod();
/**
* Returns the optional value for time offset for this request. This
* will be used by the signer to adjust for potential clock skew.
* Value is in seconds, positive values imply the current clock is "fast",
* negative values imply clock is slow.
*
* @return The optional value for time offset (in seconds) for this request.
*/
int getTimeOffset();
/**
* Returns the optional stream containing the payload data to include for
* this request. Not all requests will contain payload data.
*
* @return The optional stream containing the payload data to include for
* this request.
*/
InputStream getContent();
/**
* Returns the optional raw stream containing the payload data to include
* for this request, with all progress stream wrappers. Not all requests
* contain payload data.
*
* @return The optional raw stream containing the payload data to include
* for this request, with all progress stream wrappers removed.
*/
InputStream getContentUnwrapped();
/**
* Returns the read limit info about the original request.
*/
ReadLimitInfo getReadLimitInfo();
/**
* Returns the original, user facing request object which this internal
* request object is representing.
*
* @return an instance of request as an <code>Object</code>.
*/
Object getOriginalRequestObject();
/**
* Sets the optional stream containing the payload data to include for this
* request. This is used, for example, for S3 chunk encoding.
*
* @param content
* The optional stream containing the payload data to include for
* this request.
*/
void setContent(InputStream content);
}