Permalink
Browse files

Hotwire API Example

Hotel Deals API - enter in a ZIP code, and wham-o, a list of the best
hotel deals around you.
  • Loading branch information...
1 parent 531f104 commit ffd872d0f97aa81d5619018bacbd8bf33970a1e0 @mansilladev mansilladev committed Dec 9, 2011
Showing with 2,694 additions and 0 deletions.
  1. +92 −0 mashery.hotwire/3.4.0/Readme.md
  2. +186 −0 mashery.hotwire/3.4.0/_appMobi/xhr.js
  3. +860 −0 mashery.hotwire/3.4.0/aUX_ui.css
  4. +50 −0 mashery.hotwire/3.4.0/aUX_ui.min.js
  5. +55 −0 mashery.hotwire/3.4.0/aUX_web.all.min.js
  6. +76 −0 mashery.hotwire/3.4.0/hotwire.js
  7. BIN mashery.hotwire/3.4.0/images/ajax-loader.png
  8. BIN mashery.hotwire/3.4.0/images/background.jpg
  9. BIN mashery.hotwire/3.4.0/images/food.png
  10. BIN mashery.hotwire/3.4.0/images/greenspace.png
  11. BIN mashery.hotwire/3.4.0/images/hotwire.png
  12. BIN mashery.hotwire/3.4.0/images/hwarrow.png
  13. BIN mashery.hotwire/3.4.0/images/icons-18-white.png
  14. BIN mashery.hotwire/3.4.0/images/listArrow.png
  15. BIN mashery.hotwire/3.4.0/images/listArrowSel.png
  16. BIN mashery.hotwire/3.4.0/images/listGroup.png
  17. BIN mashery.hotwire/3.4.0/images/lodging.png
  18. BIN mashery.hotwire/3.4.0/images/masherymade.png
  19. BIN mashery.hotwire/3.4.0/images/paw.png
  20. BIN mashery.hotwire/3.4.0/images/project_icon.png
  21. BIN mashery.hotwire/3.4.0/images/refresh.png
  22. BIN mashery.hotwire/3.4.0/images/vet.png
  23. +84 −0 mashery.hotwire/3.4.0/index.html
  24. +89 −0 mashery.hotwire/3.4.0/style.css
  25. +338 −0 mashery.hotwire/3.4.0/web/aUX_webCarousel.js
  26. +103 −0 mashery.hotwire/3.4.0/web/aUX_webCss3animate.js
  27. +111 −0 mashery.hotwire/3.4.0/web/aUX_webPasswordBox.js
  28. +439 −0 mashery.hotwire/3.4.0/web/aUX_webScroll.js
  29. +1 −0 mashery.hotwire/3.4.0/web/aUX_webSelectBox.js
  30. +55 −0 mashery.hotwire/3.4.0/web/aUX_webShake.js
  31. +122 −0 mashery.hotwire/3.4.0/web/aUX_webSwipe.js
  32. +33 −0 mashery.hotwire/3.4.0/web/aUX_webTemplate.js
@@ -0,0 +1,92 @@
+KLOUT API DEMO APP
+==================================================================
+Created lovingly for the developer community by Mashery.
+
+http://www.mashery.com
+
+http://developer.mashery.com
+
+
+SYNOPSIS
+==================================================================
+This demo App provides a way to see the Klout API in action.
+It's built using appMobi's Cross Platform Development Kit (XDK)
+that lets you create mobile apps for smartphones and tablets using
+standard web languages (HTML5, CSS, and JavaScript).
+
+
+
+FEATURES
+==================================================================
+Uses Klout's API to find Klout score based on your Twitter handle (Supports up to three comma separated handles)
+
+
+
+GETTING STARTED
+==================================================================
+You will need the following to get started -
+
+1. appMobi's XDK. Free Download - http://www.appmobi.com/?q=node/27
+2. A Klout API key (Register at http://developer.Klout.com/member/register).
+
+
+
+OBTAINING THE API KEY
+==================================================================
+Before you can begin using this app, you will need to get an API key
+from Klout at http://developer.Klout.com/member/register. This will also
+give you a Single Sign-On Mashery ID with access to hundreds of other APIs.
+
+
+SETTING UP THE API KEY IN THIS APP
+==================================================================
+Once you have obtained your API key, assign the API key to the
+variable api_key on line 1 of the file Klout.js, like so -
+
+<pre>
+ var api_key ='your_api_key_here';
+</pre>
+
+ABOUT THE KLOUT API
+==================================================================
+
+Klout API allows developers access to the following information -
+
+1. Klout Score - The Klout Score is the measurement of your overall online influence. The scores range from 1-100 with higher scores representing a wider and stronger sphere of influence.
+2. Network Influence - Network Influence is the influence level of your engaged audience. Capturing the attention of influencers is no easy task, and those who are able to do so are typically creating spectacular content.
+3. Amplification Probability - Amplification Probability is the likelihood that your content will be acted upon. The ability to create content that compels others to respond and high-velocity content that spreads into networks beyond your own is a key component of influence.
+4. True Reach - True Reach is the size of your engaged audience. We eliminate inactive and spam accounts, and only include accounts that you influence.
+5. Influential About - The topics you are most influential about based not on what you talk about the most but on the subjects you get the most engagement on.
+6. Influencer Of/Influenced By: These are the people who you influence and who you are influenced by based on social actions.
+
+Learn more about the Klout API at http://developer.Klout.com
+
+
+KLOUT API DOCUMENTATION
+==================================================================
+To learn more about the data set provided by Klout's API, you can read
+through the API documentation at http://developer.Klout.com/iodocs
+
+
+ABOUT THE MASHERY API NETWORK
+==================================================================
+The Mashery API Network (http://developer.mashery.com) is an open
+data commons of over 50 RESTful APIs that developers can access
+with their Mashery ID.
+
+Mashery is the world's leading API management service provider, helping
+companies provide the best API experience for developers, as well as
+the most advanced API management and reporting tools to our clients.
+
+
+EXPLORE MORE APIS
+==================================================================
+Check out Mashery's API Network at http://developer.mashery.com/apis
+to explore other awesome APIs including NY Times, Klout, USA TODAY,
+Rotten Tomatoes, Best Buy, Hoovers, Edmunds, Netflix, Rdio and many more.
+
+
+SUPPORT
+==================================================================
+If you have any questions or need any help obtaining an API key,
+you can reach out to us at: developer-relations@mashery.com
@@ -0,0 +1,186 @@
+/* xhr.js
+ * This overrides the XMLHTTPRequest object to allow cross domain ajax requests
+ */
+(function () {
+ document.addEventListener("appMobi.device.remote.data", getRemoteExtCB, false);
+ var ajaxCallbacks = [];
+
+ function getRemoteExtCB(obj) {
+ if (ajaxCallbacks.length > 0 && ajaxCallbacks[obj.id]) {
+ ajaxCallbacks[obj.id](obj);
+ }
+ }
+
+ XMLHttpRequest_Native = XMLHttpRequest;
+ XMLHttpRequest.Extension = new Object;
+
+ XMLHttpRequest.Extension.addObject = function (object) {
+ uniqueId = Math.floor(Math.random() * 99999999);
+ object.uniqueId = uniqueId;
+ this[uniqueId] = object;
+ return uniqueId;
+ }
+
+ XMLHttpRequest.Extension.sendXMLHTTP = function (data) {
+ var myparams = new AppMobi.Device.RemoteDataParameters();
+ for (var j in data.headers) {
+ myparams.addHeader(j, data.headers[j]);
+ }
+
+ myparams.url = data.requestData.URL;
+ myparams.id = data.uniqueId;
+ myparams.method = data.requestData.method
+ myparams.body = data.body;
+ try{
+ if(typeof myparams.body=="object"){
+ myparams.body=JSON.stringify(myparams.body);
+ }
+ ajaxCallbacks[myparams.id] = this.handleResponseData;
+ AppMobi.device.getRemoteDataExt(myparams);
+ }
+ catch(e){}
+ }
+
+ XMLHttpRequest.Extension.handleResponseData = function (object) {
+
+ var XMLObj = XMLHttpRequest.Extension[object.id];
+ //EMULATED "HEADERS RECEIVED" CHANGES
+ var newHeaders = [];
+ for (var j in object.extras.headers) {
+ newHeaders[j.toLowerCase()] = object.extras.headers[j]; //jQuery looks for lowercase
+ newHeaders[j] = object.extras.headers[j];
+ }
+ XMLObj.responseData.headers = newHeaders;
+ XMLObj.readyState = XMLObj.HEADERS_RECEIVED;
+ if (typeof XMLObj.onreadystatechange == 'function') XMLObj.onreadystatechange();
+
+ XMLObj.readyState = XMLObj.LOADING;
+ if (typeof XMLObj.onreadystatechange == 'function') XMLObj.onreadystatechange();
+
+ XMLObj.response = object.response;
+ XMLObj.status = object.extras.status;
+ XMLObj.responseText = object.response;
+ XMLObj.responseXML = object.response;
+ XMLObj.readyState = XMLObj.DONE;
+
+ if (typeof XMLObj.onreadystatechange == 'function') XMLObj.onreadystatechange();
+ }
+
+
+ // XMLHTTP REDEFINE
+ //=======================================================================================================================
+ //DEFINE "CONSTANTS" FOR CONSTRUCTOR
+ XMLHttpRequest.UNSENT = 0; //const
+ XMLHttpRequest.OPENED = 1; //const
+ XMLHttpRequest.HEADERS_RECEIVED = 2; //const
+ XMLHttpRequest.LOADING = 3; //const
+ XMLHttpRequest.DONE = 4; //const
+
+ //DEFINE "CONSTANTS" PROTOTYPE
+ XMLHttpRequest.prototype.UNSENT = 0; //const
+ XMLHttpRequest.prototype.OPENED = 1; //const
+ XMLHttpRequest.prototype.HEADERS_RECEIVED = 2; //const
+ XMLHttpRequest.prototype.LOADING = 3; //const
+ XMLHttpRequest.prototype.DONE = 4; //const
+ //XMLHttpRequest = {readyState:0 };
+ XMLHttpRequest.prototype.open;
+ XMLHttpRequest.prototype.readyState = 0;
+ XMLHttpRequest.prototype.onreadystatechange;
+ XMLHttpRequest.prototype.headers = {};
+ XMLHttpRequest.prototype.body = "";
+
+
+
+ XMLHttpRequest.prototype.requestData = {
+ 'method': null,
+ 'URL': null,
+ 'asynchronous': true,
+ 'username': null,
+ 'password': null,
+ 'headers': null
+ };
+ XMLHttpRequest.prototype.responseData = {
+ 'headers': null
+ };
+
+
+ XMLHttpRequest.prototype.abort = function abort() {};
+ XMLHttpRequest.prototype.addEventListener = function addEventListener() {};
+ XMLHttpRequest.prototype.constructor = function XMLHttpRequest() {};
+ XMLHttpRequest.prototype.dispatchEvent = function dispatchEvent() {};
+
+ XMLHttpRequest.prototype.getAllResponseHeaders = function getAllResponseHeaders() {
+ if (this.readyState == this.OPENED || this.readyState == this.UNSENT) return "";
+ else {
+ return this.responseData.headers;
+ }
+ };
+
+ XMLHttpRequest.prototype.getResponseHeader = function getResponseHeader(header) {
+ return this.responseData.headers && this.responseData.headers[header] ? this.responseData.headers[header] : "";
+ };
+
+ XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
+ //supported methods: CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT, TRACE, or TRACK
+ /* Empty the list of author request headers.
+ Set the request method to method.
+ Set the request URL to url.
+ Set the request username to temp user.
+ Set the request password to temp password.
+ Set the asynchronous flag to the value of async.
+ */
+ this.requestData.method = method;
+ this.requestData.URL = url;
+ this.requestData.asynchronous = async;
+ this.requestData.user = user;
+ this.requestData.password = password;
+ this.readyState = this.OPENED;
+ if (typeof this.onreadystatechange == 'function') this.onreadystatechange();
+
+ }
+
+ XMLHttpRequest.prototype.overrideMimeType = function overrideMimeType() {};
+ XMLHttpRequest.prototype.removeEventListener = function removeEventListener() {};
+
+ XMLHttpRequest.prototype.send = function send(data) {
+ this.body = data;
+ if(this.requestData.asynchronous===false)
+ {
+ throw ("Synchronous XMLHtppRequest calls are not allowed. Please change your request to be asynchronous");
+ return;
+ }
+ XMLHttpRequest.Extension.sendXMLHTTP(this);
+ };
+
+ XMLHttpRequest.prototype.setRequestHeader = function setRequestHeader(header, value) {
+ this.headers[header] = value;
+ };
+
+
+ function XMLHttpRequest() {
+ XMLHttpRequest.Extension.addObject(this);
+ this.onabort = null;
+ this.onerror = null;
+ this.onload = null;
+ this.onloadstart = null;
+ this.onprogress = null;
+ this.onreadystatechange = null;
+ this.readyState = 0;
+ this.response = "";
+ this.responseText = "";
+ this.responseType = "";
+ this.responseXML = null;
+ this.status = 0;
+ this.statusText = "";
+ this.withCredentials = false;
+ this.requestData = {
+ 'method': null,
+ 'URL': null,
+ 'asynchronous': null,
+ 'username': null,
+ 'password': null,
+ 'headers': null
+ };
+ }
+ window.XMLHttpRequest = XMLHttpRequest;
+})();
Oops, something went wrong.

0 comments on commit ffd872d

Please sign in to comment.