scribe-node
Version:
Scribe java OAuth library port to node.js
101 lines (87 loc) • 3.84 kB
text/coffeescript
root = exports ? this
scribe = require 'scribe'
widgets = require('widgets').getWidgets(['GoogleApi', 'FacebookApi'])
# get from datastore
get_request_token = () ->
token = '4%2FmxybjLF9npDq4f_OAYu_qTzDvnWx'
secret = 'ZZpfuR-CSnAJEQTqA3Dn9w1k'
new scribe.Token token, secret
# get verifier from datatore you got from clicking and following the authorization url on earlier steps
get_verifier = () ->
code = 'LSTwrz_oRkUe5D7Ry01U48wC'
new scribe.Verifier code
# get from datastore after set access code
root.get_access_token = () ->
token = '1%2FCi0MgZn3i9GaanINijlN5jZhfmVke_DkbAIgYYEO-Mg'
secret = 'JEIyaGMs5F3EpJIOrQ80MWKp'
new scribe.Token token, secret
root.set_verification_code = (code) ->
# save to datastore
root.get_authorization_url = (service) ->
request_token_extract = (extractor, response) ->
# request token should be saved somewhere because service.getAccessToken uses request token
request_token = extractor response
console.log request_token
url = service.getAuthorizationUrl request_token
#console.log '<a href="'+url+'">'+url+'</a>'
console.log url
service.getRequestToken request_token_extract
root.set_access_token = (service) ->
access_token_extract = (extractor, response) ->
access_token = extractor response
console.log access_token
#save access token for late usage
service.getAccessToken get_request_token(), get_verifier(), access_token_extract
root.test_ga = () ->
service = new scribe.ServiceBuilder().provider(widgets.GoogleApi).apiKey('www.articlemanager.us').apiSecret('tD_FisW209w4ZRyE-ZoQwn8J')._scope('https://www.google.com/analytics/feeds/').build()
access_token = root.get_access_token()
analytics_accounts_feed = 'https://www.google.com/analytics/feeds/accounts/default?max-results=2'
callback = (extractor, response) ->
if response
entries = JSON.parse(extractor(response)).feed.entry
#console.log entries
chds = 't:'
chxly = ''
chxlx = ''
i = ''
for entry in entries
for metric in entry['dxp:metric']
if metric['name'] == 'ga:visits'
chds = chds + metric['value'] + ','
chxly = chxly + metric['value'] + '|'
chxlx += i + '|'
i++
#else if metric['name'] == 'ga:pageviews'
#chds += metric['value'] + ','
console.log 'chds: '+chds
chds = chds.substr 0, chds.length-1
chart_feed = 'https://chart.googleapis.com/chart?chid='+c.get_nonce()
params = {
cht: 'lc'
chg: '25,25,3,2'
chs: '1000x300'
chds: '0,5000'
chxt: 'y|y|x|x' #Which axes to display
#chxl: '0:|'+chxly+'1:|Visits|2:|'+chxlx+'3:|Date'
#chxp: '1,50.0|3,50.0'
#chxs: ''
chma: '100,100,100,100'
chd: chds
chof: 'gif'
}
handle_chart_feed = (extractor, response) ->
console.log '<img src="data:image/gif;base64,'+new Buffer(response, 'binary').toString('base64')+'" />'
service.signedImagePostRequest(access_token, handle_chart_feed, chart_feed, params)
else
console.log 'response empty'
handle_analytics_feed = (extractor, response) ->
if response
entries = JSON.parse(extractor(response)).feed.entry
for entry in entries
feedUri = 'https://www.google.com/analytics/feeds/data?start-date=2011-10-01&end-date=2011-11-01&dimensions=ga:date&metrics=ga:visits,ga:pageviews&sort=ga:date&ids=' + entry["dxp:tableId"]
console.log entry.id + " " + entry.title['$t'] + " " + entry["dxp:tableId"]
#console.log access_token.getToken() + " " + feedUri
service.signedRequest(access_token, callback, feedUri)
else
console.log 'response empty'
service.signedRequest(access_token, handle_analytics_feed, analytics_accounts_feed)