aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/McKael
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2018-10-19 06:24:23 -0700
committerChristine Dodrill <me@christine.website>2018-10-19 06:28:37 -0700
commit273b48a8b409126e14f8beb23cee4255d1f08a2c (patch)
treefeb316d464d92e143732ca3eac525fe4ca3cda1d /vendor/github.com/McKael
parent456deb2bbadbcc8fd218a2297ac4879c069ef0ba (diff)
downloadx-273b48a8b409126e14f8beb23cee4255d1f08a2c.tar.xz
x-273b48a8b409126e14f8beb23cee4255d1f08a2c.zip
GOPROXY means we can avoid vendoring
Diffstat (limited to 'vendor/github.com/McKael')
-rw-r--r--vendor/github.com/McKael/madon/.gitignore20
-rw-r--r--vendor/github.com/McKael/madon/.travis.yml20
-rw-r--r--vendor/github.com/McKael/madon/LICENSE22
-rw-r--r--vendor/github.com/McKael/madon/README.md46
-rw-r--r--vendor/github.com/McKael/madon/account.go527
-rw-r--r--vendor/github.com/McKael/madon/api.go230
-rw-r--r--vendor/github.com/McKael/madon/app.go99
-rw-r--r--vendor/github.com/McKael/madon/domain.go52
-rw-r--r--vendor/github.com/McKael/madon/emoji.go20
-rw-r--r--vendor/github.com/McKael/madon/favourites.go16
-rw-r--r--vendor/github.com/McKael/madon/instance.go66
-rw-r--r--vendor/github.com/McKael/madon/lists.go136
-rw-r--r--vendor/github.com/McKael/madon/login.go129
-rw-r--r--vendor/github.com/McKael/madon/madon.go43
-rw-r--r--vendor/github.com/McKael/madon/media.go108
-rw-r--r--vendor/github.com/McKael/madon/notifications.go90
-rw-r--r--vendor/github.com/McKael/madon/report.go48
-rw-r--r--vendor/github.com/McKael/madon/search.go30
-rw-r--r--vendor/github.com/McKael/madon/status.go290
-rw-r--r--vendor/github.com/McKael/madon/streams.go176
-rw-r--r--vendor/github.com/McKael/madon/timelines.go58
-rw-r--r--vendor/github.com/McKael/madon/types.go242
-rw-r--r--vendor/github.com/McKael/madon/v2/.gitignore20
-rw-r--r--vendor/github.com/McKael/madon/v2/.travis.yml19
-rw-r--r--vendor/github.com/McKael/madon/v2/LICENSE22
-rw-r--r--vendor/github.com/McKael/madon/v2/README.md49
-rw-r--r--vendor/github.com/McKael/madon/v2/account.go562
-rw-r--r--vendor/github.com/McKael/madon/v2/api.go261
-rw-r--r--vendor/github.com/McKael/madon/v2/app.go99
-rw-r--r--vendor/github.com/McKael/madon/v2/domain.go52
-rw-r--r--vendor/github.com/McKael/madon/v2/emoji.go20
-rw-r--r--vendor/github.com/McKael/madon/v2/endorsements.go46
-rw-r--r--vendor/github.com/McKael/madon/v2/go.mod14
-rw-r--r--vendor/github.com/McKael/madon/v2/go.sum24
-rw-r--r--vendor/github.com/McKael/madon/v2/instance.go42
-rw-r--r--vendor/github.com/McKael/madon/v2/lists.go136
-rw-r--r--vendor/github.com/McKael/madon/v2/login.go129
-rw-r--r--vendor/github.com/McKael/madon/v2/madon.go41
-rw-r--r--vendor/github.com/McKael/madon/v2/media.go108
-rw-r--r--vendor/github.com/McKael/madon/v2/notifications.go90
-rw-r--r--vendor/github.com/McKael/madon/v2/report.go48
-rw-r--r--vendor/github.com/McKael/madon/v2/search.go68
-rw-r--r--vendor/github.com/McKael/madon/v2/status.go309
-rw-r--r--vendor/github.com/McKael/madon/v2/streams.go177
-rw-r--r--vendor/github.com/McKael/madon/v2/suggestions.go31
-rw-r--r--vendor/github.com/McKael/madon/v2/timelines.go58
-rw-r--r--vendor/github.com/McKael/madon/v2/types.go265
47 files changed, 0 insertions, 5158 deletions
diff --git a/vendor/github.com/McKael/madon/.gitignore b/vendor/github.com/McKael/madon/.gitignore
deleted file mode 100644
index 836e7a0..0000000
--- a/vendor/github.com/McKael/madon/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Go template
-# Binaries for programs and plugins
-*.exe
-*.dll
-*.so
-*.dylib
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
-.glide/
-*.swp
-
-.idea/
-.local/
diff --git a/vendor/github.com/McKael/madon/.travis.yml b/vendor/github.com/McKael/madon/.travis.yml
deleted file mode 100644
index bd43db1..0000000
--- a/vendor/github.com/McKael/madon/.travis.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-language: go
-go:
-- "1.7"
-- "1.8"
-- "1.9"
-- "1.10"
-- master
-matrix:
- allow_failures:
- - go: master
- fast_finish: true
-branches:
- only:
- - master
-install:
-- go get golang.org/x/oauth2
-- go get github.com/pkg/errors
-- go get github.com/stretchr/testify/assert
-- go get github.com/sendgrid/rest
-- go get github.com/gorilla/websocket
diff --git a/vendor/github.com/McKael/madon/LICENSE b/vendor/github.com/McKael/madon/LICENSE
deleted file mode 100644
index f0f42d2..0000000
--- a/vendor/github.com/McKael/madon/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Ollivier Robert
-Copyright (c) 2017 Mikael Berthe <mikael@lilotux.net>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/github.com/McKael/madon/README.md b/vendor/github.com/McKael/madon/README.md
deleted file mode 100644
index f76456b..0000000
--- a/vendor/github.com/McKael/madon/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# madon
-
-Golang library for the Mastodon API
-
-[![godoc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/McKael/madon)
-[![license](https://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/McKael/madon/master/LICENSE)
-[![build](https://travis-ci.org/McKael/madon.svg?branch=master)](https://travis-ci.org/McKael/madon)
-[![Go Report Card](https://goreportcard.com/badge/github.com/McKael/madon)](https://goreportcard.com/report/github.com/McKael/madon)
-
-`madon` is a [Go](https://golang.org/) library to access the Mastondon REST API.
-
-This implementation covers 100% of the current API, including the streaming API.
-
-The [madonctl](https://github.com/McKael/madonctl) console client uses this library exhaustively.
-
-## Installation
-
-To install the library (Go >= v1.5 required):
-
- go get github.com/McKael/madon
-
-You can test it with my CLI tool:
-
- go get github.com/McKael/madonctl
-
-## Usage
-
-This section has not been written yet (PR welcome).
-
-For now please check [godoc](https://godoc.org/github.com/McKael/madon) and
-check the [madonctl](https://github.com/McKael/madonctl) project
-implementation.
-
-## History
-
-This API implementation was initially submitted as a PR for gondole.
-
-The repository is actually a fork of my gondole branch so that
-history and credits are preserved.
-
-## References
-
-- [madonctl](https://github.com/McKael/madonctl) (console client based on madon)
-- [Mastodon API documentation](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md)
-- [Mastodon Streaming API documentation](https://github.com/tootsuite/documentation/blob/master/Using-the-API/Streaming-API.md)
-- [Mastodon repository](https://github.com/tootsuite/mastodon)
diff --git a/vendor/github.com/McKael/madon/account.go b/vendor/github.com/McKael/madon/account.go
deleted file mode 100644
index a7475c6..0000000
--- a/vendor/github.com/McKael/madon/account.go
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
-Copyright 2017-2018 Mikael Berthe
-
-Licensed under the MIT license. Please see the LICENSE file is this directory.
-*/
-
-package madon
-
-import (
- "bytes"
- "encoding/base64"
- "encoding/json"
- "fmt"
- "mime/multipart"
- "net/http"
- "os"
- "strconv"
- "strings"
-
- "github.com/pkg/errors"
- "github.com/sendgrid/rest"
-)
-
-// getAccountsOptions contains option fields for POST and DELETE API calls
-type getAccountsOptions struct {
- // The ID is used for most commands
- ID int64
-
- // Following can be set to true to limit a search to "following" accounts
- Following bool
-
- // The Q field (query) is used when searching for accounts
- Q string
-
- Limit *LimitParams
-}
-
-// updateRelationship returns a Relationship entity
-// The operation 'op' can be "follow", "unfollow", "block", "unblock",
-// "mute", "unmute".
-// The id is optional and depends on the operation.
-func (mc *Client) updateRelationship(op string, id int64, params apiCallParams) (*Relationship, error) {
- var endPoint string
- method := rest.Post
- strID := strconv.FormatInt(id, 10)
-
- switch op {
- case "follow", "unfollow", "block", "unblock", "mute", "unmute":
- endPoint = "accounts/" + strID + "/" + op
- default:
- return nil, ErrInvalidParameter
- }
-
- var rel Relationship
- if err := mc.apiCall(endPoint, method, params, nil, nil, &rel); err != nil {
- return nil, err
- }
- return &rel, nil
-}
-
-// getSingleAccount returns an account entity
-// The operation 'op' can be "account", "verify_credentials",
-// "follow_requests/authorize" or // "follow_requests/reject".
-// The id is optional and depends on the operation.
-func (mc *Client) getSingleAccount(op string, id int64) (*Account, error) {
- var endPoint string
- method := rest.Get
- strID := strconv.FormatInt(id, 10)
-
- switch op {
- case "account":
- endPoint = "accounts/" + strID
- case "verify_credentials":
- endPoint = "accounts/verify_credentials"
- case "follow_requests/authorize", "follow_requests/reject":
- // The documentation is incorrect, the endpoint actually
- // is "follow_requests/:id/{authorize|reject}"
- endPoint = op[:16] + strID + "/" + op[16:]
- method = rest.Post
- default:
- return nil, ErrInvalidParameter
- }
-
- var account Account
- if err := mc.apiCall(endPoint, method, nil, nil, nil, &account); err != nil {
- return nil, err
- }
- return &account, nil
-}
-
-// getMultipleAccounts returns a list of account entities
-// If lopt.All is true, several requests will be made until the API server
-// has nothing to return.
-func (mc *Client) getMultipleAccounts(endPoint string, params apiCallParams, lopt *LimitParams) ([]Account, error) {
- var accounts []Account
- var links apiLinks
- if err := mc.apiCall(endPoint, rest.Get, params, lopt, &links, &accounts); err != nil {
- return nil, err
- }
- if lopt != nil { // Fetch more pages to reach our limit
- var accountSlice []Account
- for (lopt.All || lopt.Limit > len(accounts)) && links.next != nil {
- newlopt := links.next
- links = apiLinks{}
- if err := mc.apiCall(endPoint, rest.Get, params, newlopt, &links, &accountSlice); err != nil {
- return nil, err
- }
- accounts = append(accounts, accountSlice...)
- accountSlice = accountSlice[:0] // Clear struct
- }
- }
- return accounts, nil
-}
-
-// getMultipleAccountsHelper returns a list of account entities
-// The operation 'op' can be "followers", "following", "search", "blocks",
-// "mutes", "follow_requests".
-// The id is optional and depends on the operation.
-// If opts.All is true, several requests will be made until the API server
-// has nothing to return.
-func (mc *Client) getMultipleAccountsHelper(op string, opts *getAccountsOptions) ([]Account, error) {
- var endPoint string
- var lopt *LimitParams
-
- if opts != nil {
- lopt = opts.Limit
- }
-
- switch op {
- case "followers", "following":
- if opts == nil || opts.ID < 1 {
- return []Account{}, ErrInvalidID
- }
- endPoint = "accounts/" + strconv.FormatInt(opts.ID, 10) + "/" + op
- case "follow_requests", "blocks", "mutes":
- endPoint = op
- case "search":
- if opts == nil || opts.Q == "" {
- return []Account{}, ErrInvalidParameter
- }
- endPoint = "accounts/" + op
- case "reblogged_by", "favourited_by":
- if opts == nil || opts.ID < 1 {
- return []Account{}, ErrInvalidID
- }
- endPoint = "statuses/" + strconv.FormatInt(opts.ID, 10) + "/" + op
- default:
- return nil, ErrInvalidParameter
- }
-
- // Handle target-specific query parameters
- params := make(apiCallParams)
- if op == "search" {
- params["q"] = opts.Q
- if opts.Following {
- params["following"] = "true"
- }
- }
-
- return mc.getMultipleAccounts(endPoint, params, lopt)
-}
-
-// GetAccount returns an account entity
-// The returned value can be nil if there is an error or if the
-// requested ID does not exist.
-func (mc *Client) GetAccount(accountID int64) (*Account, error) {
- account, err := mc.getSingleAccount("account", accountID)
- if err != nil {
- return nil, err
- }
- if account != nil && account.ID == 0 {
- return nil, ErrEntityNotFound
- }
- return account, nil
-}
-
-// GetCurrentAccount returns the current user account
-func (mc *Client) GetCurrentAccount() (*Account, error) {
- account, err := mc.getSingleAccount("verify_credentials", 0)
- if err != nil {
- return nil, err
- }
- if account != nil && account.ID == 0 {
- return nil, ErrEntityNotFound
- }
- return account, nil
-}
-
-// GetAccountFollowers returns the list of accounts following a given account
-func (mc *Client) GetAccountFollowers(accountID int64, lopt *LimitParams) ([]Account, error) {
- o := &getAccountsOptions{ID: accountID, Limit: lopt}
- return mc.getMultipleAccountsHelper("followers", o)
-}
-
-// GetAccountFollowing returns the list of accounts a given account is following
-func (mc *Client) GetAccountFollowing(accountID int64, lopt *LimitParams) ([]Account, error) {
- o := &getAccountsOptions{ID: accountID, Limit: lopt}
- return mc.getMultipleAccountsHelper("following", o)
-}
-
-// FollowAccount follows an account
-// 'reblogs' can be used to specify if boots should be displayed or hidden.
-func (mc *Client) FollowAccount(accountID int64, reblogs *bool) (*Relationship, error) {
- var params apiCallParams
- if reblogs != nil {
- params = make(apiCallParams)
- if *reblogs {
- params["reblogs"] = "true"
- } else {
- params["reblogs"] = "false"
- }
- }
- rel, err := mc.updateRelationship("follow", accountID, params)
- if err != nil {
- return nil, err
- }
- if rel == nil {
- return nil, ErrEntityNotFound
- }
- return rel, nil
-}
-
-// UnfollowAccount unfollows an account
-func (mc *Client) UnfollowAccount(accountID int64) (*Relationship, error) {
- rel, err := mc.updateRelationship("unfollow", accountID, nil)
- if err != nil {
- return nil, err
- }
- if rel == nil {
- return nil, ErrEntityNotFound
- }
- return rel, nil
-}
-
-// FollowRemoteAccount follows a remote account
-// The parameter 'uri' is a URI (e.g. "username@domain").
-func (mc *Client) FollowRemoteAccount(uri string) (*Account, error) {
- if uri == "" {
- return nil, ErrInvalidID
- }
-
- params := make(apiCallParams)
- params["uri"] = uri
-
- var account Account
- if err := mc.apiCall("follows", rest.Post, params, nil, nil, &account); err != nil {
- return nil, err
- }
- if account.ID == 0 {
- return nil, ErrEntityNotFound
- }
- return &account, nil
-}
-
-// BlockAccount blocks an account
-func (mc *Client) BlockAccount(accountID int64) (*Relationship, error) {
- rel, err := mc.updateRelationship("block", accountID, nil)
- if err != nil {
- return nil, err
- }
- if rel == nil {
- return nil, ErrEntityNotFound
- }
- return rel, nil
-}
-
-// UnblockAccount unblocks an account
-func (mc *Client) UnblockAccount(accountID int64) (*Relationship, error) {
- rel, err := mc.updateRelationship("unblock", accountID, nil)
- if err != nil {
- return nil, err
- }
- if rel == nil {
- return nil, ErrEntityNotFound
- }
- return rel, nil
-}
-
-// MuteAccount mutes an account
-// Note that with current Mastodon API, muteNotifications defaults to true
-// when it is not provided.
-func (mc *Client) MuteAccount(accountID int64, muteNotifications *bool) (*Relationship, error) {
- var params apiCallParams
-
- if muteNotifications != nil {
- params = make(apiCallParams)
- if *muteNotifications {
- params["notifications"] = "true"
- } else {
- params["notifications"] = "false"
- }
- }
-
- rel, err := mc.updateRelationship("mute", accountID, params)
- if err != nil {
- return nil, err
- }
- if rel == nil {
- return nil, ErrEntityNotFound
- }
- return rel, nil
-}
-
-// UnmuteAccount unmutes an account
-func (mc *Client) UnmuteAccount(accountID int64) (*Relationship, error) {
- rel, err := mc.updateRelationship("unmute", accountID, nil)
- if err != nil {
- return nil, err
- }
- if rel == nil {
- return nil, ErrEntityNotFound
- }
- return rel, nil
-}
-
-// SearchAccounts returns a list of accounts matching the query string
-// The lopt parameter is optional (can be nil) or can be used to set a limit.
-func (mc *Client) SearchAccounts(query string, following bool, lopt *LimitParams) ([]Account, error) {
- o := &getAccountsOptions{Q: query, Limit: lopt, Following: following}
- return mc.getMultipleAccountsHelper("search", o)
-}
-
-// GetBlockedAccounts returns the list of blocked accounts
-// The lopt parameter is optional (can be nil).
-func (mc *Client) GetBlockedAccounts(lopt *LimitParams) ([]Account, error) {
- o := &getAccountsOptions{Limit: lopt}
- return mc.getMultipleAccountsHelper("blocks", o)
-}
-
-// GetMutedAccounts returns the list of muted accounts
-// The lopt parameter is optional (can be nil).
-func (mc *Client) GetMutedAccounts(lopt *LimitParams) ([]Account, error) {
- o := &getAccountsOptions{Limit: lopt}
- return mc.getMultipleAccountsHelper("mutes", o)
-}
-
-// GetAccountFollowRequests returns the list of follow requests accounts
-// The lopt parameter is optional (can be nil).
-func (mc *Client) GetAccountFollowRequests(lopt *LimitParams) ([]Account, error) {
- o := &getAccountsOptions{Limit: lopt}
- return mc.getMultipleAccountsHelper("follow_requests", o)
-}
-
-// GetAccountRelationships returns a list of relationship entities for the given accounts
-func (mc *Client) GetAccountRelationships(accountIDs []int64) ([]Relationship, error) {
- if len(accountIDs) < 1 {
- return nil, ErrInvalidID
- }
-
- params := make(apiCallParams)
- for i, id := range accountIDs {
- if id < 1 {
- return nil, ErrInvalidID
- }
- qID := fmt.Sprintf("id[%d]", i+1)
- params[qID] = strconv.FormatInt(id, 10)
- }
-
- var rl []Relationship
- if err := mc.apiCall("accounts/relationships", rest.Get, params, nil, nil, &rl); err != nil {
- return nil, err
- }
- return rl, nil
-}
-
-// GetAccountStatuses returns a list of status entities for the given account
-// If onlyMedia is true, returns only statuses that have media attachments.
-// If onlyPinned is true, returns only statuses that have been pinned.
-// If excludeReplies is true, skip statuses that reply to other statuses.
-// If lopt.All is true, several requests will be made until the API server
-// has nothing to return.
-// If lopt.Limit is set (and not All), several queries can be made until the
-// limit is reached.
-func (mc *Client) GetAccountStatuses(accountID int64, onlyPinned, onlyMedia, excludeReplies bool, lopt *LimitParams) ([]Status, error) {
- if accountID < 1 {
- return nil, ErrInvalidID
- }
-
- endPoint := "accounts/" + strconv.FormatInt(accountID, 10) + "/" + "statuses"
- params := make(apiCallParams)
- if onlyMedia {
- params["only_media"] = "true"
- }
- if onlyPinned {
- params["pinned"] = "true"
- }
- if excludeReplies {
- params["exclude_replies"] = "true"
- }
-
- return mc.getMultipleStatuses(endPoint, params, lopt)
-}
-
-// FollowRequestAuthorize authorizes or rejects an account follow-request
-func (mc *Client) FollowRequestAuthorize(accountID int64, authorize bool) error {
- endPoint := "follow_requests/reject"
- if authorize {
- endPoint = "follow_requests/authorize"
- }
- _, err := mc.getSingleAccount(endPoint, accountID)
- return err
-}
-
-// UpdateAccount updates the connected user's account data
-// The fields avatar & headerImage can contain base64-encoded images; if
-// they do not (that is; if they don't contain ";base64,"), they are considered
-// as file paths and their content will be encoded.
-// Setting 'locked' to true means all followers should be approved.
-// All fields can be nil, in which case they are not updated.
-// displayName and note can be set to "" to delete previous values;
-// I'm not sure images can be deleted -- only replaced AFAICS.
-func (mc *Client) UpdateAccount(displayName, note, avatar, headerImage *string, locked *bool) (*Account, error) {
- const endPoint = "accounts/update_credentials"
- params := make(apiCallParams)
-
- if displayName != nil {
- params["display_name"] = *displayName
- }
- if note != nil {
- params["note"] = *note
- }
- if locked != nil {
- if *locked {
- params["locked"] = "true"
- } else {
- params["locked"] = "false"
- }
- }
-
- var err error
- avatar, err = fileToBase64(avatar, nil)
- if err != nil {
- return nil, err
- }
- headerImage, err = fileToBase64(headerImage, nil)
- if err != nil {
- return nil, err
- }
-
- var formBuf bytes.Buffer
- w := multipart.NewWriter(&formBuf)
-
- if avatar != nil {
- w.WriteField("avatar", *avatar)
- }
- if headerImage != nil {
- w.WriteField("header", *headerImage)
- }
- w.Close()
-
- // Prepare the request
- req, err := mc.prepareRequest(endPoint, rest.Patch, params)
- if err != nil {
- return nil, errors.Wrap(err, "prepareRequest failed")
- }
- req.Headers["Content-Type"] = w.FormDataContentType()
- req.Body = formBuf.Bytes()
-
- // Make API call
- r, err := restAPI(req)
- if err != nil {
- return nil, errors.Wrap(err, "account update failed")
- }
-
- // Check for error reply
- var errorResult Error
- if err := json.Unmarshal([]byte(r.Body), &errorResult); err == nil {
- // The empty object is not an error
- if errorResult.Text != "" {
- return nil, errors.New(errorResult.Text)
- }
- }
-
- // Not an error reply; let's unmarshal the data
- var account Account
- if err := json.Unmarshal([]byte(r.Body), &account); err != nil {
- return nil, errors.Wrap(err, "cannot decode API response")
- }
- return &account, nil
-}
-
-// fileToBase64 is a helper function to convert a file's contents to
-// base64-encoded data. Is the data string already contains base64 data, it
-// is not modified.
-// If contentType is nil, it is detected.
-func fileToBase64(data, contentType *string) (*string, error) {
- if data == nil {
- return nil, nil
- }
-
- if *data == "" {
- return data, nil
- }
-
- if strings.Contains(*data, ";base64,") {
- return data, nil
- }
-
- // We need to convert the file and file name to base64
-
- file, err := os.Open(*data)
- if err != nil {
- return nil, err
- }
- defer file.Close()
-
- fStat, err := file.Stat()
- if err != nil {
- return nil, err
- }
-
- buffer := make([]byte, fStat.Size())
- _, err = file.Read(buffer)
- if err != nil {
- return nil, err
- }
-
- var cType string
- if contentType == nil || *contentType == "" {
- cType = http.DetectContentType(buffer[:512])
- } else {
- cType = *contentType
- }
- contentData := base64.StdEncoding.EncodeToString(buffer)
- newData := "data:" + cType + ";base64," + contentData
- return &newData, nil
-}
diff --git a/vendor/github.com/McKael/madon/api.go b/vendor/github.com/McKael/madon/api.go
deleted file mode 100644
index 0f63134..0000000
--- a/vendor/github.com/McKael/madon/api.go
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
-Copyright 2017-2018 Mikael Berthe
-Copyright 2017 Ollivier Robert
-
-Licensed under the MIT license. Please see the LICENSE file is this directory.
-*/
-
-package madon
-
-import (
- "bytes"
- "encoding/json"
- "fmt"
- "net/http"
- "net/url"
- "regexp"
- "strconv"
- "strings"
-
- "github.com/pkg/errors"
- "github.com/sendgrid/rest"
-)
-
-type apiLinks struct {
- next, prev *LimitParams
-}
-
-func parseLink(links []string) (*apiLinks, error) {
- if len(links) == 0 {
- return nil, nil
- }
-
- al := new(apiLinks)
- linkRegex := regexp.MustCompile(`<([^>]+)>; rel="([^"]+)`)
- for _, l := range links {
- m := linkRegex.FindAllStringSubmatch(l, -1)
- for _, submatch := range m {
- if len(submatch) != 3 {
- continue
- }
- // Parse URL
- u, err := url.Parse(submatch[1])
- if err != nil {
- return al, err
- }
- var lp *LimitParams
- since := u.Query().Get("since_id")
- max := u.Query().Get("max_id")
- lim := u.Query().Get("limit")
- if since == "" && max == "" {
- continue
- }
- lp = new(LimitParams)
- if since != "" {
- lp.SinceID, err = strconv.ParseInt(since, 10, 64)
- if err != nil {
- return al, err
- }
- }
- if max != "" {
- lp.MaxID, e