12 const apiurl = "https://mailmux.net/v1/aliases"
14 const jsonContentType = "application/json"
23 func Dial(uri, user, token string) *Client {
24 return &Client{http.DefaultClient, uri, user, token}
27 func (c *Client) Register(username, password string) error {
34 body := &bytes.Buffer{}
35 if err := json.NewEncoder(body).Encode(mcall); err != nil {
36 return fmt.Errorf("register %s: %v", username, err)
38 resp, err := c.Post(c.addr+"/register", jsonContentType, body)
40 return fmt.Errorf("register %s: %v", username, err)
42 if resp.StatusCode == http.StatusOK {
46 defer resp.Body.Close()
47 rerror, err := ParseMcall(resp.Body)
49 return fmt.Errorf("register %s: parse response: %v", username, err)
51 return fmt.Errorf("register %s: %s", username, rerror.Error)
54 func (c *Client) NewAlias() (aliases.Aliases, error) {
60 buf := &bytes.Buffer{}
61 if err := json.NewEncoder(buf).Encode(tmsg); err != nil {
62 return nil, fmt.Errorf("new alias: %w", err)
65 resp, err := http.Post(c.addr+"/aliases", jsonContentType, buf)
67 return nil, fmt.Errorf("new alias: %w", err)
69 defer resp.Body.Close()
70 rmsg, err := ParseMcall(resp.Body)
72 return nil, fmt.Errorf("new alias: parse response: %w", err)
74 if rmsg.Type == Rerror {
75 return nil, fmt.Errorf("new alias: %v", rmsg.Error)
77 return rmsg.Aliases, nil
80 func (c *Client) Aliases() (aliases.Aliases, error) {
86 buf := &bytes.Buffer{}
87 if err := json.NewEncoder(buf).Encode(tmsg); err != nil {
88 return nil, fmt.Errorf("list aliases: %w", err)
90 resp, err := http.Post(c.addr+"/aliases", jsonContentType, buf)
92 return nil, fmt.Errorf("list aliases: %w", err)
95 defer resp.Body.Close()
96 rmsg, err := ParseMcall(resp.Body)
98 return nil, fmt.Errorf("list aliases: parse response: %w", err)
100 if rmsg.Type == Rerror {
101 return nil, fmt.Errorf("list aliases: %v", rmsg.Error)
103 return rmsg.Aliases, nil