Files
old-nedim-vjezba-golang/main.go
2018-04-25 17:11:12 +02:00

77 lines
1.8 KiB
Go

package main
import (
"github.com/gorilla/mux"
"log"
"net/http"
"encoding/json"
"fmt"
)
type Trend [] struct {
Trends [] struct {
Name string `json:"name,omitempty"`
Url string `json:"url,omitempty"`
PromotedContent string `promoted_content:"lastname,omitempty"`
Query string `json:"query,omitempty"`
TweetVolume int `json:"tweet_volume,omitempty"`
} `json:"trends"`
}
func main() {
router := mux.NewRouter()
router.HandleFunc("/hashtags", GetHashtags).Methods("GET")
router.HandleFunc("/hashtags/{woeid}", GetHashtagFromWOEID).Methods("GET")
log.Fatal(http.ListenAndServe(":8000", router))
}
func GetHashtags(w http.ResponseWriter, r *http.Request) {
body := sendRequestToTwitter("1")
jsonResponse, err := json.Marshal(body)
if err != nil {
panic(err)
}
w.Write(jsonResponse)
}
func GetHashtagFromWOEID(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
body := sendRequestToTwitter(params["woeid"])
jsonResponse, err := json.Marshal(body)
if err != nil {
panic(err)
}
w.Write(jsonResponse)
}
func sendRequestToTwitter(WOEID string) []string {
url := "https://api.twitter.com/1.1/trends/place.json?id=" + WOEID
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer AAAAAAAAAAAAAAAAAAAAAKCtPAAAAAAAq1L5CTf40mf5K%2B7Q6QcWxsyjNvo%3DRkSK8AQBdk6latG2h47XWJVSQdn98heLv8HDLDhviicP3xvodm")
req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Accept", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
trends := Trend{}
var hashtags []string
err := json.NewDecoder(res.Body).Decode(&trends)
if err != nil {
fmt.Printf("Error while parsing data: %s", err)
}
for _, t := range trends[0].Trends {
hashtags = append(hashtags, t.Name)
println(t.Name)
}
return hashtags
}