Files
m3o-go/news/news.go
2021-12-29 13:41:36 +00:00

70 lines
1.6 KiB
Go
Executable File

package news
import (
"go.m3o.com/client"
)
type News interface {
Headlines(*HeadlinesRequest) (*HeadlinesResponse, error)
}
func NewNewsService(token string) *NewsService {
return &NewsService{
client: client.NewClient(&client.Options{
Token: token,
}),
}
}
type NewsService struct {
client *client.Client
}
// Get the latest news headlines
func (t *NewsService) Headlines(request *HeadlinesRequest) (*HeadlinesResponse, error) {
rsp := &HeadlinesResponse{}
return rsp, t.client.Call("news", "Headlines", request, rsp)
}
type Article struct {
// categories
Categories []string `json:"categories"`
// article description
Description string `json:"description"`
// article id
Id string `json:"id"`
// image url
ImageUrl string `json:"image_url"`
// related keywords
Keywords string `json:"keywords"`
// the article language
Language string `json:"language"`
// the locale
Locale string `json:"locale"`
// time it was published
PublishedAt string `json:"published_at"`
// first 60 characters of article body
Snippet string `json:"snippet"`
// source of news
Source string `json:"source"`
// article title
Title string `json:"title"`
// url of the article
Url string `json:"url"`
}
type HeadlinesRequest struct {
// date published on in YYYY-MM-DD format
Date string `json:"date"`
// comma separated list of languages to retrieve in e.g en,es
Language string `json:"language"`
// comma separated list of countries to include e.g us,ca
Locale string `json:"locale"`
}
type HeadlinesResponse struct {
Articles []Article `json:"articles"`
}