|% ++ post {id/@u who/@ta now/@da txt/@t} :: recieved tweet ++ keys :: twitter-key type $: con/{tok/@t sec/@t} :: user key pair acc/{tok/@t sec/@t} :: app key pair == :: ++ command :: poke action $% {$post p/@uvI q/cord} :: post a tweet == ++ sur-twit . :: XX :: ++ reqs |% ++ args |% ++ dev @t :: device name ++ gat @t :: grant type ++ lat @t :: latitude ++ lid (list tid) :: screen names ++ lon @t :: longitude ++ lsc (list scr) :: ++ nam @t :: location name ++ pla @t :: place-id ++ scr @t :: screen name ++ slu @t :: category name ++ tid @u :: user id ++ tok @t :: oauth token ++ url @t :: callback url -- ++ param => args =< $? de gr id is la lo na os pl qq sc sd ss sl si st te ti ts ur ui us == |% ++ de {$device p/dev} ++ gr {$grant-type p/gat} ++ id {$id p/tid} ++ is {$id p/lid} ++ la {$lat p/lat} ++ lo {$long p/lon} ++ na {$name p/lid} ++ os {$source-screen-name p/scr} ++ pl {$place-id p/pla} ++ qq {$q p/@t} ++ sc {$screen-name p/scr} ++ sd ?(ui sc) ++ ss {$screen-name p/lsc} ++ sl {$slug p/slu} ++ si {$source-id p/tid} ++ st {$status p/@t} ++ te {$text p/@t} ++ ti {$target-id p/tid} ++ ts {$target-screen-name p/scr} ++ ur {$url p/url} ++ ui {$user-id p/tid} ++ us {$user-id p/lid} -- :: :: the head of every element in ++doc-data is a hoon type for an endpoint :: ++endpoint is the grand union of all of them ++ endpoint (normalize (fork-clams (heads doc-data))) ++ heads |*(a/(pole) ?~(a a [-<.a (heads +.a)])) ++ fork-clams =+ $:{a/(pair _{term *} (pole _{term *}))} |@ ++ $ ?~ q.a p.a ?(p.a (fork-clams q.a)) -- :: ++ normalize =+ $:{a/_{@ *}} |@ ++ $ |= b/* ^+ [?@(- . .)]:(a b) (a b) -- :: ++ doc-data-dry :: staticly typed for endpoint lookup =, param ^- (list {typ/_{term (list param)} met/?($get $post) pax/path}) doc-data :: ++ doc-data :: scraped from api docs, used to create types and requests :: ^- (pole {_{term _(pole *param)} ?($get $post) path}) => param :~ [ {$mentions ~} %get /statuses/mentions-timeline ] [ {$posts-by sd ~} %get /statuses/user-timeline ] [ {$timeline ~} %get /statuses/home-timeline ] [ {$retweets-mine ~} %get /statuses/retweets-of-me ] [ {$retweets-of id ~} %get /statuses/retweets/':id' ] [ {$show-status id ~} %get /statuses/show ] [ {$del-status id ~} %post /statuses/destroy/':id' ] [ {$full-status id ~} %post /statuses/looup ] [ {$update st ~} %post /statuses/update ] [ {$retweet id ~} %post /statuses/retweet/':id' ] [ {$unretweet id ~} %post /statuses/unretweet/':id' ] :: [ {$oembed-from-id id ~} %get /statuses/oembed ] [ {$oembed-from-url ur ~} %get /statuses/oembed ] [ {$retweeters id ~} %get /statuses/retweeters/ids ] [ {$search qq ~} %get /search/tweets ] [ {$all-dms ~} %get /direct-messages ] [ {$all-dms-sent ~} %get /direct-messages/sent ] [ {$show-dm id ~} %get /direct-messages/show ] [ {$del-dm id ~} %post /direct-messages/destroy ] [ {$dm sd te ~} %post /direct-messages/new ] :: [ {$blocked-retweeters ~} %get /friendships/no-retweets/ids ] [ {$followers sd ~} %get /followers/list ] [ {$follower-ids sd ~} %get /followers/ids ] [ {$friends sd ~} %get /friends/list ] [ {$friend-ids sd ~} %get /friends/ids ] [ {$friend-requests ~} %get /friendships/incoming ] [ {$friend-requesting ~} %get /friendships/outgoing ] [ {$follow sd ~} %post /friendships/create ] [ {$unfollow sd ~} %post /friendships/destroy ] [ {$set-friendship sd ~} %post /friendships/update ] [ {$relationships ?(us ss) ~} %get /friendships/lookup ] :- {$relationship ?(si os) ?(ti ts) ~} [%get /friendships/show] :: [ {$show-settings ~} %get /account/settings ] [ {$test-login ~} %get /account/verify-credentials ] [ {$set-settings ~} %post /account/settings ] [ {$set-sms-target de ~} %post /account/update-delivery-device ] [ {$set-profile ~} %post /account/update-profile ] [ {$set-colors ~} %post /account/update-profile-colors ] [ {$del-background ~} %post /account/remove-profile-banner ] :- {$set-background ~} [%post /account/update-profile-background-image] :: [ {$blocks ~} %get /blocks/list ] [ {$blocks-ids ~} %get /blocks/ids ] [ {$block sd ~} %post /blocks/create ] [ {$unblock sd ~} %post /blocks/destroy ] :: [ {$full-users ?(us ss) ~} %get /users/lookup ] [ {$user sd ~} %get /users/show ] [ {$search-users qq ~} %get /users/search ] [ {$user-contributees sd ~} %get /users/contributees ] :: undoc'd [ {$user-contributors sd ~} %get /users/contributors ] :: undoc'd [ {$user-prof sd ~} %get /users/profile-banner ] :: [ {$mute-user sd ~} %post /mutes/users/create ] [ {$unmute-user sd ~} %post /mutes/users/destroy ] [ {$muted ~} %get /mutes/users/list ] [ {$muted-ids ~} %get /mutes/users/ids ] :: [ {$suggested ~} %get /users/suggestions ] [ {$suggestion sl ~} %get /users/suggestions/':slug' ] :- {$suggestion-posts sl ~} [%get /users/suggestions/':slug'/members] :: [ {$favorites ~} %get /favorites/list ] [ {$del-favorite id ~} %post /favorites/destroy ] [ {$favorite id ~} %post /favorites/create ] :: [ {$lists ~} %get /lists/list ] [ {$lists-of sd ~} %get /lists/memberships ] [ {$lists-by sd ~} %get /lists/ownerships ] [ {$lists-subscribed sd ~} %get /lists/subscriptions ] [ {$list ~} %get /lists/show ] [ {$list-posts ~} %get /lists/statuses ] [ {$list-remove ?(us ss) ~} %post /lists/members/destroy-all ] [ {$list-subscribers ~} %get /lists/subscribers ] [ {$list-subscribe ~} %post /lists/subscribers/create ] [ {$list-unsubscribe ~} %post /lists/subscribers/destroy ] [ {$list-is-subscribed sd ~} %get /lists/subscribers/show ] [ {$list-add ?(us ss) ~} %post /lists/members/create-all ] [ {$list-is-in sd ~} %get /lists/members/show ] [ {$list-members ~} %get /lists/members ] [ {$del-list ~} %post /lists/destroy ] [ {$config-list ~} %post /lists/update ] [ {$new-list na ~} %post /lists/create ] :: [ {$saved-searches ~} %get /saved-searches/list ] [ {$full-saved-search id ~} %get /saved-searches/show/':id' ] [ {$save-search qq ~} %post /saved-searches/create ] [ {$del-saved-search id ~} %post /saved-searches/destroy/':id' ] :: [ {$full-geo id ~} %get /geo/id/':id' ] [ {$geo-reverse la lo ~} %get /geo/reverse-geocode ] [ {$search-geo ~} %get /geo/search ] [ {$geo-similar la lo na ~} %get /geo/similar-places ] [ {$trend-locations ~} %get /trends/available ] [ {$trends-at id ~} %get /trends/place ] [ {$trends-near la lo ~} %get /trends/closest ] :: [ {$user-report sd ~} %post /users/report-spam ] [ {$help-config ~} %get /help/configuration ] [ {$help-langs ~} %get /help/languages ] [ {$help-privacy ~} %get /help/privacy ] [ {$help-tos ~} %get /help/tos ] [ {$rate-limit-info ~} %get /application/rate-limit-status ] == -- --