fidor_starter_kits 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9f36a71cf140528a255f198e3f9bb39b2941f1a
|
4
|
+
data.tar.gz: 9d2f59be8b09478bd16b79acd89a1da7387a7795
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7f6cce79401c37a005f590e5741bb2b1e52c11482a5daf319e4e7add3ec6ac272ad1e93c113bf750d62960d61011cfe68615c6854a9cfbdea9a42503bf88b22
|
7
|
+
data.tar.gz: 12fb81b5b2fcfecc8f69ea9ffa9635f48b4a0e142a17ef8e3d836b20163c72d6d4b04fe73a70d4aa1a957c12b6bda2abccdf0ea145687c296161dfe0b7668867
|
@@ -42,6 +42,7 @@ func main() {
|
|
42
42
|
// register a handler function (see next function) to service
|
43
43
|
// requests ...
|
44
44
|
http.HandleFunc("/", indexHandler)
|
45
|
+
fmt.Printf("Now open http://localhost:8080")
|
45
46
|
// ... and start listening.
|
46
47
|
http.ListenAndServe(":8080", nil)
|
47
48
|
}
|
@@ -63,7 +64,7 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
|
|
63
64
|
if token, err := retrieveTokenFromCode(code); err != nil {
|
64
65
|
fmt.Printf("err: %v\n", err)
|
65
66
|
w.WriteHeader(500)
|
66
|
-
fmt.Fprintf(w, "Unfortunately, an error
|
67
|
+
fmt.Fprintf(w, "Unfortunately, an error occurred retrieving oauth token")
|
67
68
|
} else {
|
68
69
|
// ... and finally, greet the user and assemble links
|
69
70
|
renderWelcome(w, token)
|
@@ -122,7 +123,7 @@ type UserResponse struct {
|
|
122
123
|
Email string `json:"email"`
|
123
124
|
}
|
124
125
|
|
125
|
-
// function to
|
126
|
+
// function to retrieve user information from the API
|
126
127
|
func getUser(token string) (u UserResponse, err error) {
|
127
128
|
// Assemble endpoint URL...
|
128
129
|
url := fmt.Sprintf("%s/users/current?access_token=%s", fidor_api_url, token)
|
@@ -2,6 +2,6 @@
|
|
2
2
|
"display_name" : "Node Transactions",
|
3
3
|
"description" : "A simple nodejs based app, showing how to get user transactions",
|
4
4
|
"app_name":"node_tx",
|
5
|
-
"app_url":"http://localhost:
|
6
|
-
"callback_urls":"http://localhost:
|
5
|
+
"app_url":"http://localhost:3141",
|
6
|
+
"callback_urls":"http://localhost:3141/code"
|
7
7
|
}
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
var fidor_config = {
|
17
17
|
app_port : 3141, // you might want to change this to match your app_url
|
18
|
-
app_url : "<APP_URL>",
|
18
|
+
app_url : "<APP_URL>", // must also include the port e.g http://localhost:3141
|
19
19
|
client_id : "<CLIENT_ID>",
|
20
20
|
client_secret : "<CLIENT_SECRET>",
|
21
21
|
fidor_api_url : "<FIDOR_API_URL>"
|
@@ -23,20 +23,20 @@ var fidor_config = {
|
|
23
23
|
|
24
24
|
// This app can be started by executing:
|
25
25
|
//
|
26
|
-
// node
|
26
|
+
// node example.js
|
27
27
|
//
|
28
28
|
// Once the app is running, it can be accessed on:
|
29
29
|
//
|
30
|
-
// http://localhost:
|
30
|
+
// http://localhost:3141
|
31
31
|
//
|
32
32
|
// or on whatever port is configured above.
|
33
33
|
//
|
34
34
|
// The app checks whether an OAuth access token is available for the
|
35
|
-
// user, if not, the user is redirected to the OAuth
|
35
|
+
// user, if not, the user is redirected to the OAuth endpoint. After
|
36
36
|
// successful authentication and authorization, the OAuth endpoint
|
37
37
|
// redirects the user back to the app. Specifically to:
|
38
38
|
//
|
39
|
-
// http://localhost:
|
39
|
+
// http://localhost:3141/code
|
40
40
|
//
|
41
41
|
// This redirect will contain a query with the OAuth code. The app uses
|
42
42
|
// this code to request an OAuth access-token. The retrieved token is stored with
|
@@ -56,10 +56,10 @@ function apiGetTransactions(accessToken, cb) {
|
|
56
56
|
var tx_url = fidor_config.fidor_api_url+
|
57
57
|
"/transactions?access_token="+
|
58
58
|
accessToken
|
59
|
-
|
59
|
+
|
60
60
|
var get = http.get(tx_url, function(res){
|
61
|
-
// response may come in numerous chunks, we need to collect
|
62
|
-
// them and reassemble the entire answer when all data has
|
61
|
+
// response may come in numerous chunks, we need to collect
|
62
|
+
// them and reassemble the entire answer when all data has
|
63
63
|
// been retrieved.
|
64
64
|
var data = new Buffer(0)
|
65
65
|
res.on('data', function(chunk){
|
@@ -84,15 +84,15 @@ function apiGetTransactions(accessToken, cb) {
|
|
84
84
|
// The handle for the Apps /transactions endpoint.
|
85
85
|
// @param request : http request object
|
86
86
|
// @param response : http response
|
87
|
-
//
|
87
|
+
//
|
88
88
|
function getTransactions(request, response) {
|
89
89
|
var cookie_token = getCookie(request, "oauth_token")
|
90
|
-
// if we don't have a token for this user already, redirect
|
90
|
+
// if we don't have a token for this user already, redirect
|
91
91
|
// the user to the OAuth server
|
92
92
|
if (!cookie_token) {
|
93
|
-
var oauth_url = fidor_config.fidor_api_url+"/oauth/authorize?
|
94
|
-
|
95
|
-
fidor_config.
|
93
|
+
var oauth_url = fidor_config.fidor_api_url+"/oauth/authorize?"+
|
94
|
+
"client_id="+fidor_config.client_id+
|
95
|
+
"&redirect_uri="+fidor_config.app_url+"/code"
|
96
96
|
response.writeHead(307, {"location" : oauth_url})
|
97
97
|
response.end()
|
98
98
|
return
|
@@ -100,7 +100,7 @@ function getTransactions(request, response) {
|
|
100
100
|
|
101
101
|
// trade in the key we stored in the cookie for the actual oauth token.
|
102
102
|
var oauth_token = getToken(cookie_token)
|
103
|
-
|
103
|
+
|
104
104
|
// call the api with the OAuth token:
|
105
105
|
apiGetTransactions(oauth_token, function (err, transactions) {
|
106
106
|
if (err) {
|
@@ -136,7 +136,7 @@ function getOAuthToken(code, cb) {
|
|
136
136
|
port : oauth_url.port,
|
137
137
|
host : oauth_url.hostname
|
138
138
|
}
|
139
|
-
|
139
|
+
|
140
140
|
// ... what to send
|
141
141
|
var postData = {
|
142
142
|
code : code,
|
@@ -144,7 +144,7 @@ function getOAuthToken(code, cb) {
|
|
144
144
|
client_secret : fidor_config.client_secret
|
145
145
|
}
|
146
146
|
postData = querystring.stringify(postData)
|
147
|
-
|
147
|
+
|
148
148
|
var token_request = http.request(postOptions, function (res) {
|
149
149
|
// collect the data chunks we received and reassemble them
|
150
150
|
// on request end ...
|
@@ -167,21 +167,21 @@ function getOAuthToken(code, cb) {
|
|
167
167
|
token_request.end()
|
168
168
|
}
|
169
169
|
|
170
|
-
// handler we provide to handle our user being redirected back
|
171
|
-
// to us from the OAuth server with the OAuth `code` in the
|
170
|
+
// handler we provide to handle our user being redirected back
|
171
|
+
// to us from the OAuth server with the OAuth `code` in the
|
172
172
|
// query of the url.
|
173
173
|
function setOAuthToken(request, response) {
|
174
174
|
var u = url.parse(request.url)
|
175
175
|
var code = querystring.parse(u.query)["code"]
|
176
|
-
|
177
|
-
// if the request does not contain a ?code=adsfasdfasdf
|
176
|
+
|
177
|
+
// if the request does not contain a ?code=adsfasdfasdf
|
178
178
|
// query, it's not valid.
|
179
179
|
if (!code) {
|
180
180
|
response.writeHead(400, "Bad Request")
|
181
181
|
response.end()
|
182
182
|
return
|
183
183
|
}
|
184
|
-
|
184
|
+
|
185
185
|
// exchange the code for a token ...
|
186
186
|
getOAuthToken(code, function (err, token) {
|
187
187
|
if (err) {
|
@@ -200,7 +200,7 @@ function setOAuthToken(request, response) {
|
|
200
200
|
// may need it in the future without leaking the actual access_token
|
201
201
|
// via the cookie
|
202
202
|
|
203
|
-
var token_key = storeToken(token)
|
203
|
+
var token_key = storeToken(token)
|
204
204
|
setCookie(response, "oauth_token", token_key)
|
205
205
|
|
206
206
|
// send the user back to the transactions url, this time, with a
|
@@ -216,10 +216,10 @@ function listener(req, resp) {
|
|
216
216
|
if (req.method !== "GET") {
|
217
217
|
resp.writeHead(403, "Forbidden")
|
218
218
|
}
|
219
|
-
|
219
|
+
|
220
220
|
var u = url.parse(req.url)
|
221
221
|
switch (u.pathname) {
|
222
|
-
case "/":
|
222
|
+
case "/":
|
223
223
|
console.log("start page ...")
|
224
224
|
resp.writeHead(200, {"Content-Type" : "text/html"})
|
225
225
|
resp.end(hello_template)
|
@@ -274,7 +274,7 @@ var hello_template = ""+
|
|
274
274
|
" <p><a href='/clear_cookie'>Clear Cookie</a></p>" +
|
275
275
|
" <p><a href='/clear_all_cookies'>Clear All Cookies</a></p>" +
|
276
276
|
"</body>" +
|
277
|
-
"</html>"
|
277
|
+
"</html>"
|
278
278
|
|
279
279
|
// Code for setting and clearing cookies. Typically a framework would
|
280
280
|
// handle the intricacies of cookie handling, but we opted not to
|
@@ -312,7 +312,7 @@ function getCookies(request) {
|
|
312
312
|
cookies[c[0].trim()] = c[1]
|
313
313
|
})
|
314
314
|
}
|
315
|
-
return cookies
|
315
|
+
return cookies
|
316
316
|
}
|
317
317
|
|
318
318
|
function getCookie(request, key) {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fidor_starter_kits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Leciejewski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|