From ee2cb360bfb6ab35cb8a373fd1237993cea168d0 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 18 Oct 2024 21:36:54 +0300 Subject: initial work on editing a post --- internal/platforms/linkedin/linkedin.go | 29 ++++++++++++++++------------- internal/platforms/mastodon/mastodon.go | 11 ++--------- 2 files changed, 18 insertions(+), 22 deletions(-) (limited to 'internal/platforms') diff --git a/internal/platforms/linkedin/linkedin.go b/internal/platforms/linkedin/linkedin.go index 4503c53..d8eb91e 100644 --- a/internal/platforms/linkedin/linkedin.go +++ b/internal/platforms/linkedin/linkedin.go @@ -41,15 +41,29 @@ func post(ctx context.Context, args config.Args, sizeLimit int, ent entry.Entry) if err != nil { return err } + if err := prompt.DoYouWantThis("Do you want to post this message to Linkedin?", content); err != nil { + // TODO: Do the same for Mastodon. Gan this be more generalized? + if err == prompt.ErrEditContent { + if err := prompt.EditFile(ent.Path); err != nil { + return err + } + ent, err = entry.New(ent.Path) + if err != err { + return err + } + return post(ctx, args, sizeLimit, ent) + } + return err + } return callLinkedInAPI(ctx, personID, accessToken, content) } -func callLinkedInAPI(ctx context.Context, personID, accessToken, message string) error { +func callLinkedInAPI(ctx context.Context, personID, accessToken, content string) error { const url = "https://api.linkedin.com/v2/posts" post := map[string]interface{}{ "author": fmt.Sprintf("urn:li:person:%s", personID), - "commentary": message, // TODO: Can't post (...) paretenthesis? escape them? + "commentary": content, // TODO: Can't post (...) paretenthesis? escape them? "visibility": "PUBLIC", "distribution": map[string]interface{}{ "feedDistribution": "MAIN_FEED", @@ -64,17 +78,6 @@ func callLinkedInAPI(ctx context.Context, personID, accessToken, message string) if err != nil { return fmt.Errorf("Error encoding JSON:%w", err) } - - switch prompt.DoYouWantThis("Do you want to post this message to Linkedin?", message) { - case prompt.No: - return prompt.ErrAborted - case prompt.Yes: - case prompt.Edit: - panic("edit not yet implemented") // TODO - default: - panic("should never happen") - } - req, err := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(payload)) if err != nil { return fmt.Errorf("Error creating request: %w", err) diff --git a/internal/platforms/mastodon/mastodon.go b/internal/platforms/mastodon/mastodon.go index 390de4c..d4f9e7b 100644 --- a/internal/platforms/mastodon/mastodon.go +++ b/internal/platforms/mastodon/mastodon.go @@ -27,16 +27,9 @@ func Post(ctx context.Context, args config.Args, sizeLimit int, ent entry.Entry) log.Println("Not posting", ent, "to Mastodon as dry-run enabled") return nil } - switch prompt.DoYouWantThis("Do you want to post this message to Mastodon?", content) { - case prompt.No: - return prompt.ErrAborted - case prompt.Yes: - case prompt.Edit: - panic("edit not yet implemented") // TODO - default: - panic("should never happen") + if err := prompt.DoYouWantThis("Do you want to post this message to Mastodon?", content); err != nil { + return err } - req, err := http.NewRequestWithContext(ctx, "POST", args.Secrets.MastodonURL, bytes.NewBuffer(payloadBytes)) if err != nil { return fmt.Errorf("failed to create request: %w", err) -- cgit v1.2.3