|
1 | 1 | ;(function(_w,$) {
|
2 |
| - var BDC=function(apiKey,nameSpace,server) { |
| 2 | + var BDC=function(apiKey,nameSpace,server,localityLanguage) { |
3 | 3 | this.apiKey=apiKey;
|
4 | 4 | this.nameSpace=nameSpace ? nameSpace : 'data';
|
5 | 5 | this.server=server ? server : 'api.bigdatacloud.net';
|
| 6 | + this.localityLanguage=localityLanguage ? localityLanguage : 'en'; |
6 | 7 | };
|
7 | 8 | BDC.prototype={
|
8 | 9 | call:function(endpoint,payload,successCb,errorCb,method) {
|
9 |
| - var data=[]; |
10 |
| - var hasKey=false; |
11 |
| - |
12 | 10 | if (!method) method='GET';
|
13 | 11 | else method=method.toUpperCase();
|
14 |
| - |
15 | 12 | var params={
|
16 | 13 | url:'https://'+this.server+'/'+this.nameSpace+'/'+endpoint,
|
17 | 14 | type:method,
|
18 | 15 | success:successCb,
|
19 | 16 | error:errorCb,
|
20 | 17 | dataType:'json'
|
21 | 18 | };
|
22 |
| - if (payload) { |
23 |
| - for (var i in payload) { |
24 |
| - if (i=='key') { |
25 |
| - hasKey=true; |
26 |
| - } |
27 |
| - data.push(encodeURIComponent(i)+'='+encodeURIComponent(payload[i])); |
28 |
| - } |
29 |
| - } |
30 |
| - if (!hasKey) data.push('key='+this.apiKey); |
31 | 19 |
|
32 |
| - data=data.join('&'); |
| 20 | + var data=this.prepareData(payload,endpoint); |
33 | 21 |
|
34 | 22 | switch(method) {
|
35 | 23 | case 'GET':
|
|
42 | 30 | }
|
43 | 31 | return this.xhr(params);
|
44 | 32 | },
|
| 33 | + prepareData:function(payload,endpoint) { |
| 34 | + var data=[]; |
| 35 | + var hasKey=false; |
| 36 | + var hasLocalityLanguage=false; |
| 37 | + if (payload) { |
| 38 | + for (var i in payload) { |
| 39 | + switch(i) { |
| 40 | + case 'key': |
| 41 | + hasKey=true; |
| 42 | + break; |
| 43 | + case 'localityLanguage': |
| 44 | + hasLocalityLanguage=true; |
| 45 | + break; |
| 46 | + } |
| 47 | + data.push(encodeURIComponent(i)+'='+encodeURIComponent(payload[i])); |
| 48 | + } |
| 49 | + } |
| 50 | + if (!hasKey && this.apiKey) data.push('key='+this.apiKey); |
| 51 | + if (!hasLocalityLanguage) data.push('localityLanguage='+this.localityLanguage); |
| 52 | + data=data.join('&'); |
| 53 | + return data; |
| 54 | + }, |
45 | 55 | xhr:function(params) {
|
46 | 56 | if ($) {
|
47 | 57 | var xhr=$.ajax(params);
|
48 | 58 | } else {
|
49 | 59 | var xhr = new XMLHttpRequest()
|
50 | 60 | xhr.open(params.type, params.url, true);
|
51 |
| - |
52 | 61 | xhr.onreadystatechange = function() {
|
53 | 62 | if (this.readyState === XMLHttpRequest.DONE) {
|
54 | 63 | if (this.status === 200) {
|
|
86 | 95 | xhr.send(params.data);
|
87 | 96 | }
|
88 | 97 | return xhr;
|
| 98 | + }, |
| 99 | + getClientCoordinates:function(cb) { |
| 100 | + if (!cb) return false; |
| 101 | + if (!navigator.geolocation || !navigator.geolocation.getCurrentPosition) return cb(false); |
| 102 | + return navigator.geolocation.getCurrentPosition( |
| 103 | + (function(position) { return this.cb(position);}).bind({cb:cb}), |
| 104 | + (function(err) { console.error(err); return this.cb(false);}).bind({cb:cb}), |
| 105 | + { |
| 106 | + enableHighAccuracy: true, |
| 107 | + timeout: 5000, |
| 108 | + maximumAge: 0 |
| 109 | + } |
| 110 | + ); |
89 | 111 | }
|
90 | 112 | }
|
91 | 113 | _w.BDCApiClient=BDC;
|
|
96 | 118 | if (params.key) {
|
97 | 119 | $.BDCApiClientInstance.apiKey=params.key;
|
98 | 120 | }
|
| 121 | + if (params.localityLanguage) { |
| 122 | + $.BDCApiClientInstance.setLanguage(params.localityLanguage); |
| 123 | + } |
99 | 124 | if (params.nameSpace) {
|
100 | 125 | $.BDCApiClientInstance.nameSpace=params.nameSpace;
|
101 | 126 | }
|
|
0 commit comments