inital commit

This commit is contained in:
2026-05-25 22:27:18 +02:00
commit 965f9d6ad4
91 changed files with 28963 additions and 0 deletions

73
examples/notes/main.go Normal file
View File

@@ -0,0 +1,73 @@
// notes dumps the /msg/pms/ inbox listing and, if an argument is given,
// prints the full body of that note id. Requires FA_A / FA_B in env.
//
// go run ./examples/notes # list inbox
// go run ./examples/notes 131012623 # read one note
package main
import (
"context"
"fmt"
"log"
"os"
"strconv"
fa "git.anthrove.art/public/go-fa-api"
)
func main() {
a, b := os.Getenv("FA_A"), os.Getenv("FA_B")
if a == "" || b == "" {
log.Fatal("FA_A and FA_B must be set notes require login")
}
client := fa.New(
fa.WithCookies(fa.Cookies{A: a, B: b}),
fa.WithCloudflare(fa.CFCookies{Clearance: os.Getenv("CF_CLEARANCE")}),
fa.WithUserAgent(envOr("FA_UA", "go-fa-api-example/0.1")),
)
ctx := context.Background()
if len(os.Args) >= 2 {
id, err := strconv.ParseInt(os.Args[1], 10, 64)
if err != nil {
log.Fatalf("invalid note id: %v", err)
}
n, err := client.GetNote(ctx, fa.NoteID(id))
if err != nil {
log.Fatalf("GetNote: %v", err)
}
fmt.Printf("Subject: %s\nFrom: %s (@%s)\nTo: %s (@%s)\nSent: %s\n\n%s\n",
n.Subject,
n.From.DisplayName, n.From.Name,
n.To.DisplayName, n.To.Name,
n.SentAt.Format("2006-01-02 15:04"),
n.BodyText)
return
}
count := 0
for np, err := range client.Notes(ctx, fa.ListOptions{MaxPages: 1}) {
if err != nil {
log.Fatalf("Notes: %v", err)
}
count++
unread := " "
if np.Unread {
unread = "*"
}
from := np.Sender.DisplayName
if from == "" {
from = np.Sender.Name
}
fmt.Printf("[%s] [%d] %s from %s (%s)\n",
unread, np.ID, np.Subject, from, np.SentAt.Format("2006-01-02 15:04"))
}
fmt.Printf("\n%d notes on first page\n", count)
}
func envOr(key, fallback string) string {
if v := os.Getenv(key); v != "" {
return v
}
return fallback
}