summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-10-09 23:28:21 +0300
committerPaul Buetow <paul@buetow.org>2024-10-09 23:28:21 +0300
commit8e23c12025fac69c6c08aa37e690ee24978c6eed (patch)
treea1b5aaba1c73169b1fd1c4d38a639881ded9e15a
parenta69e38e109f44b85ac068acabe639f48939f1525 (diff)
can abort
-rw-r--r--internal/platforms/linkedin/linkedin.go4
-rw-r--r--internal/platforms/mastodon/mastodon.go4
-rw-r--r--internal/run.go9
3 files changed, 17 insertions, 0 deletions
diff --git a/internal/platforms/linkedin/linkedin.go b/internal/platforms/linkedin/linkedin.go
index ad70af0..3addd46 100644
--- a/internal/platforms/linkedin/linkedin.go
+++ b/internal/platforms/linkedin/linkedin.go
@@ -13,6 +13,7 @@ import (
"codeberg.org/snonux/gos/internal/config"
"codeberg.org/snonux/gos/internal/entry"
"codeberg.org/snonux/gos/internal/platforms/linkedin/oauth2"
+ "codeberg.org/snonux/gos/internal/prompt"
)
var errUnauthorized = errors.New("unauthorized access, refresh or create token?")
@@ -61,6 +62,9 @@ func callLinkedInAPI(personID, accessToken, message string) error {
if err != nil {
return fmt.Errorf("Error encoding JSON:%w", err)
}
+ if !prompt.Yes(fmt.Sprintf("%s\nDo you want to post this message to LinkedIn?", string(payload))) {
+ return prompt.ErrAborted
+ }
req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload))
if err != nil {
diff --git a/internal/platforms/mastodon/mastodon.go b/internal/platforms/mastodon/mastodon.go
index a933ea6..361d1a5 100644
--- a/internal/platforms/mastodon/mastodon.go
+++ b/internal/platforms/mastodon/mastodon.go
@@ -9,6 +9,7 @@ import (
"codeberg.org/snonux/gos/internal/config"
"codeberg.org/snonux/gos/internal/entry"
+ "codeberg.org/snonux/gos/internal/prompt"
)
func Post(ctx context.Context, args config.Args, ent entry.Entry) error {
@@ -21,6 +22,9 @@ func Post(ctx context.Context, args config.Args, ent entry.Entry) error {
if err != nil {
return fmt.Errorf("failed to marshal payload: %w", err)
}
+ if !prompt.Yes(fmt.Sprintf("%s\nDo you want to post this message to Mastodon?", string(payloadBytes))) {
+ return prompt.ErrAborted
+ }
req, err := http.NewRequest("POST", args.Secrets.MastodonURL, bytes.NewBuffer(payloadBytes))
if err != nil {
diff --git a/internal/run.go b/internal/run.go
index b628d9c..0457f36 100644
--- a/internal/run.go
+++ b/internal/run.go
@@ -9,6 +9,7 @@ import (
"codeberg.org/snonux/gos/internal/config"
"codeberg.org/snonux/gos/internal/platforms/linkedin"
"codeberg.org/snonux/gos/internal/platforms/mastodon"
+ "codeberg.org/snonux/gos/internal/prompt"
"codeberg.org/snonux/gos/internal/queue"
"codeberg.org/snonux/gos/internal/schedule"
)
@@ -39,6 +40,10 @@ func Run(ctx context.Context, args config.Args) error {
continue
}
if err := mastodon.Post(ctx, args, ent); err != nil {
+ if errors.Is(err, prompt.ErrAborted) {
+ log.Println("Aborted posting to", platform)
+ continue
+ }
return err
}
if err := ent.MarkPosted(); err != nil {
@@ -51,6 +56,10 @@ func Run(ctx context.Context, args config.Args) error {
continue
}
if err := linkedin.Post(ctx, args, ent); err != nil {
+ if errors.Is(err, prompt.ErrAborted) {
+ log.Println("Aborted posting to", platform)
+ continue
+ }
return err
}
if err := ent.MarkPosted(); err != nil {