private CreatePlatformEndpointResult createPlatformEndpoint( Platform platform, String customData, String platformToken, String applicationArn) { CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest(); platformEndpointRequest.setCustomUserData(customData); String token = platformToken; String userId = null; if (platform == Platform.BAIDU) { String[] tokenBits = platformToken.split("\\|"); token = tokenBits[0]; userId = tokenBits[1]; Map<String, String> endpointAttributes = new HashMap<String, String>(); endpointAttributes.put("UserId", userId); endpointAttributes.put("ChannelId", token); platformEndpointRequest.setAttributes(endpointAttributes); } platformEndpointRequest.setToken(token); platformEndpointRequest.setPlatformApplicationArn(applicationArn); return snsClient.createPlatformEndpoint(platformEndpointRequest); }
@Test @Ignore public void testActions() throws InterruptedException { String topicArn = TopicIntegrationTest.getOrCreateTopic().getArn(); // setAttributes application.setAttributes(new SetPlatformApplicationAttributesRequest() .addAttributesEntry("EventEndpointCreated", topicArn) .addAttributesEntry("EventEndpointDeleted", topicArn) .addAttributesEntry("EventEndpointUpdated", topicArn) ); refreshApplication(); Assert.assertEquals(topicArn, application.getAttributes().get("EventEndpointCreated")); Assert.assertEquals(topicArn, application.getAttributes().get("EventEndpointDeleted")); Assert.assertEquals(topicArn, application.getAttributes().get("EventEndpointUpdated")); // createPlatformEndpoint application.createPlatformEndpoint(new CreatePlatformEndpointRequest() .withToken(GCM_DEVICE_TOKEN) .withCustomUserData("My custom user data") ); }
public String createPlatformArn(AmazonSNS snsClient, String platformApplicationArn, String token, User user) { CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest(); platformEndpointRequest.setPlatformApplicationArn(platformApplicationArn); platformEndpointRequest.setToken(token); String customUserData = getCustomUserData(user); platformEndpointRequest.setCustomUserData(customUserData); CreatePlatformEndpointResult platformEndpointResult = snsClient.createPlatformEndpoint(platformEndpointRequest); return platformEndpointResult.getEndpointArn(); }
@Override public PlatformEndpoint createPlatformEndpoint(CreatePlatformEndpointRequest request, ResultCapture<CreatePlatformEndpointResult> extractor) { ActionResult result = resource.performAction("CreatePlatformEndpoint", request, extractor); if (result == null) return null; return new PlatformEndpointImpl(result.getResource()); }
@Test public void testARNAndTokenConstructor() throws Exception { CreatePlatformEndpointRequest r = new CreatePlatformEndpointRequestBuilder(new ApplicationArn("a1"), "t1") .getRequest(); assertEquals("a1", r.getPlatformApplicationArn()); assertEquals("t1", r.getToken()); }
@Test public void testPlatformApplicationArn() throws Exception { CreatePlatformEndpointRequest r = new CreatePlatformEndpointRequestBuilder(new ApplicationArn("a1"), "t1") .platformApplicationArn(new ApplicationArn("a2")) .getRequest(); assertEquals("a2", r.getPlatformApplicationArn()); }
@Test public void testToken() throws Exception { CreatePlatformEndpointRequest r = new CreatePlatformEndpointRequestBuilder(new ApplicationArn("a1"), "t1") .token("t2") .getRequest(); assertEquals("t2", r.getToken()); }
@Test public void testCustomUserData() throws Exception { CreatePlatformEndpointRequest r = new CreatePlatformEndpointRequestBuilder(new ApplicationArn("a1"), "t1") .customUserData("c1") .getRequest(); assertEquals("c1", r.getCustomUserData()); }
@Test public void testAttribute() throws Exception { CreatePlatformEndpointRequest r = new CreatePlatformEndpointRequestBuilder(new ApplicationArn("a1"), "t1") .attribute("ak1", "av1") .getRequest(); assertEquals("av1", r.getAttributes().get("ak1")); }
@Test public void testGetRequest() throws Exception { CreatePlatformEndpointRequest r = new CreatePlatformEndpointRequestBuilder(new ApplicationArn("a1"), "t1") .attribute("ak1", "av1") .customUserData("c1") .platformApplicationArn(new ApplicationArn("a2")) .token("t2") .getRequest(); assertEquals("av1", r.getAttributes().get("ak1")); assertEquals("a2", r.getPlatformApplicationArn()); assertEquals("c1", r.getCustomUserData()); assertEquals("t2", r.getToken()); }
private CreatePlatformEndpointResult createPlatformEndpoint( String customData, String platformToken, String applicationArn) { CreatePlatformEndpointRequest platformEndpointRequest = new CreatePlatformEndpointRequest(); platformEndpointRequest.setCustomUserData(customData); platformEndpointRequest.setToken(platformToken); platformEndpointRequest.setPlatformApplicationArn(applicationArn); return snsClient.createPlatformEndpoint(platformEndpointRequest); }
@Test public void testNonInjectableMocks_shouldReturnNormal() { mockSns(new MockParameters()); CheckIfPhoneNumberIsOptedOutRequest phoneRequest = new CheckIfPhoneNumberIsOptedOutRequest() .withPhoneNumber("555123456"); CheckIfPhoneNumberIsOptedOutResult phoneResult = sns.checkIfPhoneNumberIsOptedOut(phoneRequest); assertNotNull(phoneResult); CreatePlatformApplicationRequest createPlatformRequest = new CreatePlatformApplicationRequest() .withAttributes(ImmutableMap.of("os","oreo")) .withName("android").withPlatform("mobile"); assertNotNull(sns.createPlatformApplication(createPlatformRequest)); CreatePlatformEndpointRequest createPlatformEndpointReq = new CreatePlatformEndpointRequest() .withAttributes(ImmutableMap.of("os","lollypop")) .withCustomUserData("something custom") .withPlatformApplicationArn("mobile") .withToken("5-euro-token"); assertNotNull(sns.createPlatformEndpoint(createPlatformEndpointReq)); DeleteEndpointRequest deleteEndpointReq = new DeleteEndpointRequest() .withEndpointArn("arn:aws:sms:us-east-1:123456789012:myc:02034b43-fefa-4e07-a5e"); assertNotNull(sns.deleteEndpoint(deleteEndpointReq)); DeletePlatformApplicationRequest delPlatformAppReq = new DeletePlatformApplicationRequest() .withPlatformApplicationArn("arn:aws:sms:us-east-1:123456789012:myc:02034b43-fefa-4e07-a5e"); assertNotNull(sns.deletePlatformApplication(delPlatformAppReq)); GetEndpointAttributesRequest getEndpointAttr = new GetEndpointAttributesRequest(); assertNotNull(sns.getEndpointAttributes(getEndpointAttr)); assertNotNull(sns.getPlatformApplicationAttributes( new GetPlatformApplicationAttributesRequest().withPlatformApplicationArn("some-arn"))); assertNotNull(sns.getSMSAttributes(new GetSMSAttributesRequest().withAttributes("attr1","attr2"))); assertNotNull(sns.listEndpointsByPlatformApplication(new ListEndpointsByPlatformApplicationRequest() .withNextToken("0-euro-token").withPlatformApplicationArn("cheap-arn"))); assertNotNull(sns.listPhoneNumbersOptedOut(new ListPhoneNumbersOptedOutRequest().withNextToken("plastic-token"))); assertNotNull(sns.listPlatformApplications(new ListPlatformApplicationsRequest().withNextToken("wooden-token"))); assertNotNull(sns.listPlatformApplications()); assertNotNull(sns.optInPhoneNumber(new OptInPhoneNumberRequest().withPhoneNumber("123456789"))); assertNotNull(sns.setEndpointAttributes(new SetEndpointAttributesRequest().withEndpointArn("at the end of the world") .withAttributes(ImmutableMap.of("some-prop","some-value")))); assertNotNull(sns.setPlatformApplicationAttributes(new SetPlatformApplicationAttributesRequest().withPlatformApplicationArn("arnn:::") .withAttributes(ImmutableMap.of("super","mario")))); assertNotNull(sns.setSMSAttributes(new SetSMSAttributesRequest().withAttributes(ImmutableMap.of("wtf","mfg")))); assertNotNull(sns.removePermission(new RemovePermissionRequest().withLabel("fashion label").withTopicArn("fancy topic"))); }
String createApplicationEndpoint(String backendId, String appId, PushService service, String token) { Optional<PlatformApplication> application = getApplication(appId, service); if (!application.isPresent()) throw Exceptions.illegalArgument(// "push service [%s] of mobile application [%s] not registered in AWS", // appId, service); String applicationArn = application.get().getPlatformApplicationArn(); String endpointArn = null; try { endpointArn = getSnsClient() .createPlatformEndpoint(// new CreatePlatformEndpointRequest()// .withPlatformApplicationArn(applicationArn)// .withToken(token))// .getEndpointArn(); } catch (InvalidParameterException e) { String message = e.getErrorMessage(); Utils.info("Exception message: %s", message); Pattern p = Pattern.compile(".*Endpoint (arn:aws:sns[^ ]+) already exists " + "with the same token.*"); Matcher m = p.matcher(message); if (m.matches()) { // The platform endpoint already exists for this token, but with // additional custom data that // createEndpoint doesn't want to overwrite. Just use the // existing platform endpoint. endpointArn = m.group(1); } else { throw e; } } if (endpointArn == null) throw new RuntimeException("failed to create device notification endpoint: try again later"); boolean updateNeeded = false; try { GetEndpointAttributesResult endpointAttributes = getSnsClient() .getEndpointAttributes(new GetEndpointAttributesRequest().withEndpointArn(endpointArn)); updateNeeded = !endpointAttributes.getAttributes().get("Token").equals(token) || !endpointAttributes.getAttributes().get("Enabled").equalsIgnoreCase("true"); } catch (NotFoundException nfe) { // We had a stored ARN, but the platform endpoint associated with it // disappeared. Recreate it. endpointArn = null; } if (endpointArn == null) throw new RuntimeException("failed to create device notification endpoint: try again later"); if (updateNeeded) { // The platform endpoint is out of sync with the current data; // update the token and enable it. Map<String, String> attribs = new HashMap<>(); attribs.put("Token", token); attribs.put("Enabled", "true"); getSnsClient().setEndpointAttributes(// new SetEndpointAttributesRequest()// .withEndpointArn(endpointArn)// .withAttributes(attribs)); } return endpointArn; }
String createApplicationEndpoint(String backendId, String appId, PushServices service, String token) { PlatformApplication application = getApplication(backendId, appId, service)// .orElseThrow(// () -> Exceptions.illegalArgument(// "push service [%s] not registered for mobile application [%s]", // appId, service)); String endpointArn = null; String applicationArn = application.getPlatformApplicationArn(); try { endpointArn = getSnsClient() .createPlatformEndpoint(// new CreatePlatformEndpointRequest()// .withPlatformApplicationArn(applicationArn)// .withToken(token))// .getEndpointArn(); } catch (InvalidParameterException e) { String message = e.getErrorMessage(); Utils.info("Exception message: %s", message); Pattern p = Pattern.compile(".*Endpoint (arn:aws:sns[^ ]+) already exists " + "with the same token.*"); Matcher m = p.matcher(message); if (m.matches()) { // The platform endpoint already exists for this token, but with // additional custom data that // createEndpoint doesn't want to overwrite. Just use the // existing platform endpoint. endpointArn = m.group(1); } else { throw e; } } if (endpointArn == null) throw new RuntimeException("failed to create device notification endpoint: try again later"); boolean updateNeeded = false; try { GetEndpointAttributesResult endpointAttributes = getSnsClient() .getEndpointAttributes(new GetEndpointAttributesRequest().withEndpointArn(endpointArn)); updateNeeded = !endpointAttributes.getAttributes().get("Token").equals(token) || !endpointAttributes.getAttributes().get("Enabled").equalsIgnoreCase("true"); } catch (NotFoundException nfe) { // We had a stored ARN, but the platform endpoint associated with it // disappeared. Recreate it. endpointArn = null; } if (endpointArn == null) throw new RuntimeException("failed to create device notification endpoint: try again later"); if (updateNeeded) { // The platform endpoint is out of sync with the current data; // update the token and enable it. Map<String, String> attribs = new HashMap<String, String>(); attribs.put("Token", token); attribs.put("Enabled", "true"); getSnsClient().setEndpointAttributes(// new SetEndpointAttributesRequest()// .withEndpointArn(endpointArn)// .withAttributes(attribs)); } return endpointArn; }
@Override public PlatformEndpoint createPlatformEndpoint(CreatePlatformEndpointRequest request) { return createPlatformEndpoint(request, null); }
public CreatePlatformEndpointRequest getRequest() { return request; }
/** * Performs the <code>CreatePlatformEndpoint</code> action. * * <p> * The following request parameters will be populated from the data of this * <code>PlatformApplication</code> resource, and any conflicting parameter * value set in the request will be overridden: * <ul> * <li> * <b><code>PlatformApplicationArn</code></b> * - mapped from the <code>Arn</code> identifier. * </li> * </ul> * * <p> * * @return The <code>PlatformEndpoint</code> resource object associated with * the result of this action. * @see CreatePlatformEndpointRequest */ PlatformEndpoint createPlatformEndpoint(CreatePlatformEndpointRequest request);
/** * Performs the <code>CreatePlatformEndpoint</code> action and use a * ResultCapture to retrieve the low-level client response. * * <p> * The following request parameters will be populated from the data of this * <code>PlatformApplication</code> resource, and any conflicting parameter * value set in the request will be overridden: * <ul> * <li> * <b><code>PlatformApplicationArn</code></b> * - mapped from the <code>Arn</code> identifier. * </li> * </ul> * * <p> * * @return The <code>PlatformEndpoint</code> resource object associated with * the result of this action. * @see CreatePlatformEndpointRequest */ PlatformEndpoint createPlatformEndpoint(CreatePlatformEndpointRequest request, ResultCapture<CreatePlatformEndpointResult> extractor);
/** * Create an Endpoint. This corresponds to an app on a device. Use {@link CreatePlatformEndpointRequestBuilder}. * * @param request * @return The endpoint Arn */ public EndpointArn createEndpoint(CreatePlatformEndpointRequest request);