UNPKG

3.19 kBJavaScriptView Raw
1/*jslint node: true */
2'use strict';
3
4var Promise = require("promise");
5var request = require("request");
6var _ = require('underscore');
7
8var helper = function(obj) {
9 if (obj instanceof _) return obj;
10 if (!(this instanceof _)) return new _(obj);
11 this._wrapped = obj;
12 };
13
14helper.get = function (tokenData, url, callback) {
15 var tokenStr = "Token ";
16
17 if (tokenData.type == "bearer") {
18 tokenStr = "Bearer ";
19 }
20
21 var opts = {
22 url: url,
23 headers: {
24 "Authorization": tokenStr + tokenData.token
25 }
26 };
27
28 return new Promise(function(fulfill, reject){
29 request.get(opts, function(error, body, response) {
30 if (error) {
31 reject(JSON.parse(error));
32 if (typeof callback !== 'undefined')
33 callback(JSON.parse(error), null);
34 } else {
35 if (body.statusCode != 200) {
36 reject(JSON.parse(response));
37 if (typeof callback !== 'undefined')
38 callback(JSON.parse(response), null);
39 } else {
40 var res = JSON.parse(response);
41
42 // Examine rate limit headers
43 var rateLimit = body.headers["x-rate-limit-limit"];
44 var rateRemaining = body.headers["x-rate-limit-remaining"];
45 var rateReset = body.headers["x-rate-limit-reset"];
46 if(typeof rateLimit !== 'undefined' &&
47 typeof rateRemaining !== 'undefined' &&
48 typeof rateReset !== 'undefined'){
49 // Add rate limit to response object
50 res.rate_limit = {
51 "limit" : rateLimit,
52 "remaining" : rateRemaining,
53 "reset" : new Date(rateReset * 1000)
54 };
55 }
56
57 fulfill(res);
58 if (typeof callback !== 'undefined')
59 callback(null, res);
60 }
61 }
62 });
63 });
64};
65
66helper.checkLocationParams = function(params){
67 if(_.isUndefined(params) || _.isNull(params)) {
68 throw new Error('params object must be defined');
69 }
70 if (_.isUndefined(params.lat) || _.isFunction(params.lat) || _.isNull(params.lat)) {
71 throw new Error("lat must be defined");
72 }
73 if (_.isUndefined(params.lng) || _.isFunction(params.lng) || _.isNull(params.lng)) {
74 throw new Error("lng must be defined");
75 }
76 };
77
78helper.checkStartLocParams = function(params) {
79 if(_.isUndefined(params) || _.isNull(params)) {
80 throw new Error('params object must be defined');
81 }
82 if (_.isUndefined(params.sLat) || _.isFunction(params.sLat) || _.isNull(params.sLat)) {
83 throw new Error("sLat must be defined");
84 }
85 if (_.isUndefined(params.sLng) || _.isFunction(params.sLng) || _.isNull(params.sLng)) {
86 throw new Error("sLat must be defined");
87 }
88 };
89
90helper.checkEndLocParams = function(params) {
91 if(_.isUndefined(params) || _.isNull(params)) {
92 throw new Error('params object must be defined');
93 }
94 if (_.isUndefined(params.eLat) || _.isFunction(params.eLat) || _.isNull(params.eLat)) {
95 throw new Error("eLat must be defined");
96 }
97 if (_.isUndefined(params.eLng) || _.isFunction(params.eLng) || _.isNull(params.eLng)) {
98 throw new Error("eLat must be defined");
99 }
100 };
101
102
103 module.exports = helper;
\No newline at end of file