Categorygithub.com/Mayowa-Ojo/dev-client-go
modulepackage
1.0.0
Repository: https://github.com/mayowa-ojo/dev-client-go.git
Documentation: pkg.go.dev

# README

Dev-Client-Go

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)

Installation

Go version >= 1.13

$ go get github.com/Mayowa-Ojo/dev-client-go

Usage

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
   }
}

Documentation

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)
// ...

API methods

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]

# Functions

No description provided by the author
No description provided by the author

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

Article
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
There are some inconsistencies with regards to the article schema returned when fetching articles and the schema returned when creating articles.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Type aliases

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author