Created
May 31, 2017 01:14
-
-
Save yogi87/7af2a38abce0708312424569c60e9bc5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var assert = require('assert'); | |
//Define your authentication credentials | |
//get + format date | |
function timestamper(daysToAdd) { | |
var someDate = new Date(); | |
var numberOfDaysToAdd = 5; | |
someDate.setDate(someDate.getDate() + daysToAdd); | |
var dd = someDate.getDate(); | |
var mm = someDate.getMonth(); | |
var y = someDate.getFullYear(); | |
var someFormattedDate = mm + '/'+ dd + '/'+ y; | |
return someFormattedDate; | |
} | |
//pick random hotelId | |
function hotelIdPicker(){ | |
hotelList = ['214891','484128','273392','108544','114031','200211','343224','109376','123169','134798','112998','118903','204099','127095','195070','111533','111539','188383','121736','211839','207827','233004','438712','211839','200008','204436','194433','194433','170309','262645','189857','333753','189758','506248','129633','217666','267854','152454','152454','205296','130795','325177','170049','207521','216008','117575','211641','311927','211778','375547','106033','225849','379883','116232','141159','380859']; | |
var rand = hotelList[Math.floor(Math.random() * hotelList.length)]; | |
return rand | |
} | |
function md5(apiKey, secret) { | |
var unixTimestamp = Math.round(+new Date()/1000); | |
var MD5 = function(s){function L(k,d){return(k<<d)|(k>>>(32-d))}function K(G,k){var I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H)}if(I|d){if(x&1073741824){return(x^3221225472^F^H)}else{return(x^1073741824^F^H)}}else{return(x^F^H)}}function r(d,F,k){return(d&F)|((~d)&k)}function q(d,F,k){return(d&k)|(F&(~k))}function p(d,F,k){return(d^F^k)}function n(d,F,k){return(F^(d|(~k)))}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F)}function e(G){var Z;var F=G.length;var x=F+8;var k=(x-(x%64))/64;var I=(k+1)*16;var aa=Array(I-1);var d=0;var H=0;while(H<F){Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=(aa[Z]| (G.charCodeAt(H)<<d));H++}Z=(H-(H%4))/4;d=(H%4)*8;aa[Z]=aa[Z]|(128<<d);aa[I-2]=F<<3;aa[I-1]=F>>>29;return aa}function B(x){var k="",F="",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F="0"+G.toString(16);k=k+F.substr(F.length-2,2)}return k}function J(k){k=k.replace(/rn/g,"n");var d="";for(var F=0;F<k.length;F++){var x=k.charCodeAt(F);if(x<128){d+=String.fromCharCode(x)}else{if((x>127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128)}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128)}}}return d}var C=Array();var P,h,E,v,g,Y,X,W,V;var S=7,Q=12,N=17,M=22;var A=5,z=9,y=14,w=20;var o=4,m=11,l=16,j=23;var U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P<C.length;P+=16){h=Y;E=X;v=W;g=V;Y=u(Y,X,W,V,C[P+0],S,3614090360);V=u(V,Y,X,W,C[P+1],Q,3905402710);W=u(W,V,Y,X,C[P+2],N,606105819);X=u(X,W,V,Y,C[P+3],M,3250441966);Y=u(Y,X,W,V,C[P+4],S,4118548399);V=u(V,Y,X,W,C[P+5],Q,1200080426);W=u(W,V,Y,X,C[P+6],N,2821735955);X=u(X,W,V,Y,C[P+7],M,4249261313);Y=u(Y,X,W,V,C[P+8],S,1770035416);V=u(V,Y,X,W,C[P+9],Q,2336552879);W=u(W,V,Y,X,C[P+10],N,4294925233);X=u(X,W,V,Y,C[P+11],M,2304563134);Y=u(Y,X,W,V,C[P+12],S,1804603682);V=u(V,Y,X,W,C[P+13],Q,4254626195);W=u(W,V,Y,X,C[P+14],N,2792965006);X=u(X,W,V,Y,C[P+15],M,1236535329);Y=f(Y,X,W,V,C[P+1],A,4129170786);V=f(V,Y,X,W,C[P+6],z,3225465664);W=f(W,V,Y,X,C[P+11],y,643717713);X=f(X,W,V,Y,C[P+0],w,3921069994);Y=f(Y,X,W,V,C[P+5],A,3593408605);V=f(V,Y,X,W,C[P+10],z,38016083);W=f(W,V,Y,X,C[P+15],y,3634488961);X=f(X,W,V,Y,C[P+4],w,3889429448);Y=f(Y,X,W,V,C[P+9],A,568446438);V=f(V,Y,X,W,C[P+14],z,3275163606);W=f(W,V,Y,X,C[P+3],y,4107603335);X=f(X,W,V,Y,C[P+8],w,1163531501);Y=f(Y,X,W,V,C[P+13],A,2850285829);V=f(V,Y,X,W,C[P+2],z,4243563512);W=f(W,V,Y,X,C[P+7],y,1735328473);X=f(X,W,V,Y,C[P+12],w,2368359562);Y=D(Y,X,W,V,C[P+5],o,4294588738);V=D(V,Y,X,W,C[P+8],m,2272392833);W=D(W,V,Y,X,C[P+11],l,1839030562);X=D(X,W,V,Y,C[P+14],j,4259657740);Y=D(Y,X,W,V,C[P+1],o,2763975236);V=D(V,Y,X,W,C[P+4],m,1272893353);W=D(W,V,Y,X,C[P+7],l,4139469664);X=D(X,W,V,Y,C[P+10],j,3200236656);Y=D(Y,X,W,V,C[P+13],o,681279174);V=D(V,Y,X,W,C[P+0],m,3936430074);W=D(W,V,Y,X,C[P+3],l,3572445317);X=D(X,W,V,Y,C[P+6],j,76029189);Y=D(Y,X,W,V,C[P+9],o,3654602809);V=D(V,Y,X,W,C[P+12],m,3873151461);W=D(W,V,Y,X,C[P+15],l,530742520);X=D(X,W,V,Y,C[P+2],j,3299628645);Y=t(Y,X,W,V,C[P+0],U,4096336452);V=t(V,Y,X,W,C[P+7],T,1126891415);W=t(W,V,Y,X,C[P+14],R,2878612391);X=t(X,W,V,Y,C[P+5],O,4237533241);Y=t(Y,X,W,V,C[P+12],U,1700485571);V=t(V,Y,X,W,C[P+3],T,2399980690);W=t(W,V,Y,X,C[P+10],R,4293915773);X=t(X,W,V,Y,C[P+1],O,2240044497);Y=t(Y,X,W,V,C[P+8],U,1873313359);V=t(V,Y,X,W,C[P+15],T,4264355552);W=t(W,V,Y,X,C[P+6],R,2734768916);X=t(X,W,V,Y,C[P+13],O,1309151649);Y=t(Y,X,W,V,C[P+4],U,4149444226);V=t(V,Y,X,W,C[P+11],T,3174756917);W=t(W,V,Y,X,C[P+2],R,718787259);X=t(X,W,V,Y,C[P+9],O,3951481745);Y=K(Y,h);X=K(X,E);W=K(W,v);V=K(V,g)}var i=B(Y)+B(X)+B(W)+B(V);return i.toLowerCase()}; | |
var result = (MD5(apiKey + secret + unixTimestamp)); | |
return result | |
} | |
var baseUrl = 'http://api.ean.com/ean-services/rs/hotel/v3/list?' | |
var secret = "kuV44abB" | |
var arrivalDate = timestamper(35) | |
var departureDate = timestamper(37) | |
var hotelId = hotelIdPicker() | |
var cid = '442466' | |
var minorRev = '30' | |
var apiKey = "dp9ptprhn2h9n49xjf95wg24" | |
var customerIpAddress = '76.183.223.2' | |
var currencyCode = 'USD' | |
var locale = 'en_US' | |
var _type = 'json' | |
var customerUserAgent = 'Synthetics' | |
var customerSessionId = "2839892489793" | |
var xml = "<HotelListRequest><numberOfResults>3</numberOfResults><supplierType>E</supplierType><arrivalDate>"+ arrivalDate + "</arrivalDate><departureDate>" + departureDate +"</departureDate><RoomGroup><Room><numberOfAdults>2</numberOfAdults></Room></RoomGroup><destinationString>New%20York%20NY</destinationString><includeHotelFeeBreakdown>true</includeHotelFeeBreakdown><includeDetails>true</includeDetails><rateType></rateType></HotelListRequest>" | |
var sig = md5(apiKey, secret) | |
var url = baseUrl + "cid=" + cid + "&apiKey=" + apiKey + "&sig=" + sig + "&minorRev=" + minorRev + "&customerUserAgent=" + customerUserAgent + "&customerIpAddress=" + customerIpAddress + "¤cyCode=" + currencyCode + "&locale=" + locale + "&_type=" + _type + "&hotelId=" + hotelId + "&customerSessionId=" + customerSessionId + "&xml=" + xml | |
var options = { | |
//Define endpoint URI | |
uri: url, | |
//Define query key and expected data type. | |
headers: { | |
'Accept': 'application/json' | |
} | |
}; | |
//Define expected results using callback function. | |
function callback (err, response, body){ | |
//Log JSON results from endpoint to Synthetics console. | |
//console.log(JSON.parse(body)); | |
var hotelListResponse = JSON.parse(body)["HotelListResponse"] | |
console.log("Making sure hotelListResponse is available.") | |
assert(hotelListResponse != null) | |
console.log('done with script'); | |
} | |
//Make GET request, passing in options and callback. | |
$http.get(options,callback); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment