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
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: hacker-news-recent-ids ( -- seq )
 | 
			
		||||
    "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty"
 | 
			
		||||
: hacker-news-ids ( endpoint -- ids )
 | 
			
		||||
    "https://hacker-news.firebaseio.com/v0/%s.json?print=pretty" sprintf
 | 
			
		||||
    http-get nip json> ;
 | 
			
		||||
 | 
			
		||||
: hacker-news-id>json-url ( n -- url )
 | 
			
		||||
    number>string
 | 
			
		||||
    "https://hacker-news.firebaseio.com/v0/item/" ".json?print=pretty" surround ;
 | 
			
		||||
    "https://hacker-news.firebaseio.com/v0/item/%d.json?print=pretty" sprintf ;
 | 
			
		||||
 | 
			
		||||
: 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-recent-items ( n -- seq )
 | 
			
		||||
    [  hacker-news-recent-ids ] dip head hacker-news-items ;
 | 
			
		||||
: hacker-news-top-stories ( n -- seq )
 | 
			
		||||
    "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 -- )
 | 
			
		||||
    '[
 | 
			
		||||
| 
						 | 
				
			
			@ -69,8 +83,7 @@ PRIVATE>
 | 
			
		|||
        ]
 | 
			
		||||
    } cleave ;
 | 
			
		||||
 | 
			
		||||
: banner. ( -- )
 | 
			
		||||
    "Hacker News"
 | 
			
		||||
: banner. ( str -- )
 | 
			
		||||
    "http://news.ycombinator.com" >url presented associate
 | 
			
		||||
    H{
 | 
			
		||||
        { font-size 20 }
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +92,39 @@ PRIVATE>
 | 
			
		|||
        { foreground COLOR: black }
 | 
			
		||||
    } assoc-union format nl ;
 | 
			
		||||
 | 
			
		||||
: hacker-news. ( -- )
 | 
			
		||||
    30 hacker-news-recent-items
 | 
			
		||||
    banner.
 | 
			
		||||
: hacker-news-feed. ( seq -- )
 | 
			
		||||
    [ 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