bmc

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2021 License: BSD-3-Clause Imports: 7 Imported by: 3

README

Golang buymeacoffee.com API client

Go Reference BMC API reference

Library status

Implemented APIs
  • GET /v1/extras
  • GET /v1/extras/{id}
  • GET /v1/subscriptions
  • GET /v1/subscriptions/{id}
  • GET /v1/supporters
  • GET /v1/supporters/{id}
Tests coverage
git.sr.ht/~xn/bmc/client.go:28:		NewClient	100.0%
git.sr.ht/~xn/bmc/client.go:37:		newHTTPClient	100.0%
git.sr.ht/~xn/bmc/client.go:50:		parseError	100.0%
git.sr.ht/~xn/bmc/client.go:65:		Send		95.2%
git.sr.ht/~xn/bmc/errors.go:12:		Error		100.0%
git.sr.ht/~xn/bmc/extras.go:48:		GetExtra	100.0%
git.sr.ht/~xn/bmc/extras.go:57:		GetExtras	100.0%
git.sr.ht/~xn/bmc/members.go:44:	GetMember	100.0%
git.sr.ht/~xn/bmc/members.go:53:	GetMembers	100.0%
git.sr.ht/~xn/bmc/supporters.go:39:	GetSupporter	100.0%
git.sr.ht/~xn/bmc/supporters.go:48:	GetSupporters	100.0%
total:					(statements)	98.9%

check it yourself:

go test -coverprofile=bmccover.out ./...
go tool cover -func=bmccover.out
rm -f bmccover.out

How To Use

add to your project
go get git.sr.ht/~xn/bmc
create a client
client := bmc.NewClient(yourAPItoken)
note about errors

that library provides it's own error type: bmc.Error with additional info, returned by bmc api.

Error codes (exposed as Error.Code):

  • 0 - any library level issue (network request failed, timeout, cannot parse response, etc.)
  • any other - returned by BMC API

Error messages (exposed as Error.Reason):

  • error message (reason) may be set by bmc library (in case of error code 0 - any issue on library level)
  • error message (reason) may be returned by BMC API (in case of error code != 0 - any issue on BMC API level)
note about speed

BMC API uses pagination with very few elements on each page, so if you have a lot of data (client.GetMembers(), client.GetSupporters(), client.GetExtras()) may take a while. Don't forget to cache response!

Documentation

Index

Constants

View Source
const API = "https://developers.buymeacoffee.com/api/v1/"

API url

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	API    string
	Client *http.Client
	// contains filtered or unexported fields
}

Client for Buymeacoffee API

func NewClient

func NewClient(token string) *Client

NewClient for Buymeacoffee API

func (*Client) GetExtra

func (c *Client) GetExtra(purchaseID int) (*Extra, error)

GetExtra returns BMC extras purchase by purchase ID

func (*Client) GetExtras

func (c *Client) GetExtras() (Extras, error)

GetExtras returns a slice of BMC extras purchases

func (*Client) GetMember

func (c *Client) GetMember(subscriptionID int) (*Member, error)

GetMember returns a BMC subscriber by subscription ID

func (*Client) GetMembers

func (c *Client) GetMembers(status string) (Members, error)

GetMembers returns a slice of BMC subscribers

func (*Client) GetSupporter

func (c *Client) GetSupporter(supportID int) (*Supporter, error)

GetSupporter returns a BMC supporter by support ID

func (*Client) GetSupporters

func (c *Client) GetSupporters() (Supporters, error)

GetSupporters returns a slice of BMC supporters

func (*Client) Send

func (c *Client) Send(method string, endpoint string, body []byte, v interface{}) error

Send an http request to buymeacoffee API

type Error

type Error struct {
	Code   int    `json:"error_code"`
	Reason string `json:"reason"`
}

Error is a base representation of any Buymeacoffee API error

func (*Error) Error

func (e *Error) Error() string

Error returns human-readable error info

type Extra

type Extra struct {
	Extra             ExtraItem `json:"extra"`
	PayerEmail        string    `json:"payer_email"`
	PayerName         string    `json:"payer_name"`
	PurchaseAmount    string    `json:"purchase_amount"`
	PurchaseCurrency  string    `json:"purchase_currency"`
	PurchaseID        int       `json:"purchase_id"`
	PurchaseIsRevoked int       `json:"purchase_is_revoked"`
	PurchaseQuestion  string    `json:"purchase_question"`
	PurchaseUpdatedOn string    `json:"purchase_updated_on"`
	PurchasedOn       string    `json:"purchased_on"`
}

Extra is a BMC extras purchase

type ExtraItem

type ExtraItem struct {
	RewardID                  int    `json:"reward_id"`
	RewardTitle               string `json:"reward_title"`
	RewardDescription         string `json:"reward_description"`
	RewardConfirmationMessage string `json:"reward_confirmation_message"`
	RewardQuestion            string `json:"reward_question"`
	RewardUsed                int    `json:"reward_used"`
	RewardCreatedOn           string `json:"reward_created_on"`
	RewardUpdatedOn           string `json:"reward_updated_on"`
	RewardDeletedOn           string `json:"reward_deleted_on"`
	RewardIsActive            int    `json:"reward_is_active"`
	RewardImage               string `json:"reward_image"`
	RewardSlots               int    `json:"reward_slots"`
	RewardCoffeePrice         string `json:"reward_coffee_price"`
	RewardOrder               int    `json:"reward_order"`
}

ExtraItem is a BMC extras item

type Extras

type Extras []*Extra

Extras is a slice of BMC extras purchases

type Member

type Member struct {
	Country                           string `json:"country"`
	IsManualPayout                    int    `json:"is_manual_payout"`
	MembershipLevelID                 int    `json:"membership_level_id"`
	MessageVisibility                 int    `json:"message_visibility"`
	PayerEmail                        string `json:"payer_email"`
	PayerName                         string `json:"payer_name"`
	Refererr                          string `json:"referer"`
	SubscriptionCanceledOn            string `json:"subscription_canceled_on"`
	SubscriptionCoffeeNum             int    `json:"subscription_coffee_num"`
	SubscriptionCoffeePrice           string `json:"subscription_coffee_price"`
	SubscriptionCreatedOn             string `json:"subscription_created_on"`
	SubscriptionCurrency              string `json:"subscription_currency"`
	SubscriptionCurrentPeriodEnd      string `json:"subscription_current_period_end"`
	SubscriptionCurrentPeriodStart    string `json:"subscription_current_period_start"`
	SubscriptionDurationType          string `json:"subscription_duration_type"`
	SubscriptionHidden                int    `json:"subscription_hidden"`
	SubscriptionID                    int    `json:"subscription_id"`
	SubscriptionIsCanceled            int    `json:"subscription_is_canceled"`
	SubscriptionIsCanceledAtPeriodEnd bool   `json:"subscription_is_canceled_at_period_end"`
	SubscriptionMessage               string `json:"subscription_message"`
	SubscriptionUpdatedOn             string `json:"subscription_updated_on"`
	TransactionID                     string `json:"transaction_id"`
}

Member is a BMC subscriber

type Members

type Members []*Member

Members is a slcie of BMC subscribers

type Supporter

type Supporter struct {
	Country            string `json:"country"`
	IsRefunded         int    `json:"is_refunded"`
	PayerEmail         string `json:"payer_email"`
	PayerName          string `json:"payer_name"`
	PaymentPlatform    string `json:"payment_platform"`
	Refererr           string `json:"referer"`
	SupportCoffeePrice string `json:"support_coffee_price"`
	SupportCoffees     int    `json:"support_coffees"`
	SupportCreatedOn   string `json:"support_created_on"`
	SupportCurrency    string `json:"support_currency"`
	SupportEmail       string `json:"support_email"`
	SupportID          int    `json:"support_id"`
	SupportNote        string `json:"support_note"`
	SupportNotePinned  int    `json:"support_note_pinned"`
	SupportUpdatedOn   string `json:"support_updated_on"`
	SupportVisibility  int    `json:"support_visibility"`
	SupporterName      string `json:"supporter_name"`
	TransactionID      string `json:"transaction_id"`
	TransferID         string `json:"transfer_id"`
}

Supporter is BMC onetime supporter

type Supporters

type Supporters []*Supporter

Supporters is a slice of BMC supporters

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL