use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.
the class DefaultSigningMethodTest method testSignAnonymously.
private static void testSignAnonymously(AmazonS3Client s3) {
final Request<?> fakeGetObjectRequest = createFakeGetObjectRequest(s3);
final Signer signer = s3.createSigner(fakeGetObjectRequest, FAKE_BUCKET, FAKE_KEY);
signer.sign(fakeGetObjectRequest, new AnonymousAWSCredentials());
}
use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.
the class AmazonWebServiceClient method setSignerRegionOverride.
/**
* An internal method used to explicitly override the internal signer region
* computed by the default implementation. This method is not expected to be
* normally called except for AWS internal development purposes.
* @param signerRegionOverride the signer region override.
*/
@SuppressWarnings("checkstyle:hiddenfield")
public final void setSignerRegionOverride(final String signerRegionOverride) {
final Signer signer = computeSignerByURI(endpoint, signerRegionOverride, true);
synchronized (this) {
this.signer = signer;
this.signerRegionOverride = signerRegionOverride;
}
}
use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.
the class AmazonHttpClientTest method testTemporaryRedirect.
@Test
public void testTemporaryRedirect() throws IOException, URISyntaxException {
HttpResponse redirectResponse = HttpResponse.builder().statusCode(307).header("Location", "https://www.redirect.com").build();
HttpResponse successfulResponse = HttpResponse.builder().statusCode(200).content(null).build();
final Request<?> request = new DefaultRequest<String>(new AmazonWebServiceRequest() {
}, "TestService");
request.setHttpMethod(HttpMethodName.GET);
request.setEndpoint(new URI("https://www.test.com"));
request.setResourcePath("/test/table");
HttpResponseHandler<AmazonWebServiceResponse<String>> responseHandler = new HttpResponseHandler<AmazonWebServiceResponse<String>>() {
@Override
public AmazonWebServiceResponse<String> handle(HttpResponse response) throws Exception {
AmazonWebServiceResponse<String> awsResponse = new AmazonWebServiceResponse<String>();
awsResponse.setResult("Result");
return awsResponse;
}
@Override
public boolean needsConnectionLeftOpen() {
return false;
}
};
ExecutionContext ec = EasyMock.createMock(ExecutionContext.class);
EasyMock.reset(httpClient, ec);
final List<Boolean> signerCalled = new ArrayList<Boolean>();
EasyMock.expect(ec.getAwsRequestMetrics()).andReturn(new AWSRequestMetrics()).anyTimes();
EasyMock.expect(ec.getContextUserAgent()).andReturn("TestUserAgent").anyTimes();
EasyMock.expect(ec.getCredentials()).andReturn(new AnonymousAWSCredentials());
EasyMock.expect(ec.getSignerByURI(EasyMock.anyObject(URI.class))).andReturn(new Signer() {
@Override
public void sign(Request<?> requestToSign, AWSCredentials credentials) {
assertSame(request, requestToSign);
assertTrue(credentials instanceof AnonymousAWSCredentials);
signerCalled.add(true);
}
});
EasyMock.expect(httpClient.execute(EasyMock.<HttpRequest>anyObject())).andReturn(redirectResponse);
Capture<HttpRequest> capture = new Capture<HttpRequest>();
EasyMock.expect(httpClient.execute(EasyMock.capture(capture))).andReturn(successfulResponse);
EasyMock.replay(httpClient, ec);
Response<String> response = client.executeHelper(request, responseHandler, null, ec);
assertEquals(response.getAwsResponse(), "Result");
assertEquals(signerCalled.size(), 2);
assertTrue(signerCalled.get(0));
assertTrue(signerCalled.get(1));
assertEquals(capture.getValue().getUri().toString(), "https://www.redirect.com/");
EasyMock.verify(httpClient, ec);
}
use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.
the class ApiClientFactory method getHandler.
/**
* Gets an invocation handler for the given API.
*
* @param endpoint Request endpoint
* @param apiName API class name
* @return an invocation handler
*/
@SuppressWarnings("checkstyle:hiddenfield")
ApiClientHandler getHandler(String endpoint, String apiName) {
final Signer signer = provider == null ? null : getSigner(getRegion(endpoint));
// Ensure we always pass a configuration to the handler
final ClientConfiguration configuration = (clientConfiguration == null) ? new ClientConfiguration() : clientConfiguration;
return new ApiClientHandler(endpoint, apiName, signer, provider, apiKey, configuration);
}
use of com.amazonaws.auth.Signer in project aws-sdk-android by aws-amplify.
the class AmazonWebServiceClient method computeSignerByServiceRegion.
/**
* Returns the signer for the given service name, region id, and the current
* client configuration.
* <p>
* Note, however, the signer returned for S3 is incomplete at this stage as
* the information on the S3 bucket and key is not yet known.
*
* @param regionId the region for sending AWS requests
* @param signerRegionOverride the overriding signer region; or null if
* there is none.
* @param isRegionIdAsSignerParam true if the "regionId" is used to
* configure the signer if applicable; false if this method is
* called for the purpose of purely setting the communication end
* point of this AWS client, and therefore the "regionId"
* parameter will not be used directly for configuring the
* signer.
*/
@SuppressWarnings("checkstyle:hiddenfield")
private Signer computeSignerByServiceRegion(final String serviceName, final String regionId, final String signerRegionOverride, final boolean isRegionIdAsSignerParam) {
final String signerType = clientConfiguration.getSignerOverride();
final Signer signer = signerType == null ? SignerFactory.getSigner(serviceName, regionId) : SignerFactory.getSignerByTypeAndService(signerType, serviceName);
if (signer instanceof RegionAwareSigner) {
// Overrides the default region computed
final RegionAwareSigner regionAwareSigner = (RegionAwareSigner) signer;
// when used in the external release
if (signerRegionOverride != null) {
regionAwareSigner.setRegionName(signerRegionOverride);
} else if (regionId != null && isRegionIdAsSignerParam) {
regionAwareSigner.setRegionName(regionId);
}
}
synchronized (this) {
this.region = Region.getRegion(regionId);
}
return signer;
}
Aggregations