package client import ( "bytes" "encoding/json" "fmt" "net/http" "codeflow.dananglin.me.uk/apollo/enbas/internal/model" ) func (g *Client) GetStatus(statusID string) (model.Status, error) { path := "/api/v1/statuses/" + statusID url := g.Authentication.Instance + path var status model.Status if err := g.sendRequest(http.MethodGet, url, nil, &status); err != nil { return model.Status{}, fmt.Errorf( "received an error after sending the request to get the status information; %w", err, ) } return status, nil } func (g *Client) CreateStatus( content, contentType, language, spoilerText string, boostable, federated, likeable, replyable, sensitive bool, visibility model.StatusVisibility, ) (model.Status, error) { form := struct { ContentType string `json:"content_type"` Language string `json:"language"` SpoilerText string `json:"spoiler_text"` Status string `json:"status"` Boostable bool `json:"boostable"` Federated bool `json:"federated"` Likeable bool `json:"likeable"` Replyable bool `json:"replyable"` Sensitive bool `json:"sensitive"` Visibility model.StatusVisibility `json:"visibility"` }{ ContentType: contentType, Language: language, SpoilerText: spoilerText, Status: content, Boostable: boostable, Federated: federated, Likeable: likeable, Sensitive: sensitive, Replyable: replyable, Visibility: visibility, } data, err := json.Marshal(form) if err != nil { return model.Status{}, fmt.Errorf("unable to create the JSON form; %w", err) } requestBody := bytes.NewBuffer(data) url := g.Authentication.Instance + "/api/v1/statuses" var status model.Status if err := g.sendRequest(http.MethodPost, url, requestBody, &status); err != nil { return model.Status{}, fmt.Errorf( "received an error after sending the request to create the status; %w", err, ) } return status, nil }