blob: afc8a64d972526e3667ca79e36ca1d56837e58ac [file] [log] [blame]
// +build ignore,OMIT
package main
import (
"encoding/json"
"errors"
"fmt"
"log"
"net/http"
)
func main() {
items, err := Get("golang") // HL
if err != nil {
log.Fatal(err)
}
for _, item := range items { // HL
fmt.Println(item.Title)
}
}
type Response struct {
Data struct {
Children []struct {
Data Item
}
}
}
type Item struct {
Title string
URL string
}
func Get(reddit string) ([]Item, error) {
url := fmt.Sprintf("http://reddit.com/r/%s.json", reddit) // HLurl
resp, err := http.Get(url) // HLget
if err != nil {
return nil, err // HLreturn
}
defer resp.Body.Close() // HLclose
if resp.StatusCode != http.StatusOK { // HLstatus
return nil, errors.New(resp.Status) // HLerrors
}
r := new(Response) // HLdecode
err = json.NewDecoder(resp.Body).Decode(r) // HLdecode
if err != nil {
return nil, err // HLreturn
}
items := make([]Item, len(r.Data.Children)) // HLprepare
for i, child := range r.Data.Children { // HLconvert
items[i] = child.Data // HLconvert
} // HLconvert
return items, nil // HLreturn
}