codeship-go alternatives and similar packages
Based on the "Third-party APIs" category.
Alternatively, view codeship-go alternatives based on common mentions on social networks and blogs.
-
go-openai
OpenAI ChatGPT, GPT-3, GPT-4, DALL·E, Whisper API wrapper for Go -
goamz
Popular fork of goamz which adds some missing API calls to certain packages. -
webhooks
:fishing_pole_and_fish: Webhook receiver for GitHub, Bitbucket, GitLab, Gogs -
githubql
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). -
twitter-scraper
Scrape the Twitter Frontend API without authentication with Golang. -
geo-golang
Go library to access geocoding and reverse geocoding APIs -
lark
Feishu(飞书)/Lark Open API Go SDK, Support ALL Open API and Event Callback. -
openaigo
OpenAI GPT3/3.5 and GPT4 ChatGPT API Client Library for Go, simple, less dependencies, and well-tested -
gostorm
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells. -
hipchat (xmpp)
A golang package to communicate with HipChat over XMPP -
clarifai
DEPRECATED: please use https://github.com/Clarifai/clarifai-go-grpc -
go-trending
Go library for accessing trending repositories and developers at Github. -
go-lark
An easy-to-use SDK for Feishu and Lark Open Platform (Messaging API only) -
hipchat
This project implements a Go client library for the Hipchat API. -
simples3
Simple no frills AWS S3 Golang Library using REST with V4 Signing (without AWS Go SDK) -
go-tgbot
Golang telegram bot API wrapper, session-based router and middleware -
cachet
Go(lang) client library for Cachet (open source status page system). -
go-postman-collection
Go module to work with Postman Collections
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of codeship-go or a related project?
README
Codeship API v2 Client for Go
[Codeship](logo.png)
Codeship API v2 client for Go.
Documentation
https://godoc.org/github.com/codeship/codeship-go
Usage
go get -u github.com/codeship/codeship-go
Package codeship
provides a client for using the Codeship API v2.
import codeship "github.com/codeship/codeship-go"
Create a new API Client:
auth := codeship.NewBasicAuth("username", "password")
client, err := codeship.New(auth)
You must then scope the client to a single Organization that you have access to:
org, err := client.Organization(ctx, "codeship")
You can then perform calls to the API on behalf of an Organization:
projects, err := org.ListProjects(ctx)
Authentication
Authentication is handled automatically via the API Client using the provided authentication mechanism.
If you would like to manually re-authenticate, you may do this by calling the Authenticate
method on the client
:
err := client.Authenticate(ctx)
Two-Factor Authentication
Codeship now supports Two-Factor Authentication (2FA).
However, it is currently not possible to use 2FA with the API. If you try to authenticate via this client with a user that has 2FA enabled you will get the following error:
authentication failed: your account has two-factor authentication enabled, which is not possible to support with the API. Disable two factor authentication or create a dedicated API user without it enabled.
You must disable 2FA for the user you wish to authenticate with using this client. We hope to support Personal Access Tokens in a future version of the API to mitigate this issue.
Response
All API methods also return a codeship.Response
type that contains the actual *http.Response
embedded as well as a Links
type that contains information to be used for pagination.
Pagination
Pagination is provided for all requests that can return multiple results. The methods that are able to be paginated all take a variable argument of type PaginationOption
such as: ListProjects(opts ...PaginationOption)
.
We have defined two helper functions, Page
and PerPage
, to make pagination easier.
Usage is as follows:
// defaults to first page with page_size of 30
projects, resp, err := org.ListProjects(ctx)
// paging forwards with 50 results per page
for {
if resp.IsLastPage() || resp.Next == "" {
break
}
next, _ := resp.NextPage()
projects, resp, _ = org.ListProjects(ctx, codeship.Page(next), codeship.PerPage(50))
}
// paging backwards with 50 results per page
for {
if current, _ := resp.CurrentPage(); current == 1 || resp.Previous == "" {
break
}
prev, _ := resp.PreviousPage()
projects, resp, _ = org.ListProjects(ctx, codeship.Page(prev), codeship.PerPage(50))
}
Logging
You can enable verbose logging of all HTTP requests/responses by configuring the client
via the functional option Verbose(verbose bool)
when instantiating the client:
auth := codeship.NewBasicAuth("username", "password")
client, err := codeship.New(auth, codeship.Verbose(true))
Bring your own Logger
The default logger logs to STDOUT but can be replaced by any type that fulfills the StdLogger
interface:
// StdLogger allows you to bring your own log implementation for logging
type StdLogger interface {
Println(...interface{})
}
Example:
import "github.com/sirupsen/logrus"
var (
logger = logrus.New()
auth = codeship.NewBasicAuth("username", "password")
)
client, err := codeship.New(auth, codeship.Verbose(true), codeship.Logger(logger))
Contributing
This project follows Codeship's Go best practices. Please review them and make sure your PR follows the guidelines laid out before submitting.
Everyone interacting in the project and its sub-projects' codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Code of Conduct](CODE_OF_CONDUCT.md).
Setup
To install all dependencies and external tools, run:
make setup tools
Testing
make test
We aim for > 80% test coverage. You can view the current coverage info by running:
make cover
Linting
make lint
Other
$ make help
setup Install all dependencies
tools Install external tools
test Run all the tests
integration Run integration tests
cover Run all the tests and opens the coverage report
fmt goimports all go files
lint Run all the linters