-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgithubrecall.gs
71 lines (50 loc) · 2.13 KB
/
githubrecall.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
/**
* this is how to do a webapp which needs authentication
* @param {*} e - parameters passed to doGet
* @return {HtmlOurput} for rendering
*/
function doGetGithubRecall (e) {
// set up some dummy args for testing
e.parameter.test='ing';
// this is pattern for a WebApp.
// passing the doGet parameters (or anything else)
// will ensure they are preservered during the multiple oauth2 processes
// change this to whatever store & credentials name are being used
var goa = cGoa.GoaApp.createGoa('githubgoa',PropertiesService.getScriptProperties())
.setOnToken (function(token,packageName,args) {
return 'token:' + token + ' packagename:' + packageName +' args:' + JSON.stringify(args);
})
.execute(e);
// it's possible that we need consent - this will cause a consent dialog
if (goa.needsConsent()) {
return goa.getConsent();
}
// if we get here its time for your webapp to run and we should have a token, or thrown an error somewhere
if (!goa.hasToken()) throw 'something went wrong with goa - did you check if consent was needed?';
// now return the result of the thing that ran.
return HtmlService.createHtmlOutput (goa.getOnTokenResult())
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function github(params) {
// pick up the token refreshing if necessary
var goa = cGoa.GoaApp.createGoa('githubgoa', PropertiesService.getScriptProperties()).execute(params);
if (!goa.hasToken()) {
throw 'for a non webapp version - first publish once off to provoke a dialog - token will be refreshed automatically thereafter';
}
// do a test - passing the token and any parameters that arrived to this function
Logger.log (testGithub (goa.getToken(), goa.getParams() ));
}
/**
* this is your main processing - will be called with your access token
* @param {string} accessToken - the accessToken
* @param {*} params any params
*/
function testGithub(accessToken,params) {
var options = {
method: "GET",
headers: {
authorization: "Bearer " + accessToken
}
};
return UrlFetchApp.fetch("https://api.github.com/user/repos", options);
}