hacker-news: Add more endpoints to api.
parent
3f0ff53369
commit
92648265d2
|
@ -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. ;
|
||||||
|
|
Loading…
Reference in New Issue