twitter: update to use OAuth
parent
7e318bae57
commit
77d7a92b9e
|
@ -0,0 +1,2 @@
|
||||||
|
Joe Groff
|
||||||
|
Slava Pestov
|
|
@ -1,17 +1,49 @@
|
||||||
! Copyright (C) 2009 Joe Groff.
|
! Copyright (C) 2009, 2010 Joe Groff, Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors assocs combinators hashtables http
|
USING: accessors assocs combinators hashtables http
|
||||||
http.client json.reader kernel macros namespaces sequences
|
http.client json.reader kernel macros namespaces sequences
|
||||||
urls.secure fry ;
|
urls.secure fry oauth urls ;
|
||||||
IN: twitter
|
IN: twitter
|
||||||
|
|
||||||
! Configuration
|
! Configuration
|
||||||
SYMBOLS: twitter-username twitter-password twitter-source ;
|
SYMBOLS: twitter-source twitter-consumer-token twitter-access-token ;
|
||||||
|
|
||||||
twitter-source [ "factor" ] initialize
|
twitter-source [ "factor" ] initialize
|
||||||
|
|
||||||
: set-twitter-credentials ( username password -- )
|
<PRIVATE
|
||||||
[ twitter-username set ] [ twitter-password set ] bi* ;
|
|
||||||
|
: with-twitter-oauth ( quot -- )
|
||||||
|
[
|
||||||
|
twitter-consumer-token get consumer-token set
|
||||||
|
twitter-access-token get access-token set
|
||||||
|
call
|
||||||
|
] with-scope ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
! obtain-twitter-request-token and obtain-twitter-access-token
|
||||||
|
! should use https: URLs but Twitter sends a 301 Redirect back
|
||||||
|
! to the same URL. Twitter bug?
|
||||||
|
|
||||||
|
: obtain-twitter-request-token ( -- request-token )
|
||||||
|
[
|
||||||
|
"http://twitter.com/oauth/request_token"
|
||||||
|
<request-token-params>
|
||||||
|
obtain-request-token
|
||||||
|
] with-twitter-oauth ;
|
||||||
|
|
||||||
|
: twitter-authorize-url ( token -- url )
|
||||||
|
"https://twitter.com/oauth/authorize" >url
|
||||||
|
swap key>> "oauth_token" set-query-param ;
|
||||||
|
|
||||||
|
: obtain-twitter-access-token ( request-token verifier -- access-token )
|
||||||
|
[
|
||||||
|
[ "http://twitter.com/oauth/access_token" ] 2dip
|
||||||
|
<access-token-params>
|
||||||
|
swap >>verifier
|
||||||
|
swap >>request-token
|
||||||
|
obtain-access-token
|
||||||
|
] with-twitter-oauth ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
|
@ -20,12 +52,11 @@ MACRO: keys-boa ( keys class -- )
|
||||||
[ [ '[ _ swap at ] ] map ] dip '[ _ cleave _ boa ] ;
|
[ [ '[ _ swap at ] ] map ] dip '[ _ cleave _ boa ] ;
|
||||||
|
|
||||||
! Twitter requests
|
! Twitter requests
|
||||||
|
|
||||||
: twitter-url ( string -- url )
|
: twitter-url ( string -- url )
|
||||||
"https://twitter.com/statuses/" ".json" surround ;
|
"https://twitter.com/statuses/" ".json" surround ;
|
||||||
|
|
||||||
: set-request-twitter-auth ( request -- request )
|
: set-request-twitter-auth ( request -- request )
|
||||||
twitter-username get twitter-password get set-basic-auth ;
|
[ <oauth-request-params> set-oauth ] with-twitter-oauth ;
|
||||||
|
|
||||||
: twitter-request ( request -- data )
|
: twitter-request ( request -- data )
|
||||||
set-request-twitter-auth
|
set-request-twitter-auth
|
||||||
|
@ -45,6 +76,7 @@ TUPLE: twitter-status
|
||||||
in-reply-to-user-id
|
in-reply-to-user-id
|
||||||
favorited?
|
favorited?
|
||||||
user ;
|
user ;
|
||||||
|
|
||||||
TUPLE: twitter-user
|
TUPLE: twitter-user
|
||||||
id
|
id
|
||||||
name
|
name
|
||||||
|
|
Loading…
Reference in New Issue