Skip to content

Commit

Permalink
Updated README file. Updated index.html.
Browse files Browse the repository at this point in the history
New nodeJS based server script to test amazon ADM push notification services.
  • Loading branch information
Archana Naik committed May 13, 2014
1 parent ecb94e6 commit 7814be0
Show file tree
Hide file tree
Showing 5 changed files with 473 additions and 710 deletions.
40 changes: 0 additions & 40 deletions Example/server/PushADM_README.txt

This file was deleted.

158 changes: 158 additions & 0 deletions Example/server/pushADM.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@



// Client ID and Client Secret received from ADM
// For more info, see: https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/02-obtaining-adm-credentials
var CLIENT_ID = "amzn1.application-oa2-client.8e838f6629554e26ae3f43a6c663cd60";
var CLIENT_SECRET = "0af96083320f5d70dc4f358cc783ac65a22e78b297ba257df34d5f723f24543f";

// Registration ID, received on device after it registers with ADM server
var REGISTRATION_IDS = ["amzn1.adm-registration.v2.Y29tLmFtYXpvbi5EZXZpY2VNZXNzYWdpbmcuUmVnaXN0cmF0aW9uSWRFbmNyeXB0aW9uS2V5ITEhOE9rZ2h5TXlhVEFFczg2ejNWL3JMcmhTa255Uk5BclhBbE1XMFZzcnU1aFF6cTlvdU5FbVEwclZmdk5oTFBVRXVDN1luQlRSNnRVRUViREdQSlBvSzRNaXVRRUlyUy9NYWZCYS9VWTJUaGZwb3ZVTHhlRTM0MGhvampBK01hVktsMEhxakdmQStOSXRjUXBTQUhNU1NlVVVUVkFreVRhRTBCYktaQ2ZkUFdqSmIwcHgzRDhMQnllVXdxQ2EwdHNXRmFVNklYL0U4UXovcHg0K3Jjb25VbVFLRUVVOFVabnh4RDhjYmtIcHd1ZThiekorbGtzR2taMG95cC92Y3NtZytrcTRPNjhXUUpiZEk3QzFvQThBRTFWWXM2NHkyMjdYVGV5RlhhMWNHS0k9IW5GNEJMSXNleC9xbWpHSU52NnczY0E9PQ"];

// Message payload to be sent to client
var payload = {
data: {
message: "PushPlugin works!!",
sound: "beep.wav",
url: "http://www.amazon.com",
timeStamp: new Date().toISOString(),
foo: "baz"
},
consolidationKey: "my app",
expiresAfter: 3600
};


//*********************************


var https = require("https");
var querystring = require("querystring");


if(CLIENT_ID == "" || CLIENT_SECRET == "" || REGISTRATION_IDS.length == 0){
console.log("******************\nSetup Error: \nYou need to edit the pushADM.js file and enter your ADM credentials and device registration ID(s).\n******************");
process.exit(1);
}


// Get access token from server, and use it to post message to device
getAccessToken(function(accessToken){

for(var i = 0; i < REGISTRATION_IDS.length; i++){

var registrationID = REGISTRATION_IDS[i];

postMessage(accessToken, registrationID, payload);
}

});




// Query OAuth server for access token
// For more info, see: https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/05-requesting-an-access-token

function getAccessToken(callback){

console.log("Requesting access token from server...");

var credentials = {
scope: "messaging:push",
grant_type: "client_credentials",
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET
}

var post_data = querystring.stringify(credentials);

var post_options = {
host: "api.amazon.com",
port: "443",
path: "/auth/O2/token",
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
}
};

var req = https.request(post_options, function(res) {

var data = "";

res.on("data", function (chunk) {
data += chunk;
});

res.on("end", function() {
console.log("\nAccess token response:", data);
var accessToken = JSON.parse(data).access_token;
callback(accessToken);
});

});

req.on("error", function(e) {
console.log("\nProblem with access token request: ", e.message);
});

req.write(post_data);
req.end();

}


// Post message payload to ADM server
// For more info, see: https://developer.amazon.com/public/apis/engage/device-messaging/tech-docs/06-sending-a-message

function postMessage(accessToken, registrationID, payload){

if(accessToken == undefined || registrationID == undefined || payload == undefined){
return;
}

console.log("\nSending message...");

var post_data = JSON.stringify(payload);

var api_path = "/messaging/registrations/" + registrationID + "/messages";

var post_options = {
host: "api.amazon.com",
port: "443",
path: api_path,
method: "POST",
headers: {
"Authorization": "Bearer " + accessToken,
"X-Amzn-Type-Version": "com.amazon.device.messaging.ADMMessage@1.0",
"X-Amzn-Accept-Type" : "com.amazon.device.messaging.ADMSendResult@1.0",
"Content-Type": "application/json",
"Accept": "application/json",
}
};

var req = https.request(post_options, function(res) {

var data = "";

res.on("data", function (chunk) {
data += chunk;
});

res.on("end", function() {
console.log("\nSend message response: ", data);
});

});

req.on("error", function(e) {
console.log("\nProblem with send message request: ", e.message);
});

req.write(post_data);
req.end();

}


Loading

0 comments on commit 7814be0

Please sign in to comment.