go-mockid/vendor/github.com/mailgun/mailgun-go/v3/events/events.go

263 lines
6.6 KiB
Go

package events
import (
"strings"
"time"
)
// An EventName is a struct with the event name.
type EventName struct {
Name string `json:"event"`
}
// GetName returns the name of the event.
func (e *EventName) GetName() string {
return strings.ToLower(e.Name)
}
func (e *EventName) SetName(name string) {
e.Name = strings.ToLower(name)
}
type Generic struct {
EventName
Timestamp float64 `json:"timestamp"`
ID string `json:"id"`
}
func (g *Generic) GetTimestamp() time.Time {
return time.Unix(0, int64(g.Timestamp*float64(time.Second))).UTC()
}
func (g *Generic) SetTimestamp(t time.Time) {
// convert := fmt.Sprintf("%d.%06d", t.Unix(), t.Nanosecond()/int(time.Microsecond))
// ts, err := strconv.ParseFloat(convert, 64)
g.Timestamp = float64(t.Unix()) + (float64(t.Nanosecond()/int(time.Microsecond)) / float64(1000000))
}
func (g *Generic) GetID() string {
return g.ID
}
func (g *Generic) SetID(id string) {
g.ID = id
}
//
// Message Events
//
type Accepted struct {
Generic
Envelope Envelope `json:"envelope"`
Message Message `json:"message"`
Flags Flags `json:"flags"`
Recipient string `json:"recipient"`
RecipientDomain string `json:"recipient-domain"`
Method string `json:"method"`
OriginatingIP string `json:"originating-ip"`
Tags []string `json:"tags"`
Campaigns []Campaign `json:"campaigns"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Rejected struct {
Generic
Reject struct {
Reason string `json:"reason"`
Description string `json:"description"`
} `json:"reject"`
Message Message `json:"message"`
Storage Storage `json:"storage"`
Flags Flags `json:"flags"`
Tags []string `json:"tags"`
Campaigns []Campaign `json:"campaigns"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Delivered struct {
Generic
Envelope Envelope `json:"envelope"`
Message Message `json:"message"`
Flags Flags `json:"flags"`
Recipient string `json:"recipient"`
RecipientDomain string `json:"recipient-domain"`
Method string `json:"method"`
Tags []string `json:"tags"`
Campaigns []Campaign `json:"campaigns"`
DeliveryStatus DeliveryStatus `json:"delivery-status"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Failed struct {
Generic
Envelope Envelope `json:"envelope"`
Message Message `json:"message"`
Flags Flags `json:"flags"`
Recipient string `json:"recipient"`
RecipientDomain string `json:"recipient-domain"`
Method string `json:"method"`
Tags []string `json:"tags"`
Campaigns []Campaign `json:"campaigns"`
DeliveryStatus DeliveryStatus `json:"delivery-status"`
Severity string `json:"severity"`
Reason string `json:"reason"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Stored struct {
Generic
Message Message `json:"message"`
Storage Storage `json:"storage"`
Flags Flags `json:"flags"`
Tags []string `json:"tags"`
Campaigns []Campaign `json:"campaigns"`
UserVariables map[string]interface{} `json:"user-variables"`
}
//
// Message Events (User)
//
type Opened struct {
Generic
Message Message `json:"message"`
Campaigns []Campaign `json:"campaigns"`
MailingList MailingList `json:"mailing-list"`
Recipient string `json:"recipient"`
RecipientDomain string `json:"recipient-domain"`
Tags []string `json:"tags"`
IP string `json:"ip"`
ClientInfo ClientInfo `json:"client-info"`
GeoLocation GeoLocation `json:"geolocation"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Clicked struct {
Generic
Url string `json:"url"`
Message Message `json:"message"`
Campaigns []Campaign `json:"campaigns"`
MailingList MailingList `json:"mailing-list"`
Recipient string `json:"recipient"`
RecipientDomain string `json:"recipient-domain"`
Tags []string `json:"tags"`
IP string `json:"ip"`
ClientInfo ClientInfo `json:"client-info"`
GeoLocation GeoLocation `json:"geolocation"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Unsubscribed struct {
Generic
Message Message `json:"message"`
Campaigns []Campaign `json:"campaigns"`
MailingList MailingList `json:"mailing-list"`
Recipient string `json:"recipient"`
RecipientDomain string `json:"recipient-domain"`
Tags []string `json:"tags"`
IP string `json:"ip"`
ClientInfo ClientInfo `json:"client-info"`
GeoLocation GeoLocation `json:"geolocation"`
UserVariables map[string]interface{} `json:"user-variables"`
}
type Complained struct {
Generic
Message Message `json:"message"`
Campaigns []Campaign `json:"campaigns"`
Recipient string `json:"recipient"`
Tags []string `json:"tags"`
UserVariables map[string]interface{} `json:"user-variables"`
}
//
// Mailing List Events
//
type MailingListMember struct {
Subscribed bool
Address string
Name string
Vars []string
}
type MailingListError struct {
Message string
}
type ListMemberUploaded struct {
Generic
MailingList MailingList `json:"mailing-list"`
Member MailingListMember `json:"member"`
TaskID string `json:"task-id"`
}
type ListMemberUploadError struct {
Generic
MailingList MailingList `json:"mailing-list"`
TaskID string `json:"task-id"`
Format string `json:"format"`
MemberDescription string `json:"member-description"`
Error MailingListError `json:"error"`
}
type ListUploaded struct {
Generic
MailingList MailingList `json:"mailing-list"`
IsUpsert bool `json:"is-upsert"`
Format string `json:"format"`
UpsertedCount int `json:"upserted-count"`
FailedCount int `json:"failed-count"`
Member MailingListMember `json:"member"`
Subscribed bool `json:"subscribed"`
TaskID string `json:"task-id"`
}
type Paging struct {
First string `json:"first,omitempty"`
Next string `json:"next,omitempty"`
Previous string `json:"previous,omitempty"`
Last string `json:"last,omitempty"`
}
type RawJSON []byte
func (v *RawJSON) UnmarshalJSON(data []byte) error {
*v = data
return nil
}
type Response struct {
Items []RawJSON `json:"items"`
Paging Paging `json:"paging"`
}