dev-client-go is a client library for the Forem (dev.to) developer api written in Go. It provides fully typed methods for every operation you can carry out with the current api (beta)(0.9.7)
Go version >= 1.13
$ go get github.com/Mayowa-Ojo/dev-client-go
Import the package and initialize a new client with your auth token(api-key). To get a token, see the authentication docs
package main
import (
dev "github.com/Mayowa-Ojo/dev-client-go"
)
func main() {
token := <your-api-key>
client, err := dev.NewClient(token)
if err != nil {
// handle err
}
}
Examples on basic usage for some of the operations you can carry out.
Articles [API doc]
Articles are all the posts that users create on DEV that typically show up in the feed.
Example:
Get published articles
query parameters gives you options to filter the results
// ...
// fetch 10 published articles
articles, err := client.GetPublishedArticles(
dev.ArticleQueryParams{
PerPage: 10
}
)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Articles: \n%+v", articles)
// ...
Create an article
you can pass the article content as string by setting the Article.Body
field, or as a markdown file by passing the filepath
as a second parameter
// ...
payload := dev.ArticleBodySchema{}
payload.Article.Title = "The crust of structs in Go"
payload.Article.Published = false
payload.Article.Tags = []string{"golang"}
article, err := client.CreateArticle(payload, "article_sample.md")
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Article: \n%+v", article)
// ...
Organizations [API doc]
Example:
Get an organization
// ...
organization, err := client.GetOrganization(orgname)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Organization: \n%+v", organization)
// ...
Get users in an organization
// ...
users, err := client.GetOrganizationUsers(
orgname,
dev.OrganizationQueryParams{
Page: 1,
PerPage: 5,
},
)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Users: \n%+v", users)
// ...
Comments [API doc]
Example:
Get comments for article/podcast
// ...
comments, err := client.GetComments(
dev.CommentQueryParams{
ArticleID: articleID,
},
)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Comments: \n%+v", comments)
// ...
Get a single comment
// ...
comment, err := client.GetComment(commentID)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Comment: \n%+v", comment)
// ...
Listings [API doc]
Example:
Get published listings
// ...
listings, err := client.GetPublishedListings(
dev.ListingQueryParams{
PerPage: 5,
Category: "cfp",
},
)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Listings: \n%+v", listings)
// ...
Get a single listing
// ...
listing, err := client.GetListingByID(listingID)
if err != nil {
fmt.Println(err.Error())
}
fmt.Printf("Listings: \n%+v", listings)
// ...
Here's a list of all methods matching every operation currently supported. Clicking them will also take you to the location in the test file to see usage examples.
[Articles]
[Comments]
[Listings]
[Organizations]
[Podcasts]
[ProfileImage]
[Tags]
[Users]
[Webhooks]