hacker-news: Add more endpoints to api.

windows-drag
Doug Coleman 2019-03-01 22:26:14 -06:00
parent 3f0ff53369
commit 92648265d2
1 changed files with 58 additions and 13 deletions

View File

@ -9,20 +9,34 @@ kernel make math math.parser sequences ui urls vocabs ;
IN: hacker-news IN: hacker-news
<PRIVATE <PRIVATE
: hacker-news-ids ( endpoint -- ids )
: hacker-news-recent-ids ( -- seq ) "https://hacker-news.firebaseio.com/v0/%s.json?print=pretty" sprintf
"https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty"
http-get nip json> ; http-get nip json> ;
: hacker-news-id>json-url ( n -- url ) : hacker-news-id>json-url ( n -- url )
number>string "https://hacker-news.firebaseio.com/v0/item/%d.json?print=pretty" sprintf ;
"https://hacker-news.firebaseio.com/v0/item/" ".json?print=pretty" surround ;
: hacker-news-items ( seq -- seq' ) : hacker-news-items ( n endpoint -- seq' )
hacker-news-ids swap short head
[ hacker-news-id>json-url http-get nip json> ] parallel-map ; [ hacker-news-id>json-url http-get nip json> ] parallel-map ;
: hacker-news-recent-items ( n -- seq ) : hacker-news-top-stories ( n -- seq )
[ hacker-news-recent-ids ] dip head hacker-news-items ; "topstories" hacker-news-items ;
: hacker-news-new-stories ( n -- seq )
"newstories" hacker-news-items ;
: hacker-news-best-stories ( n -- seq )
"beststories" hacker-news-items ;
: hacker-news-ask-stories ( n -- seq )
"askstories" hacker-news-items ;
: hacker-news-show-stories ( n -- seq )
"showstories" hacker-news-items ;
: hacker-news-job-stories ( n -- seq )
"jobstories" hacker-news-items ;
: write-title ( title url -- ) : write-title ( title url -- )
'[ '[
@ -69,8 +83,7 @@ PRIVATE>
] ]
} cleave ; } cleave ;
: banner. ( -- ) : banner. ( str -- )
"Hacker News"
"http://news.ycombinator.com" >url presented associate "http://news.ycombinator.com" >url presented associate
H{ H{
{ font-size 20 } { font-size 20 }
@ -79,7 +92,39 @@ PRIVATE>
{ foreground COLOR: black } { foreground COLOR: black }
} assoc-union format nl ; } assoc-union format nl ;
: hacker-news. ( -- ) : hacker-news-feed. ( seq -- )
30 hacker-news-recent-items
banner.
[ 1 + post. ] each-index ; [ 1 + post. ] each-index ;
: hacker-news. ( str seq -- )
[ banner. ]
[ hacker-news-feed. ] bi* ;
: hacker-news-top. ( -- )
"Hacker News - Top"
30 hacker-news-top-stories
hacker-news. ;
: hacker-news-new. ( -- )
"Hacker News - New"
50 hacker-news-new-stories
hacker-news. ;
: hacker-news-best. ( -- )
"Hacker News - Best"
50 hacker-news-best-stories
hacker-news. ;
: hacker-news-ask. ( -- )
"Hacker News - Ask"
50 hacker-news-ask-stories
hacker-news. ;
: hacker-news-show. ( -- )
"Hacker News - Show"
50 hacker-news-show-stories
hacker-news. ;
: hacker-news-job. ( -- )
"Hacker News - Job"
50 hacker-news-job-stories
hacker-news. ;