deviceatlasapi 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDgyMWI1NjA0Y2IyZTFhMjhhYzk4ODhlNjZhZDA1NjQ3ZTkwNDJjOA==
4
+ N2MyZWQ2Y2M4NzczZjFkMzBhY2NiY2Q4NzE3NDE0NTc4NWQ5ZTA0Yw==
5
5
  data.tar.gz: !binary |-
6
- NDIxM2RhYjBkMDFmMTAzYzI5ZjgxNTdhMDQ2Nzc0ODg3ZTVkMDQ4Mg==
6
+ Y2QxMzkwNTMzYzMyZGViZmE3ZGFmMWM0OGRjOGYzYTE0NDk2ODljNw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- ZjJhYmZmYzJkY2E4OGViMTkxYzhkZTU5M2UyNzQ0ZTM3MGI5ODI0MmIxMmRj
10
- YmMwZTg1MzRlZGVlYzU1MDFlZTg5NmI3NzJkMDIyMGQxOTU2YmYwYmE5MTBk
11
- MTEyYmU5MTc5NWI2NTNiNmNiOTU4M2I5ZTU2YzNjNGYzNDRjZmE=
9
+ ZjQ2OTgwZTNkY2NhYjE1MmYwNjk0MzA3MDEzZDEwMmYwY2I3OTFiMmRlZWRm
10
+ ZjI5NTFjMmY1NjU2NzhiMGFiYTk3MmIzMDMxZjBlMjQ5YjhmNjM2ODBiMDk0
11
+ MjlmNzZiNDNlM2I3MWEyMWQwMTU3YTIzNWQzZmRmNzIwNzk5ZGU=
12
12
  data.tar.gz: !binary |-
13
- Yzc2YWEzOGQwYmQ0YjBlMTE0NTQxYjc5Nzc1ZmNjZDM1ODYyNTYxYzcwZjNj
14
- NDY2MTkwZTQ5OWYyYzAxYjhmOTQxYjkxODVlNTI4OWU0ZWMwZTdlZDRhNWZl
15
- YzUwMDdlNTdjMjFiZGQzYWRjYmI4ZWE1YWY3NDliNzlkNzJmY2E=
13
+ NTEwMzljMDA3ZDRhNTYxMjZlOGI1N2M3MWFiMmI3NjI4OTZmMDcxNDk5NDc0
14
+ MDYxZmMzNmIwNmNiZmZjMDg4ZDYzYTA1NjRmNmI4YzkwZTEzZmE3NmIwZDA0
15
+ ZGZmZjQxMDFlMTQ1YmZlNDE1MjMxZGE1MDA2OTJhZWY5YzI3ZTM=
@@ -0,0 +1,93 @@
1
+ DeviceAtlas APIs with client side properties
2
+
3
+
4
+ ***** INTRO *****
5
+ The DeviceAtlas APIs can work in conjunction with a JavaScript property
6
+ detection file and merge the resulting properties for use on the server side.
7
+ The client properties are also available to other JavaScript libraries. The
8
+ DeviceAtlas client detection file needs to be included on your web page for this
9
+ to function.
10
+
11
+
12
+ ***** CLIENT SIDE ACCESS TO PROPERTIES *****
13
+ The properties gathered from the DeviceAtlas JavaScript detection are available
14
+ to other JavaScript functions and can be accessed on the client side by using
15
+ the "DeviceAtlas" namespace.
16
+
17
+ EXAMPLE:
18
+ --------------------------------------------
19
+
20
+ // Does the browser support Web GL ?
21
+ var supportsWebGl = DeviceAtlas.js.webGl;
22
+
23
+ --------------------------------------------
24
+
25
+ The normal DeviceAtlas property name should be used to access the client side
26
+ property.
27
+
28
+
29
+ ***** SERVER SIDE ACCESS TO PROPERTIES *****
30
+ The JavaScript detection file creates a special cookie with the detected client
31
+ properties.
32
+
33
+ When using DeviceAtlas Enterprise APIs:
34
+ To access the client side properties on the server the contents of this cookie
35
+ need to be passed to the API's getProperty and getProperties () methods.
36
+
37
+ When using DeviceAtlas Cloud APIs:
38
+ If using this cookie is allowed in the settings, the API will use the cookie
39
+ if it exists.
40
+
41
+ The client side properties over-ride any data file properties and also serve as
42
+ an input into additional logic to determine other properties such iPhone models
43
+ which are normally not detectable.
44
+
45
+ The cookie containing the properties is called "DAPROPS".
46
+
47
+
48
+ ***** BASIC SERVER SIDE USAGE *****
49
+ 1) Include the deviceatlas-X.X.min.js file on your webpage.
50
+ 2) In your web application, pass the contents of the DeviceAtlas cookie
51
+ to the DeviceAtlas API.
52
+
53
+ NOTE: the cookie contents will only be set after the first request. It is
54
+ recommended to not rely on the client side properties for the very first page.
55
+
56
+ Please see the Example code bundled with the API for more information.
57
+
58
+
59
+ ***** CUSTOM CONFIGURATION *****
60
+ To customize a cookie name or other cookie parameters like a domain or a path
61
+ you can use the code bellow - just remember that this code must be used before
62
+ you include deviceatlas-X.X.min.js file.
63
+
64
+ var DeviceAtlas = {
65
+ cookieName: 'DAPROPS', // the name of the cookie name
66
+ cookieExpiryDays: 1, // the time the cookie expires in days
67
+ cookieDomain: '.yourdomain.tld', // custom domain
68
+ cookiePath: '/' // custom path
69
+ }
70
+
71
+
72
+ ***** SENDING COOKIE VIA URL *****
73
+ In restricted environment where cookies are not allowed it is possible
74
+ to get a cookie content using js getPropertiesAsString() method and pass it as
75
+ an URL parameter.
76
+
77
+ NOTE: it's up to web application integration to get the value from the URL
78
+ and pass it properly to the DeviceAtlas API.
79
+
80
+ EXAMPLE:
81
+
82
+ <script type="text/javascript">
83
+
84
+ window.onload = function() {
85
+ var img = document.createElement('img');
86
+ img.setAttribute('id', 'ad-banner');
87
+ img.setAttribute('src', './ads.php?DAPROPS=' + encodeURIComponent(DeviceAtlas.getPropertiesAsString()));
88
+ document.body.appendChild(img);
89
+ }
90
+
91
+ </script>
92
+
93
+ © 2013 Afilias Technologies Ltd (dotMobi). All rights reserved
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_dependency "httparty"
24
+ spec.add_dependency "railties", "~> 3.1"
24
25
  end
@@ -1,3 +1,3 @@
1
1
  module DeviceAtlasApi
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,7 @@
1
+
2
+ /*
3
+ * Copyright 2013 Afilias Technologies Ltd (dotMobi). All rights reserved.
4
+ * http://deviceatlas.com
5
+ */
6
+
7
+ var DeviceAtlas=DeviceAtlas||{};DeviceAtlas={apiVersion:"1.1",propsCache:"",cookieName:DeviceAtlas.cookieName||"DAPROPS",cookieExpiryDays:DeviceAtlas.cookieExpiryDays||1,cookieDomain:DeviceAtlas.cookieDomain||null,cookiePath:DeviceAtlas.cookiePath||"/",divStyle:null,ns:{svg:"http://www.w3.org/2000/svg"},cssPrfxs:["Webkit","Moz","O","ms","Khtml"],fncPrfxs:["webkit","moz","o","ms","khtml"],properties:{"js.webGl":function(){return !!window.WebGLRenderingContext},"js.geoLocation":function(){return !!navigator.geolocation},"js.webSqlDatabase":function(){return !!window.openDatabase},"js.indexedDB":function(){return DeviceAtlas.testPrexifes(window,"indexedDB")},"js.webSockets":function(){return DeviceAtlas.testPrexifes(window,"WebSocket")},"js.localStorage":function(){try{return !!localStorage.getItem}catch(A){return false}},"js.sessionStorage":function(){try{return !!sessionStorage.getItem}catch(A){return false}},"js.webWorkers":function(){return !!window.Worker},"js.applicationCache":function(){return !!window.applicationCache},"js.supportBasicJavaScript":function(){if((typeof alert!="function")||(typeof confirm!="function")||(typeof setTimeout!="function")||(typeof setInterval!="function")){return false}return !!document.location&&!!document.forms},"js.modifyDom":function(){if(!document.createElement||!document.appendChild){return false}var A,B;A=document.createElement("span");B=document.createElement("div");B.appendChild(A);return(B==A.parentNode)},"js.modifyCss":function(){if(!document.createElement){return false}var A;A=document.createElement("div");if((typeof A.style!="object")||(typeof A.style.display=="undefined")){return false}A.style.display="none";return(A.style.display=="none")},"js.supportEvents":function(){var B={submit:"form",click:"input",change:"input",load:"img",select:"input"};for(var A in B){if(!DeviceAtlas.isEventSupported(A,B[A])){return false}}return true},"js.supportEventListener":function(){return !!window.addEventListener},"js.xhr":function(){return(typeof XMLHttpRequest=="function")||(typeof XMLHttpRequest=="object")},"js.supportConsoleLog":function(){return(typeof console=="object")&&(typeof console.log=="function")},"js.json":function(){return(typeof JSON=="object")&&(typeof JSON.stringify=="function")},"js.deviceOrientation":function(){return false},"js.deviceMotion":function(){return !!window.DeviceMotionEvent},"js.touchEvents":function(){return("ontouchstart" in window)},"js.querySelector":function(){return !!document.querySelector},"html.canvas":function(){if(!document.createElement){return false}var A;A=document.createElement("canvas");return !!(A.getContext&&A.getContext("2d"))},"html.video":function(){if(!document.createElement){return false}var C,A=new Boolean();C=document.createElement("video");try{if(A=!!C.canPlayType){A.ogg=C.canPlayType('video/ogg; codecs="theora"');var B='video/mp4; codecs="avc1.42E01E';A.h264=C.canPlayType(B+'"')||C.canPlayType(B+', mp4a.40.2"');A.webm=C.canPlayType('video/webm; codecs="vp8, vorbis"')}}catch(D){}return A.valueOf()},"html.audio":function(){if(!document.createElement){return false}var B,A=new Boolean();B=document.createElement("audio");try{if(A=!!B.canPlayType){A.ogg=B.canPlayType('audio/ogg; codecs="vorbis"');A.mp3=B.canPlayType("audio/mpeg;");A.wav=B.canPlayType('audio/wav; codecs="1"');A.m4a=B.canPlayType("audio/x-m4a;")||B.canPlayType("audio/aac;")}}catch(C){}return A.valueOf()},"html.svg":function(){return !!document.createElementNS&&!!document.createElementNS(DeviceAtlas.ns.svg,"svg").createSVGRect},"html.inlinesvg":function(){if(!document.createElement){return false}var A;A=document.createElement("div");A.innerHTML="<svg/>";return(A.firstChild&&A.firstChild.namespaceURI)==DeviceAtlas.ns.svg},"css.animations":function(){return DeviceAtlas.testPropsAll("animationName")},"css.columns":function(){return DeviceAtlas.testPropsAll("columnCount")},"css.transforms":function(){return !!DeviceAtlas.testProps(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},"css.transitions":function(){return DeviceAtlas.testPropsAll("transitionProperty")},displayColorDepth:function(){return screen.colorDepth},cookieSupport:function(){if(typeof navigator.cookieEnabled=="undefined"&&typeof document.cookie=="string"){return true}return !!navigator.cookieEnabled},orientation:function(){if(typeof window.orientation!="undefined"){return window.orientation}else{return null}},devicePixelRatio:function(){var A=1;try{A=window.devicePixelRatio}catch(B){}return A+""},deviceAspectRatio:function(){var A=["2/3","40/71","3/4","16/9","16/10"];return DeviceAtlas.discoverMediaQueryValue("device-aspect-ratio",A)},flashCapable:function(){try{if(navigator.plugins&&navigator.plugins.length>0&&navigator.mimeTypes){var E="application/x-shockwave-flash";if(navigator.mimeTypes[E]&&navigator.mimeTypes[E].enabledPlugin){return true}}if((typeof ActiveXObject=="function")||(typeof ActiveXObject=="object")){var A=["ShockwaveFlash.ShockwaveFlash.7","ShockwaveFlash.ShockwaveFlash.7","ShockwaveFlash.ShockwaveFlash"];for(var C in A){try{var B=new ActiveXObject(A[C]);return true}catch(D){}}}}catch(D){}return false},accessDom:function(){return !!document.getElementById&&!!document.getElementsByTagName&&!!document.getElementsByName},userMedia:function(){return DeviceAtlas.testPrexifes(navigator,"getUserMedia")}},testProps:function(A){if(!document.createElement){return null}if(this.divStyle==null){this.divStyle=document.createElement("div").style}if(typeof this.divStyle=="undefined"){return null}for(var B in A){if(typeof this.divStyle[A[B]]!="undefined"){return true}}return false},testPropsAll:function(B){var C=B.charAt(0).toUpperCase()+B.substr(1),A=(B+" "+this.cssPrfxs.join(C+" ")+C).split(" ");return this.testProps(A)},testPrexifes:function(D,E){var B=E.charAt(0).toUpperCase()+E.substr(1);for(var C=-1,A=this.fncPrfxs.length;++C<A;){if(!!D[this.fncPrfxs[C]+B]){if(A>1){this.fncPrfxs=[this.fncPrfxs[C]];this.cssPrfxs=[this.cssPrfxs[C]]}return true}}return !!D[E]},isEventSupported:function(A,D){if(!document.createElement){return false}var C,B;C=document.createElement(D);A="on"+A;B=A in C;if(!B){if(!C.setAttribute){C=document.createElement("div")}if(!!C.setAttribute&&!!C.removeAttribute){C.setAttribute(A,"");B=(typeof C[A]=="function")}}return B},discoverMediaQueryValue:function(B,D){if(typeof window.matchMedia=="undefined"){return null}for(var C in D){var A=window.matchMedia("("+B+":"+D[C]+")");if(A.matches){return D[C]+""}}return null},orientationEventTest:function(A){var C=this;if(!!window.addEventListener&&!!window.removeEventListener){var B=function(D){if(D!=null&&D.alpha!=null){A["js.deviceOrientation"]=true;C.exposeProperty("js.deviceOrientation",true);C.propsCache=C.encodeProperties(A);C.setCookie(C.propsCache)}window.removeEventListener("deviceorientation",B,false)};window.addEventListener("deviceorientation",B,false)}},exposeProperties:function(){var C={},A;for(var B in this.properties){A=this.properties[B]();if(A==null||typeof A=="undefined"){continue}this.exposeProperty(B,A);C[B]=A}return C},exposeProperty:function(C,A){var B;if(C.indexOf(".")!=-1){B=C.split(".");if(typeof this[B[0]]=="undefined"){this[B[0]]={}}this[B[0]][B[1]]=A}else{this[C]=A}},getPropertyType:function(A,B){if(typeof B=="boolean"){return"b"}else{if(typeof B=="number"){return"i"}else{return"s"}}},setCookie:function(B){var A=new Date();A.setDate(A.getDate()+this.cookieExpiryDays);var C="";if(this.cookieDomain!=null){C=";domain="+this.cookieDomain}document.cookie=this.cookieName+'="'+B+'";expires='+A.toUTCString()+";path="+this.cookiePath+C},encodeProperties:function(D){var A="",C;for(var B in D){C=this.getPropertyType(B,D[B]);A+=C+B+":"+((C=="b")?D[B]+0:D[B])+"|"}return A.slice(0,-1)},getPropertiesAsString:function(){return this.propsCache},run:function(){var A=this.exposeProperties();this.propsCache=this.encodeProperties(A);if(A.cookieSupport){this.setCookie(this.propsCache)}this.orientationEventTest(A)}};DeviceAtlas.run();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deviceatlasapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trevor Kimenye
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: railties
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '3.1'
55
69
  description: Lets you access the DeviceAtlas cloud api
56
70
  email:
57
71
  - kimenye@gmail.com
@@ -62,12 +76,14 @@ files:
62
76
  - .gitignore
63
77
  - Gemfile
64
78
  - LICENSE.txt
79
+ - README.ClientSide.txt
65
80
  - README.md
66
81
  - Rakefile
67
82
  - deviceatlasapi.gemspec
68
83
  - lib/deviceatlasapi.rb
69
84
  - lib/deviceatlasapi/controller.rb
70
85
  - lib/deviceatlasapi/version.rb
86
+ - vendor/assets/javascripts/deviceatlas-1.1.min.js
71
87
  homepage: https://github.com/kimenye/deviceatlasapi
72
88
  licenses:
73
89
  - MIT