Added hashtag enpoint

This commit is contained in:
2018-04-25 17:11:12 +02:00
parent 17b437bb67
commit 2b399be3ed
2 changed files with 55 additions and 40 deletions

View File

@@ -1,2 +1,4 @@
# nedim-vjezba-golang
nedim vjezba golang
Uses dependency `go get github.com/gorilla/mux`

85
main.go
View File

@@ -5,59 +5,72 @@ import (
"log"
"net/http"
"encoding/json"
"io/ioutil"
"fmt"
)
//"name": "#ChainedToTheRhythm",
//"url": "http://twitter.com/search?q=%23ChainedToTheRhythm",
//"promoted_content": null,
//"query": "%23ChainedToTheRhythm",
//"tweet_volume": 48857
type Tweet struct {
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 string `json:"tweet_volume,omitempty"`
TweetVolume int `json:"tweet_volume,omitempty"`
} `json:"trends"`
}
type Address struct {
City string `json:"city,omitempty"`
State string `json:"state,omitempty"`
}
var tweets []Tweet
func main() {
tweets = append(tweets, Tweet{Name: "#ChainedToTheRhythm", Url: "http://twitter.com/search?q=%23ChainedToTheRhythm", PromotedContent: "null", Query: "%23ChainedToTheRhythm" , TweetVolume: "48857"})
//people = append(people, Person{ID: "2", Firstname: "Koko", Lastname: "Doe", Address: &Address{City: "City Z", State: "State Y"}})
//people = append(people, Person{ID: "3", Firstname: "Francis", Lastname: "Sunday"})
router := mux.NewRouter()
router.HandleFunc("/hashtags", GetHastags).Methods("GET")
//router.HandleFunc("/people", GetPeople).Methods("GET")
////router.HandleFunc("/people/{id}", GetPerson).Methods("GET")
//router.HandleFunc("/people/{id}", CreatePerson).Methods("POST")
//router.HandleFunc("/people/{id}", DeletePerson).Methods("DELETE")
router.HandleFunc("/hashtags", GetHashtags).Methods("GET")
router.HandleFunc("/hashtags/{woeid}", GetHashtagFromWOEID).Methods("GET")
log.Fatal(http.ListenAndServe(":8000", router))
}
func GetHastags(w http.ResponseWriter, r *http.Request) {
func GetHashtags(w http.ResponseWriter, r *http.Request) {
resp, err := http.Get("https://api.twitter.com/1.1/trends/place.json?id=1")
body := sendRequestToTwitter("1")
jsonResponse, err := json.Marshal(body)
if err != nil {
println("There was an error")
println(err)
// handle error
panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
println(body)
json.NewEncoder(w).Encode(body)
w.Write(jsonResponse)
}
func GetPeople(w http.ResponseWriter, r *http.Request) {
//json.NewEncoder(w).Encode(people)
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
}
func CreatePerson(w http.ResponseWriter, r *http.Request) {}
func DeletePerson(w http.ResponseWriter, r *http.Request) {}