// Put sends a message to a series of mailboxes. An array of mailboxes can be // provided, as well as a pattern using '*' as wildcards. The message will by // sent to all matching mailboxes. func (client *Client) Put(mbxs []string, pattern string, msg string, deploymentName string, asset string) (*api.PutMessageResponse, error) { md5, _ := client.hashFile(asset) if asset != "" { exists, err := client.CheckRemoteFile(md5) if err != nil { return nil, err } if exists == true { log.Info("File exists on server, skipping upload") } else { _, err := client.Upload(asset) if err != nil { log.Debug(err.Error()) return nil, errors.New("Could not upload asset") } } } request := api.PutMessageRequest{ Mailboxes: mbxs, Body: msg, Pattern: pattern, DeploymentName: deploymentName, Asset: md5, } request.Sign(client.AccessKeyName, client.AccessKey) var response api.PutMessageResponse err := client.request("put", request, &response) if err != nil { return nil, err } if !response.Validate(client.AccessKey) { return nil, errors.New("Server responded with an invalid signature") } return &response, nil }