urbit/try/bin/twit.hoon

117 lines
3.7 KiB
Plaintext
Raw Normal View History

2014-05-09 23:02:36 +04:00
!: :: /=try=/bin/http/hoon
!? 164
::::
::
=> %= .
+
=> +
|%
::
++ sifo
|= tig=@
^- tape
=+ poc=(mod (sub 3 (mod (met 3 tig) 3)) 3)
=+ pad=(lsh 3 poc (swap 3 tig))
=+ ^= ska
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
=+ ^= sif
%- flop
|- ^- tape
?~ pad
~
=+ d=(end 0 6 pad)
[(snag d ska) $(pad (rsh 0 6 pad))]
(weld (scag (sub (lent sif) poc) sif) (trip (fil 3 poc '=')))
::
++ cuss :: upper
|= vib=tape
^- @t
%+ rap 3
(turn vib |=(a=@ ?.(&((gte a 'a') (lte a 'z')) a (sub a 32))))
::
++ hmac
|= [key=@ mes=@]
=+ ip=(fil 3 64 0x36)
=+ op=(fil 3 64 0x5c)
=+ ^= kex
?: (gth (met 3 key) 64)
(lsh 3 44 (shan (swap 3 key)))
(lsh 3 (sub 64 (met 3 key)) (swap 3 key))
=+ inn=(shan (swap 3 (cat 3 (swap 3 mes) (mix ip kex))))
(shan (swap 3 (cat 3 inn (mix op kex))))
::
++ unt |=(a=@ (div (sub a ~1970.1.1) (bex 64)))
::
++ curl
|= [met=meth req=[p=path q=tape r=purl] head=math body=(unit octs)]
=+ ^= work
|= [now=@da pax=path not=note]
^- bowl
?> ?=([%hp *] not)
?~ r.p.not
!!
:_ ~
^- (list gift)
[[%$ !>((trip q.u.r.p.not))] ~]
=+ gifts=`(list gift)`[[%tq p.req [r.req [met head body]]] ~]
=+ stuff=[~ `(list slip)`[[p.req [%hp ~]] ~] work]
^- bowl
[gifts stuff]
++ req
|= a=tape
^- [p=path q=tape r=purl]
[`path`[(scot %t (rap 3 a)) ~] a (scan a auri:epur)]
::
++ app
|% ++ cok 'hDDOTPfGHGlsOUbhpy6qc6XbW'
++ cos 'olCkea6wm3XG4pnVCHuPIozUF2ggH1sHjnBtuT4Ai6rCOeQGzO'
++ aok '2485712317-R77Lpdu5rAJadRVxTXPpnxvcwS0IfNG7QEzLPty'
++ aos 'a41d83XId0P7QQbodkPYv3zxoEL0Cq9EsN2eXZBZAwAWA'
--
::
++ oath
|_ [met=meth lur=tape et=@ en=@]
++ non (turn (rip 2 (shaw et 128 en)) |=(a=@ ~(x ne a)))
++ tim (slag 2 (scow %ui (unt et)))
::
++ bas ^- tape
;: weld (trip (cuss (trip `@t`met))) "&" (urle lur) "&"
%- urle
;: weld
"oauth_consumer_key=" (trip cok:app) "&"
"oauth_nonce=" non "&"
"oauth_signature_method=HMAC-SHA1&"
"oauth_timestamp=" tim "&"
"oauth_token=" (trip aok:app) "&"
"oauth_version=1.0"
==
==
++ sky ^- @t
(crip :(weld (urle (trip cos:app)) "&" (urle (trip aos:app))))
++ sig ^- tape
(sifo (swap 3 (hmac (swap 3 sky) (crip bas))))
++ hed
%- crip
;: weld "OAuth "
"oauth_consumer_key=" "\"" (trip cok:app) "\", "
"oauth_nonce=" "\"" non "\", "
"oauth_signature=" "\"" (urle sig) "\", "
"oauth_signature_method=\"HMAC-SHA1\", "
"oauth_timestamp=" "\"" tim "\", "
"oauth_token=" "\"" (trip aok:app) "\", "
"oauth_version=1.0"
==
--
--
==
|= [est=time eny=@uw]
|= ~
^- bowl
::::
=+ a="https://api.twitter.com/1.1/help/privacy.json"
=+ token=~(hed oath %get a est eny)
=+ ^= head
%- ~(gas by *math)
[['Authorization' [token ~]] ~]
(curl %get (req a) head ~)