Repository navigation
Expand file tree
/
Copy pathusergrid.min.js
More file actions
1 lines (1 loc) · 13.2 KB
/
Copy pathusergrid.min.js
File metadata and controls
1 lines (1 loc) · 13.2 KB
1
window.console=window.console||{};window.console.log=window.console.log||function(){};window.Usergrid=window.Usergrid||{};Usergrid=Usergrid||{};Usergrid.SDK_VERSION="0.10.04";Usergrid.Client=function(a){this.URI=a.URI||"https://api.usergrid.com";this.orgName=a.orgName;this.appName=a.appName;this.buildCurl=a.buildCurl||false;this.logging=a.logging||false;this._callTimeout=a.callTimeout||30000;this._callTimeoutCallback=a.callTimeoutCallback||null;this.logoutCallback=a.logoutCallback||null};Usergrid.Client.prototype.request=function(n,g){var m=this;var a=n.method||"GET";var l=n.endpoint;var c=n.body||{};var d=n.qs||{};var h=n.mQuery||false;if(h){var b=this.URI+"/"+l}else{var b=this.URI+"/"+this.orgName+"/"+this.appName+"/"+l}if(m.getToken()){d.access_token=m.getToken()}var k=encodeParams(d);if(k){b+="?"+k}c=JSON.stringify(c);var j=new XMLHttpRequest();j.open(a,b,true);if(c){j.setRequestHeader("Content-Type","application/json")}j.onerror=function(){m._end=new Date().getTime();if(m.logging){console.log("success (time: "+m.calcTimeDiff()+"): "+a+" "+b)}if(m.logging){console.log("Error: API call failed at the network level.")}clearTimeout(f);var o=true;if(typeof(g)==="function"){g(o,data)}};j.onload=function(o){m._end=new Date().getTime();if(m.logging){console.log("success (time: "+m.calcTimeDiff()+"): "+a+" "+b)}clearTimeout(f);o=JSON.parse(j.responseText);if(j.status!=200){var p=o.error;var q=o.error_description;if(m.logging){console.log("Error ("+j.status+")("+p+"): "+q)}if((p=="auth_expired_session_token")||(p=="unauthorized")||(p=="auth_missing_credentials")||(p=="auth_invalid")){if(typeof(m.logoutCallback)==="function"){return m.logoutCallback(true,o)}}if(typeof(g)==="function"){g(true,o)}}else{if(typeof(g)==="function"){g(false,o)}}};var f=setTimeout(function(){j.abort();if(m._callTimeoutCallback==="function"){m._callTimeoutCallback("API CALL TIMEOUT")}else{m.callback("API CALL TIMEOUT")}},m._callTimeout);if(this.logging){console.log("calling: "+a+" "+b)}if(this.buildCurl){var e={uri:b,body:c,method:a};this.buildCurlCall(e)}this._start=new Date().getTime();j.send(c)};Usergrid.Client.prototype.createEntity=function(b,d){var c=b.getOnExist||false;var b={client:this,data:b};var a=new Usergrid.Entity(b);a.fetch(function(f,g){var e=(f&&"service_resource_not_found"===g.error||"no_name_specified"===g.error)||(!f&&c);if(e){a.set(b.data);a.save(function(h,j){if(typeof(d)==="function"){d(h,a)}})}else{if(typeof(d)==="function"){d(f,a)}}})};Usergrid.Client.prototype.getEntity=function(b,c){var b={client:this,data:b};var a=new Usergrid.Entity(b);a.fetch(function(d,e){if(typeof(c)==="function"){c(d,a)}})};Usergrid.Client.prototype.createCollection=function(a,c){a.client=this;var b=new Usergrid.Collection(a,function(d,e){if(typeof(c)==="function"){c(d,b)}})};Usergrid.Client.prototype.createUserActivity=function(b,c,d){c.type="users/"+b+"/activities";var c={client:this,data:c};var a=new Usergrid.Entity(c);a.save(function(e,f){if(typeof(d)==="function"){d(e,a)}})};Usergrid.Client.prototype.calcTimeDiff=function(){var c=0;var b=this._end-this._start;try{c=((b/10)/60).toFixed(2)}catch(a){return 0}return c};Usergrid.Client.prototype.setToken=function(b){var a="token"+this.appName+this.orgName;this.token=b;if(typeof(Storage)!=="undefined"){if(b){localStorage.setItem(a,b)}else{localStorage.removeItem(a)}}};Usergrid.Client.prototype.getToken=function(){var a="token"+this.appName+this.orgName;if(this.token){return this.token}else{if(typeof(Storage)!=="undefined"){return localStorage.getItem(a)}}return null};Usergrid.Client.prototype.login=function(e,c,d){var a=this;var b={method:"POST",endpoint:"token",body:{username:e,password:c,grant_type:"password"}};this.request(b,function(g,h){var f={};if(g&&a.logging){console.log("error trying to log user in")}else{f=new Usergrid.Entity("users",h.user);a.setToken(h.access_token)}if(typeof(d)==="function"){d(g,h,f)}})};Usergrid.Client.prototype.loginFacebook=function(a,d){var b=this;var c={method:"GET",endpoint:"auth/facebook",qs:{fb_access_token:a}};this.request(c,function(f,g){var e={};if(f&&b.logging){console.log("error trying to log user in")}else{e=new Usergrid.Entity("users",g.user);b.setToken(g.access_token)}if(typeof(d)==="function"){d(f,g,e)}})};Usergrid.Client.prototype.getLoggedInUser=function(c){if(!this.getToken()){c(true,null,null)}else{var a=this;var b={method:"GET",endpoint:"users/me",};this.request(b,function(f,g){if(f){if(a.logging){console.log("error trying to log user in")}if(typeof(c)==="function"){c(f,g,null)}}else{var e={client:a,data:g.entities[0]};var d=new Usergrid.Entity(e);if(typeof(c)==="function"){c(f,g,d)}}})}};Usergrid.Client.prototype.isLoggedIn=function(){if(this.getToken()){return true}return false};Usergrid.Client.prototype.logout=function(){this.setToken(null)};Usergrid.Client.prototype.buildCurlCall=function(c){var b="curl";var e=(c.method||"GET").toUpperCase();var a=c.body||{};var d=c.uri;if(e==="POST"){b+=" -X POST"}else{if(e==="PUT"){b+=" -X PUT"}else{if(e==="DELETE"){b+=" -X DELETE"}else{b+=" -X GET"}}}b+=" "+d;if(a!=='"{}"'&&e!=="GET"&&e!=="DELETE"){b+=" -d '"+a+"'"}console.log(b);return b};Usergrid.Entity=function(a){this._client=a.client;this._data=a.data||{}};Usergrid.Entity.prototype.get=function(a){if(a){return this._data[a]}else{return this._data}};Usergrid.Entity.prototype.set=function(a,b){if(typeof a==="object"){for(var c in a){this._data[c]=a[c]}}else{if(typeof a==="string"){if(b===null){delete this._data[a]}else{this._data[a]=b}}else{this._data=null}}};Usergrid.Entity.prototype.save=function(h){var c=this.get("type");var g="POST";if(isUUID(this.get("uuid"))){g="PUT";c+="/"+this.get("uuid")}var a=this;var e={};var f=this.get();for(var d in f){if(d==="metadata"||d==="created"||d==="modified"||d==="type"||d==="activatted"||d==="uuid"){continue}e[d]=f[d]}var b={method:g,endpoint:c,body:e};this._client.request(b,function(n,k){if(n&&a._client.logging){console.log("could not save entity");if(typeof(h)==="function"){return h(n,k,a)}}else{if(k.entities){if(k.entities.length){var j=k.entities[0];a.set(j)}}var o=(a.get("type")==="user"&&f.oldpassword&&f.newpassword);if(o){var m={};m.oldpassword=f.oldpassword;m.newpassword=f.newpassword;var l={method:"PUT",endpoint:c+"/password",body:m};a._client.request(l,function(p,q){if(p&&a._client.logging){console.log("could not update user")}a.set("oldpassword",null);a.set("newpassword",null);if(typeof(h)==="function"){h(p,q,a)}})}else{if(typeof(h)==="function"){h(n,k,a)}}}})};Usergrid.Entity.prototype.fetch=function(e){var d=this.get("type");var a=this;if(this.get("uuid")){d+="/"+this.get("uuid")}else{if(d==="users"){if(this.get("username")){d+="/"+this.get("username")}else{if(typeof(e)==="function"){var c="no_name_specified";if(a._client.logging){console.log(c)}return e(true,{error:c},a)}}}else{if(this.get("name")){d+="/"+this.get("name")}else{if(typeof(e)==="function"){var c="no_name_specified";if(a._client.logging){console.log(c)}return e(true,{error:c},a)}}}}var b={method:"GET",endpoint:d};this._client.request(b,function(g,h){if(g&&a._client.logging){console.log("could not get entity")}else{if(h.user){a.set(h.user)}else{if(h.entities){if(h.entities.length){var f=h.entities[0];a.set(f)}}}}if(typeof(e)==="function"){e(g,h,a)}})};Usergrid.Entity.prototype.destroy=function(e){var d=this.get("type");if(isUUID(this.get("uuid"))){d+="/"+this.get("uuid")}else{if(typeof(e)==="function"){var c="Error trying to delete object - no uuid specified.";if(a._client.logging){console.log(c)}e(true,c)}}var a=this;var b={method:"DELETE",endpoint:d};this._client.request(b,function(f,g){if(f&&a._client.logging){console.log("entity could not be deleted")}else{a.set(null)}if(typeof(e)==="function"){e(f,g)}})};Usergrid.Entity.prototype.connect=function(a,d,h){var k=this;var f=d.get("type");var c=this.getEntityId(d);if(!c){if(typeof(h)==="function"){var g="Error trying to delete object - no uuid specified.";if(k._client.logging){console.log(g)}h(true,g)}return}var e=this.get("type");var b=this.getEntityId(this);if(!b){if(typeof(h)==="function"){var g="Error in connect - no uuid specified.";if(k._client.logging){console.log(g)}h(true,g)}return}var j=e+"/"+b+"/"+a+"/"+f+"/"+c;var l={method:"POST",endpoint:j};this._client.request(l,function(m,n){if(m&&k._client.logging){console.log("entity could not be connected")}if(typeof(h)==="function"){h(m,n)}})};Usergrid.Entity.prototype.getEntityId=function(a){var b=false;if(isUUID(a.get("uuid"))){b=a.get("uuid")}else{if(type==="users"){b=a.get("username")}else{if(a.get("name")){b=a.get("name")}}}return b};Usergrid.Entity.prototype.getConnections=function(d,h){var c=this;var b=this.get("type");var a=this.getEntityId(this);if(!a){if(typeof(h)==="function"){var f="Error in getConnections - no uuid specified.";if(c._client.logging){console.log(f)}h(true,f)}return}var g=b+"/"+a+"/"+d+"/";var e={method:"GET",endpoint:g};this._client.request(e,function(l,m){if(l&&c._client.logging){console.log("entity could not be connected")}c[d]={};var k=m.entities.length;for(var j=0;j<k;j++){if(m.entities[j].type==="user"){c[d][m.entities[j].username]=m.entities[j]}else{c[d][m.entities[j].name]=m.entities[j]}}if(typeof(h)==="function"){h(l,m)}})};Usergrid.Entity.prototype.disconnect=function(a,d,h){var k=this;var f=d.get("type");var c=this.getEntityId(d);if(!c){if(typeof(h)==="function"){var g="Error trying to delete object - no uuid specified.";if(k._client.logging){console.log(g)}h(true,g)}return}var e=this.get("type");var b=this.getEntityId(this);if(!b){if(typeof(h)==="function"){var g="Error in connect - no uuid specified.";if(k._client.logging){console.log(g)}h(true,g)}return}var j=e+"/"+b+"/"+a+"/"+f+"/"+c;var l={method:"DELETE",endpoint:j};this._client.request(l,function(m,n){if(m&&k._client.logging){console.log("entity could not be disconnected")}if(typeof(h)==="function"){h(m,n)}})};Usergrid.Collection=function(a,b){this._client=a.client;this._type=a.type;this.qs=a.qs||{};this._list=[];this._iterator=-1;this._previous=[];this._next=null;this._cursor=null;this.fetch(b)};Usergrid.Collection.prototype.fetch=function(d){var b=this;var a=this.qs;if(this._cursor){a.cursor=this._cursor}else{delete a.cursor}var c={method:"GET",endpoint:this._type,qs:this.qs};this._client.request(c,function(g,h){if(g&&b._client.logging){console.log("error getting collection")}else{var o=h.cursor||null;b.saveCursor(o);if(h.entities){b.resetEntityPointer();var l=h.entities.length;b._list=[];for(var j=0;j<l;j++){var e=h.entities[j].uuid;if(e){var f=h.entities[j]||{};var n={type:b._type,client:b._client,uuid:e,data:f};var m=new Usergrid.Entity(n);var k=b._list.length;b._list[k]=m}}}}if(typeof(d)==="function"){d(g,h)}})};Usergrid.Collection.prototype.addEntity=function(b,c){var a=this;b.type=this._type;this._client.createEntity(b,function(f,d){if(!f){var e=a._list.length;a._list[e]=d}if(typeof(c)==="function"){c(f,d)}})};Usergrid.Collection.prototype.destroyEntity=function(b,c){var a=this;b.destroy(function(d,e){if(d){if(a._client.logging){console.log("could not destroy entity")}if(typeof(c)==="function"){c(d,e)}}else{a.fetch(c)}})};Usergrid.Collection.prototype.getEntityByUUID=function(c,d){var b={data:{type:this._type,uuid:c},client:this._client};var a=new Usergrid.Entity(b);a.fetch(d)};Usergrid.Collection.prototype.getFirstEntity=function(){var a=this._list.length;if(a>0){return this._list[0]}return null};Usergrid.Collection.prototype.getLastEntity=function(){var a=this._list.length;if(a>0){return this._list[a-1]}return null};Usergrid.Collection.prototype.hasNextEntity=function(){var a=this._iterator+1;var b=(a>=0&&a<this._list.length);if(b){return true}return false};Usergrid.Collection.prototype.getNextEntity=function(){this._iterator++;var a=(this._iterator>=0&&this._iterator<=this._list.length);if(a){return this._list[this._iterator]}return false};Usergrid.Collection.prototype.hasPrevEntity=function(){var b=this._iterator-1;var a=(b>=0&&b<this._list.length);if(a){return true}return false};Usergrid.Collection.prototype.getPrevEntity=function(){this._iterator--;var a=(this._iterator>=0&&this._iterator<=this._list.length);if(a){return this.list[this._iterator]}return false};Usergrid.Collection.prototype.resetEntityPointer=function(){this._iterator=-1};Usergrid.Collection.prototype.saveCursor=function(a){if(this._next!==a){this._next=a}};Usergrid.Collection.prototype.resetPaging=function(){this._previous=[];this._next=null;this._cursor=null};Usergrid.Collection.prototype.hasNextPage=function(){return(this._next)};Usergrid.Collection.prototype.getNextPage=function(a){if(this.hasNextPage()){this._previous.push(this._cursor);this._cursor=this._next;this._list=[];this.fetch(a)}};Usergrid.Collection.prototype.hasPreviousPage=function(){return(this._previous.length>0)};Usergrid.Collection.prototype.getPreviousPage=function(a){if(this.hasPreviousPage()){this._next=null;this._cursor=this._previous.pop();this._list=[];this.fetch(a)}};function isUUID(a){var b=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;if(!a){return false}return b.test(a)}function encodeParams(d){tail=[];var b=[];if(d instanceof Array){for(i in d){b=d[i];if((b instanceof Array)&&(b.length>1)){tail.push(b[0]+"="+encodeURIComponent(b[1]))}}}else{for(var a in d){if(d.hasOwnProperty(a)){var c=d[a];if(c instanceof Array){for(i in c){b=c[i];tail.push(a+"="+encodeURIComponent(b))}}else{tail.push(a+"="+encodeURIComponent(c))}}}}return tail.join("&")};