urbit/main/app/twit/core.hook

123 lines
5.1 KiB
Plaintext
Raw Normal View History

2014-08-11 13:38:23 +04:00
:: A simple Twitter servant.
2014-08-11 08:43:43 +04:00
::
:::: /hook/core/twit/app
::
/? 314 :: need urbit 314
/+ twitter :: use twitter library
2014-08-11 13:38:23 +04:00
/= front /:/%%/front:/hymn/ :: load front page
2014-08-11 08:43:43 +04:00
::
:::: structures
::
|% :: structures
2014-08-11 13:38:23 +04:00
++ axle ,[%0 axle-a] :: application state
++ axle-a ::
%- unit ::
$: las=@da :: update time
txt=@t :: XX timeline text
jon=json :: timeline json
== ::
++ axle-old :: any historic state
$% [%0 axle-a] ::
== ::
2014-08-11 08:43:43 +04:00
++ gilt :: subscription frame
$% [%json p=json] :: json data
[%html p=@t] :: html text
[%hymn p=manx] :: html tree
== ::
++ gift :: output action
2014-08-11 12:17:21 +04:00
$% [%rust gilt] :: total update
2014-08-12 04:12:51 +04:00
[%mean p=ares] :: message failure
2014-08-11 08:43:43 +04:00
[%nice ~] :: succeed
== ::
++ move ,[p=bone q=(mold note gift)] :: output operation
++ sign :: system response
$% $: %e :: from %eyre
$% [%thou p=httr] :: HTTP response
== == == ::
++ note :: system request
$% $: %e :: through %eyre
$% [%them p=(unit hiss)] :: HTTP request
== == == ::
-- ::
::
2014-08-11 12:17:21 +04:00
:::: constants
2014-08-11 08:43:43 +04:00
::
|%
2014-08-11 12:17:21 +04:00
++ hardcoded-key :: hardcoded keys!
2014-08-11 08:43:43 +04:00
:* :- 'hDDOTPfGHGlsOUbhpy6qc6XbW'
'olCkea6wm3XG4pnVCHuPIozUF2ggH1sHjnBtuT4Ai6rCOeQGzO'
:- '2485712317-R77Lpdu5rAJadRVxTXPpnxvcwS0IfNG7QEzLPty'
'a41d83XId0P7QQbodkPYv3zxoEL0Cq9EsN2eXZBZAwAWA'
==
--
2014-08-08 11:41:54 +04:00
!:
2014-08-11 08:43:43 +04:00
:::: program
::
2014-08-11 22:51:48 +04:00
|_ $: hid=hide :: system state
2014-08-11 08:43:43 +04:00
vat=axle :: custom state
2014-08-08 11:41:54 +04:00
==
2014-08-11 13:38:23 +04:00
++ it :: internals
2014-08-11 12:17:21 +04:00
|%
2014-08-11 13:38:23 +04:00
++ line :: get timeline
2014-08-12 05:21:02 +04:00
(~(stat-home twit hardcoded-key lat.hid `@`eny.hid) ~ ~)
2014-08-11 13:38:23 +04:00
::
++ lint :: publish timeline
^- (list move)
?~ +.vat ~
%+ turn
(skim (~(tap by sup.hid)) |=([* * pax=path] ?=([%line ~] pax)))
|=([ost=bone *] `move`[ost give/rust/json/[jon.u.vat]])
::
++ post :: post a tweet
2014-08-11 12:42:23 +04:00
|= txt=cord
2014-08-11 12:17:21 +04:00
^- hiss
2014-08-12 05:21:02 +04:00
(~(stat-upda twit hardcoded-key lat.hid `@`eny.hid) [%status txt]~ ~)
2014-08-11 12:17:21 +04:00
--
2014-08-08 11:41:54 +04:00
::
2014-08-11 13:38:23 +04:00
++ page front :: build front page
2014-08-11 12:17:21 +04:00
++ prep :: load old state
2014-08-11 13:38:23 +04:00
|= old=(unit (unit axle-old))
2014-08-11 12:17:21 +04:00
[~ +>]
2014-08-11 07:49:56 +04:00
::
2014-08-11 12:17:21 +04:00
++ peer :: accept subscriber
|= [ost=bone you=ship pax=path]
^- [(list move) _+>]
:_ +>.$
2014-08-11 13:38:23 +04:00
?~ pax [ost %give %rust %hymn page]~
?> ?=([%line ~] pax)
?~ +.vat
[ost %pass /line %e [%them (some line:it)]]~
[ost %give %rust %json jon.u.vat]~
2014-08-11 12:17:21 +04:00
::
2014-08-11 13:38:23 +04:00
++ poke-json :: browser message
2014-08-11 12:17:21 +04:00
|= [ost=bone his=ship jon=json]
^- [(list move) _+>]
:_ +>.$
2014-08-11 12:42:23 +04:00
=+ txt=+:(need ((of [%tweet so] ~):jo jon))
2014-08-12 04:12:51 +04:00
~& [%tweet txt]
2014-08-11 13:38:23 +04:00
:~ [ost %pass /tweet/(scot %ud ost) %e [%them (some (post:it txt))]]
2014-08-11 12:42:23 +04:00
[ost %give %nice ~]
2014-08-11 12:17:21 +04:00
==
::
2014-08-11 13:38:23 +04:00
++ pour :: HTTP response
2014-08-28 03:00:41 +04:00
|= [ost=bone pax=path sih=sign]
2014-08-08 11:41:54 +04:00
^- [(list move) _+>]
2014-08-12 04:12:51 +04:00
:_ +>.$
2014-08-11 13:38:23 +04:00
?+ -.pax !!
%line :: timeline response
2014-08-12 04:12:51 +04:00
?. =(200 p.p.sih)
2014-08-12 05:21:02 +04:00
~& [%timeline-error p.p.sih]
2014-08-12 04:12:51 +04:00
~
2014-08-11 13:38:23 +04:00
=+ txt=`@t`q:(need r.p.sih)
=+ jon=(rash txt apex:poja) :: XX check content!!!
=+ old=&(?=(^ +.vat) =(jon jon.u.vat))
=. +.vat `[lat.hid txt jon]
2014-08-12 04:12:51 +04:00
?:(old ~ lint:it)
2014-08-11 13:38:23 +04:00
::
%tweet :: post response
=+ ost=(slav %ud -.+.pax)
2014-08-12 05:21:02 +04:00
~? !=(200 p.p.sih) [%tweet-error p.p.sih]
2014-08-12 04:12:51 +04:00
[ost %pass /line %e [%them (some line:it)]]~
2014-08-11 07:49:56 +04:00
==
2014-08-08 11:41:54 +04:00
--