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() (Alias, error) {
56 v.Add("username", c.user)
57 v.Add("token", c.token)
58 resp, err := http.PostForm(c.addr + "/aliases", v)
62 defer resp.Body.Close()
63 if resp.StatusCode != http.StatusOK {
64 return Alias{}, errors.New(resp.Status)
70 func (c *Client) Aliases() ([]Alias, error) {
73 v.Add("token", c.token)
74 req, err := http.NewRequest(http.MethodGet, apiurl, nil)
76 return nil, fmt.Errorf("list aliases: %w", err)
78 req.URL.RawQuery = v.Encode()
79 resp, err := c.Do(req)
81 return nil, fmt.Errorf("list aliases: %w", err)
83 defer resp.Body.Close()