mastoGem/mastoUtil.go

133 lines
3.1 KiB
Go

package main
import (
"net/http"
"log"
"encoding/json"
"io/ioutil"
"fmt"
)
func getBlog(baseURL, account string) []Blog {
if baseURL == "" || account == "" {
log.Println("baseURL or account is empty")
return nil
}
resp, err := http.Get(baseURL + "/api/v1/accounts/" + account + "/statuses?exclude_reblogs=true&exlude_replies=true")
if err != nil {
log.Println("Mastodon API request: %s", err)
return nil
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
log.Println("Mastodon API response: %s", resp.Status)
return nil
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("Mastodon response body: %s", err)
}
var blogs []Blog
json.Unmarshal(body, &blogs)
return blogs
}
func getAccount(baseURL, accountId string) (Account, error) {
if baseURL == "" || accountId == "" {
log.Println("baseURL or account is empty")
return Account{}, fmt.Errorf("baseURL or account is empty")
}
resp, err := http.Get(baseURL + "/api/v1/accounts/" + accountId)
if err != nil {
log.Println("Mastodon API request: %s", err)
return Account{}, fmt.Errorf("API request failed")
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
log.Println("Mastodon API response: %s", resp.Status)
return Account{}, fmt.Errorf("API response is not 200")
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("Mastodon response body: %s", err)
return Account{}, fmt.Errorf("Failed to read response")
}
var account Account
json.Unmarshal(body, &account)
return account, nil
}
func getToot(baseURL, tootId string) (Blog, error) {
if baseURL == "" || tootId == "" {
log.Println("baseURL or tootID is empty")
return Blog{}, fmt.Errorf("baseURL or tootID is empty")
}
resp, err := http.Get(baseURL + "/api/v1/statuses/" + tootId)
if err != nil {
log.Println("Mastodon API request: %s", err)
return Blog{}, fmt.Errorf("API request failed")
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
log.Println("Mastodon API response: %s", resp.Status)
return Blog{}, fmt.Errorf("API response is not 200")
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("Mastodon response body: %s", err)
return Blog{}, fmt.Errorf("Failed to read response")
}
var toot Blog
json.Unmarshal(body, &toot)
return toot, nil
}
func getThread(baseURL, tootId string) (Thread, error) {
if baseURL == "" || tootId == "" {
log.Println("baseURL or tootID is empty")
return Thread{}, fmt.Errorf("baseURL or tootID is empty")
}
resp, err := http.Get(baseURL + "/api/v1/statuses/" + tootId + "/context")
if err != nil {
log.Println("Mastodon API request: %s", err)
return Thread{}, fmt.Errorf("API request failed")
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
log.Println("Mastodon API response: %s", resp.Status)
return Thread{}, fmt.Errorf("API response is not 200")
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("Mastodon response body: %s", err)
return Thread{}, fmt.Errorf("Failed to read response")
}
var thread Thread
json.Unmarshal(body, &thread)
return thread, nil
}