From 618676cbead6eb6bfdc57ebbc34227306a707dfa Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 4 Oct 2024 10:57:03 +0300 Subject: can post to mastodon --- internal/platforms/mastodon/mastodon.go | 63 +++++++++++++++++---------------- 1 file changed, 33 insertions(+), 30 deletions(-) (limited to 'internal/platforms') diff --git a/internal/platforms/mastodon/mastodon.go b/internal/platforms/mastodon/mastodon.go index e31947c..a933ea6 100644 --- a/internal/platforms/mastodon/mastodon.go +++ b/internal/platforms/mastodon/mastodon.go @@ -1,42 +1,45 @@ package mastodon import ( + "bytes" "context" + "encoding/json" + "fmt" + "net/http" "codeberg.org/snonux/gos/internal/config" "codeberg.org/snonux/gos/internal/entry" ) func Post(ctx context.Context, args config.Args, ent entry.Entry) error { - // payload := map[string]string{"status": status} - // payloadBytes, err := json.Marshal(payload) - // if err != nil { - // return fmt.Errorf("failed to marshal payload: %w", err) - // } - - // // Create the HTTP request - // req, err := http.NewRequest("POST", url, bytes.NewBuffer(payloadBytes)) - // if err != nil { - // return fmt.Errorf("failed to create request: %w", err) - // } - - // // Set headers - // req.Header.Set("Authorization", "Bearer "+config.AccessToken) - // req.Header.Set("Content-Type", "application/json") - - // // Execute the request - // client := &http.Client{} - // resp, err := client.Do(req) - // if err != nil { - // return fmt.Errorf("request failed: %w", err) - // } - // defer resp.Body.Close() - - // // Check for HTTP errors - // if resp.StatusCode != http.StatusOK { - // return fmt.Errorf("unexpected status code: %d", resp.StatusCode) - // } - - // fmt.Println("Message posted to Mastodon successfully") + content, err := ent.Content() + if err != nil { + return err + } + payload := map[string]string{"status": content} + payloadBytes, err := json.Marshal(payload) + if err != nil { + return fmt.Errorf("failed to marshal payload: %w", err) + } + + req, err := http.NewRequest("POST", args.Secrets.MastodonURL, bytes.NewBuffer(payloadBytes)) + if err != nil { + return fmt.Errorf("failed to create request: %w", err) + } + + req.Header.Set("Authorization", "Bearer "+args.Secrets.MastodonAccessToken) + req.Header.Set("Content-Type", "application/json") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return fmt.Errorf("request failed: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + return nil } -- cgit v1.2.3