Skip to content

Commit

Permalink
fetch and parse
Browse files Browse the repository at this point in the history
  • Loading branch information
azimut committed Sep 1, 2021
1 parent 000ea9c commit 524665f
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 10 deletions.
14 changes: 9 additions & 5 deletions cmd/twitterview/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ type options struct {
}

var opt options
var url string

func init() {
flag.StringVar(&opt.userAgent, "A", "CliView/0.1", "default User-Agent sent")
flag.DurationVar(&opt.timeout, "t", time.Second*5, "timeout in seconds")
flag.IntVar(&opt.width, "w", 0, "fixed with, defaults to console width")
flag.StringVar(&opt.userAgent, "A", "Wget", "default User-Agent sent")
flag.DurationVar(&opt.timeout, "t", time.Second*5, "timeout in seconds")
}

func usage() {
Expand All @@ -31,7 +32,10 @@ func usage() {
func main() {
flag.Parse()
flag.Usage = usage
t := twitter.Tweet{}
t.GetHeader("what is this")
println("HELP ME")
url = "https://twitter.com/vickyguareschi/status/1432922904556146691"
res, err := twitter.Fetch(url, opt.userAgent, opt.timeout)
if err != nil {
panic(err)
}
fmt.Println(res)
}
2 changes: 1 addition & 1 deletion internal/fetch/fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ func getResponse(req *http.Request, timeout time.Duration) (*http.Response, erro
if err != nil {
return nil, err
}
defer resp.Body.Close()
return resp, nil
}

Expand All @@ -33,6 +32,7 @@ func handleResponse(resp *http.Response) (string, error) {
if b, err := ioutil.ReadAll(resp.Body); err == nil {
return string(b), nil
}
defer resp.Body.Close()
return "", fmt.Errorf("no body read")
}

Expand Down
24 changes: 20 additions & 4 deletions internal/twitter/tweet.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
package twitter

type Tweet struct {
}
import (
"encoding/json"
"time"

"github.com/azimut/cli-view/internal/fetch"
)

func (t Tweet) GetHeader(url string) {
println(url)
func Fetch(url, ua string, timeout time.Duration) (tweet *Embedded, err error) {
url, err = EffectiveUrl(url)
if err != nil {
return nil, err
}
res, err := fetch.Fetch(url, ua, timeout)
if err != nil {
return nil, err
}
b := []byte(res)
if err != json.Unmarshal(b, &tweet) {
return nil, err
}
return
}
22 changes: 22 additions & 0 deletions internal/twitter/validate.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package twitter

import (
"errors"
"net/url"
)

const prefix = "https://publish.twitter.com/oembed?url="

func EffectiveUrl(rawUrl string) (string, error) {
uri, err := url.Parse(rawUrl)
if err != nil {
return "", err
}
if uri.Host == "m.twitter.com" || uri.Host == "mobile.twitter.com" {
uri.Host = "twitter.com"
}
if uri.Host != "twitter.com" {
return "", errors.New("invalid hostname")
}
return prefix + uri.String(), nil
}

0 comments on commit 524665f

Please sign in to comment.