An open API service indexing awesome lists of open source software.

https://github.com/barthr/newsapi

Go client for newsapi (https://newsapi.org/)
https://github.com/barthr/newsapi

go golang newsapi

Last synced: 5 months ago
JSON representation

Go client for newsapi (https://newsapi.org/)

Awesome Lists containing this project

README

          



# NewsAPI Go Client

[![GoDoc](https://godoc.org/github.com/golang/gddo?status.svg)](http://pkg.go.dev/github.com/barthr/newsapi) [![Build Status](https://travis-ci.org/barthr/newsapi.svg?branch=master)](https://travis-ci.org/barthr/newsapi) [![codecov](https://codecov.io/gh/barthr/newsapi/branch/master/graph/badge.svg)](https://codecov.io/gh/barthr/newsapi)
[![Golangci](https://golangci.com/badges/github.com/barthr/newsapi.svg)](https://golangci.com/r/github.com/barthr/newsapi)


Go client for communicating with the newsapi's api.

## Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

### Prerequisites

```
go get github.com/barthr/newsapi
```

Next, register for free at (https://newsapi.org/register), get yourself a free api key and keep it somewhere safe.

## Examples

### Retrieving all sources

```go
package main

import (
"fmt"
"net/http"
"context"
"github.com/barthr/newsapi"
)

func main() {
c := newsapi.NewClient("", newsapi.WithHTTPClient(http.DefaultClient))

sources, err := c.GetSources(context.Background(), nil)

if err != nil {
panic(err)
}

for _, s := range sources.Sources {
fmt.Println(s.Description)
}
}
```

### Retrieving all sources for a specific country (Great Britain in this case)

```go
package main

import (
"fmt"
"net/http"
"context"

"github.com/barthr/newsapi"
)

func main() {
c := newsapi.NewClient("", newsapi.WithHTTPClient(http.DefaultClient))

sources, err := c.GetSources(context.Background(), &newsapi.SourceParameters{
Country: "gb",
})

if err != nil {
panic(err)
}

for _, s := range sources.Sources {
fmt.Println(s.Name)
}
}
```

### Retrieving top headlines

```go
package main

import (
"fmt"
"net/http"
"context"

"github.com/barthr/newsapi"
)

func main() {
c := newsapi.NewClient("", newsapi.WithHTTPClient(http.DefaultClient))

articles, err := c.GetTopHeadlines(context.Background(), &newsapi.TopHeadlineParameters{
Sources: []string{ "cnn", "time" },
})

if err != nil {
panic(err)
}

for _, s := range articles.Articles {
fmt.Printf("%+v\n\n", s)
}
}
```

### Retrieving all articles

```go
package main

import (
"fmt"
"net/http"
"context"

"github.com/barthr/newsapi"
)

func main() {
c := newsapi.NewClient("", newsapi.WithHTTPClient(http.DefaultClient))

articles, err := c.GetEverything(context.Background(), &newsapi.EverythingParameters{
Sources: []string{ "cnn", "time" },
})

if err != nil {
panic(err)
}

for _, s := range articles.Articles {
fmt.Printf("%+v\n\n", s)
}
}
```

## License

This project is licensed under the MIT License

## Acknowledgments

* Inspired by github golang client