forked from andrewroberts/TrelloApp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Api.gs
92 lines (68 loc) · 2.28 KB
/
Api.gs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// 34567890123456789012345678901234567890123456789012345678901234567890123456789
// JSHint - TODO
/* jshint asi: true */
// API.gs
// ======
//
// This local object provides internal access to the Trello API.
/* Not sure what the above means. */
//
var Api_ = {
/**
* The API object manages the API version value
*/
setVersion: function (version) {
// version checked in setProperty_()
setProperty_(
PROPERTY_API_VERSION,
version,
'No valid version passed to App.init()')
}, // Api_.setVersion()
/**
* https://developers.trello.com/advanced-reference
*
* @param {object} config Parameters for the API call
* (string} httpMethod (Optional)
* (string} service (Required)
* (string} id (Optional)
* {string} elements (Optional)
* {string} filter (Optional)
* {object} payload (Optional) A POST call's payload
*/
fetch: function(config) {
var errorString = 'The API version is not available, call App.init() first'
var version = getProperty_(PROPERTY_API_VERSION, OnNull.ERROR, errorString)
if (!config.hasOwnProperty('service')) {
throw new TypeError('service has to be defined in config')
}
var serviceFullPath = TRELLO_BASE_API +
'/' + version +
'/' + config.service +
optionalAddToUrl('id') +
optionalAddToUrl('elements') +
optionalAddToUrl('filter')
var apiKey = getProperty_(PROPERTY_API_KEY, OnNull.ERROR, 'No API key')
var token = Authorizer_.getToken()
serviceFullPath += "?key=" + apiKey + "&token=" + token
var options = {
oAuthServiceName: OAUTH_SERVICE_NAME,
oAuthUseToken: 'always',
}
if (config.hasOwnProperty('httpMethod')) {
options.method = config.httpMethod
}
if (config.hasOwnProperty('payload')) {
options.payload = config.payload
}
var reponse = UrlFetchApp.fetch(serviceFullPath, options)
return reponse.getContentText()
// Private Functions
// -----------------
/**
* Optionally add another options to the fetch URL
*/
function optionalAddToUrl(option) {
return config.hasOwnProperty(option) ? '/' + config[option] : ''
} // Api_.fetch.optionalAddToUrl()
}, // Api_.fetch()
} // API