diff --git a/.gitignore b/.gitignore index a1338d6..ffaadc1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ *.so *.dylib +*.idea + # Test binary, build with `go test -c` *.test diff --git a/README.md b/README.md index 455b60d..f69f591 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # nedim-vjezba-golang nedim vjezba golang + +Uses dependency `go get github.com/gorilla/mux` diff --git a/main.go b/main.go new file mode 100644 index 0000000..fdced94 --- /dev/null +++ b/main.go @@ -0,0 +1,76 @@ +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 +}