Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,7 +52,6 @@ If a `.env` file exists in the working directory it is loaded automatically on s
| `fmsg login [address]` | Authenticate and store a local token (optional address argument) |
| `fmsg list` \| `fmsg ls [--limit N] [--offset N]` | List messages for the authenticated user |
| `fmsg sent [--limit N] [--offset N]` | List messages authored by the authenticated user |
| `fmsg wait [--since-id N] [--timeout N]` | Long-poll for new messages |
| `fmsg get <message-id>` | Retrieve a message by ID, including the short text body for `text/*` messages |
| `fmsg send <recipient> <file\|text\|->` | Send a message (file path, text, or `-` for stdin) |
| `fmsg draft create <recipient> <file\|text\|->` | Create a draft message without sending |
Expand DownExpand Up@@ -90,10 +89,6 @@ fmsg list --limit 10 --offset 20
fmsg sent
fmsg sent --limit 10 --offset 20

# Wait for a new message
fmsg wait
fmsg wait --since-id 120 --timeout 10

# Get a specific message
fmsg get 101

Expand Down
58 changes: 0 additions & 58 deletions cmd/wait.go

This file was deleted.

45 changes: 0 additions & 45 deletions internal/api/client.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,12 +129,6 @@ type AddRecipientsResponse struct {
Added int `json:"added"`
}

// WaitResponse is the response from GET /fmsg/wait.
type WaitResponse struct {
HasNew bool `json:"has_new"`
LatestID int64 `json:"latest_id"`
}

// ListMessages returns messages for the authenticated user.
func (c *Client) ListMessages(limit, offset int) ([]MessageListItem, error) {
u, err := url.Parse(c.BaseURL + "/fmsg")
Expand DownExpand Up@@ -209,45 +203,6 @@ func (c *Client) ListSentMessages(limit, offset int) ([]MessageListItem, error)
return messages, nil
}

// WaitForMessage long-polls for a new message for the authenticated user.
func (c *Client) WaitForMessage(sinceID int64, timeout int) (*WaitResponse, error) {
u, err := url.Parse(c.BaseURL + "/fmsg/wait")
if err != nil {
return nil, err
}

q := u.Query()
q.Set("since_id", strconv.FormatInt(sinceID, 10))
q.Set("timeout", strconv.Itoa(timeout))
u.RawQuery = q.Encode()

req, err := http.NewRequest(http.MethodGet, u.String(), nil)
if err != nil {
return nil, err
}

resp, err := c.do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()

if err := checkStatus(resp); err != nil {
return nil, err
}

if resp.StatusCode == http.StatusNoContent {
return &WaitResponse{HasNew: false}, nil
}

var result WaitResponse
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
return nil, fmt.Errorf("decoding response: %w", err)
}

return &result, nil
}

// GetMessage retrieves a single message by ID.
func (c *Client) GetMessage(id string) (*Message, error) {
req, err := http.NewRequest(http.MethodGet, c.BaseURL+"/fmsg/"+id, nil)
Expand Down