12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package mastodon
- import (
- "encoding/base64"
- "encoding/json"
- "errors"
- "fmt"
- "net/http"
- "os"
- )
- // Base64EncodeFileName returns the base64 data URI format string of the file with the file name.
- func Base64EncodeFileName(filename string) (string, error) {
- file, err := os.Open(filename)
- if err != nil {
- return "", err
- }
- defer file.Close()
- return Base64Encode(file)
- }
- // Base64Encode returns the base64 data URI format string of the file.
- func Base64Encode(file *os.File) (string, error) {
- fi, err := file.Stat()
- if err != nil {
- return "", err
- }
- d := make([]byte, fi.Size())
- _, err = file.Read(d)
- if err != nil {
- return "", err
- }
- return "data:" + http.DetectContentType(d) +
- ";base64," + base64.StdEncoding.EncodeToString(d), nil
- }
- // String is a helper function to get the pointer value of a string.
- func String(v string) *string { return &v }
- func parseAPIError(prefix string, resp *http.Response) error {
- errMsg := fmt.Sprintf("%s: %s", prefix, resp.Status)
- var e struct {
- Error string `json:"error"`
- }
- json.NewDecoder(resp.Body).Decode(&e)
- if e.Error != "" {
- errMsg = fmt.Sprintf("%s: %s", errMsg, e.Error)
- }
- return errors.New(errMsg)
- }
|