-
Notifications
You must be signed in to change notification settings - Fork 13
/
outboundmessagingmessagingcampaignconfigchangereplytoemailaddress.go
123 lines (101 loc) · 4.6 KB
/
outboundmessagingmessagingcampaignconfigchangereplytoemailaddress.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package platformclientv2
import (
"github.com/leekchan/timeutil"
"reflect"
"encoding/json"
"strconv"
"strings"
)
// Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress - An outbound-messaging messaging campaign email address
type Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress struct {
// SetFieldNames defines the list of fields to use for controlled JSON serialization
SetFieldNames map[string]bool `json:"-"`
// Domain - A UriReference for a resource
Domain *Outboundmessagingmessagingcampaignconfigchangeurireference `json:"domain,omitempty"`
// Route - A UriReference for a resource
Route *Outboundmessagingmessagingcampaignconfigchangeurireference `json:"route,omitempty"`
}
// SetField uses reflection to set a field on the model if the model has a property SetFieldNames, and triggers custom JSON serialization logic to only serialize properties that have been set using this function.
func (o *Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress) SetField(field string, fieldValue interface{}) {
// Get Value object for field
target := reflect.ValueOf(o)
targetField := reflect.Indirect(target).FieldByName(field)
// Set value
if fieldValue != nil {
targetField.Set(reflect.ValueOf(fieldValue))
} else {
// Must create a new Value (creates **type) then get its element (*type), which will be nil pointer of the appropriate type
x := reflect.Indirect(reflect.New(targetField.Type()))
targetField.Set(x)
}
// Add field to set field names list
if o.SetFieldNames == nil {
o.SetFieldNames = make(map[string]bool)
}
o.SetFieldNames[field] = true
}
func (o Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress) MarshalJSON() ([]byte, error) {
// Special processing to dynamically construct object using only field names that have been set using SetField. This generates payloads suitable for use with PATCH API endpoints.
if len(o.SetFieldNames) > 0 {
// Get reflection Value
val := reflect.ValueOf(o)
// Known field names that require type overrides
dateTimeFields := []string{ }
localDateTimeFields := []string{ }
dateFields := []string{ }
// Construct object
newObj := make(map[string]interface{})
for fieldName := range o.SetFieldNames {
// Get initial field value
fieldValue := val.FieldByName(fieldName).Interface()
// Apply value formatting overrides
if fieldValue == nil || reflect.ValueOf(fieldValue).IsNil() {
// Do nothing. Just catching this case to avoid trying to custom serialize a nil value
} else if contains(dateTimeFields, fieldName) {
fieldValue = timeutil.Strftime(toTime(fieldValue), "%Y-%m-%dT%H:%M:%S.%fZ")
} else if contains(localDateTimeFields, fieldName) {
fieldValue = timeutil.Strftime(toTime(fieldValue), "%Y-%m-%dT%H:%M:%S.%f")
} else if contains(dateFields, fieldName) {
fieldValue = timeutil.Strftime(toTime(fieldValue), "%Y-%m-%d")
}
// Assign value to field using JSON tag name
newObj[getFieldName(reflect.TypeOf(&o), fieldName)] = fieldValue
}
// Marshal and return dynamically constructed interface
return json.Marshal(newObj)
}
// Redundant initialization to avoid unused import errors for models with no Time values
_ = timeutil.Timedelta{}
type Alias Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress
return json.Marshal(&struct {
Domain *Outboundmessagingmessagingcampaignconfigchangeurireference `json:"domain,omitempty"`
Route *Outboundmessagingmessagingcampaignconfigchangeurireference `json:"route,omitempty"`
Alias
}{
Domain: o.Domain,
Route: o.Route,
Alias: (Alias)(o),
})
}
func (o *Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress) UnmarshalJSON(b []byte) error {
var OutboundmessagingmessagingcampaignconfigchangereplytoemailaddressMap map[string]interface{}
err := json.Unmarshal(b, &OutboundmessagingmessagingcampaignconfigchangereplytoemailaddressMap)
if err != nil {
return err
}
if Domain, ok := OutboundmessagingmessagingcampaignconfigchangereplytoemailaddressMap["domain"].(map[string]interface{}); ok {
DomainString, _ := json.Marshal(Domain)
json.Unmarshal(DomainString, &o.Domain)
}
if Route, ok := OutboundmessagingmessagingcampaignconfigchangereplytoemailaddressMap["route"].(map[string]interface{}); ok {
RouteString, _ := json.Marshal(Route)
json.Unmarshal(RouteString, &o.Route)
}
return nil
}
// String returns a JSON representation of the model
func (o *Outboundmessagingmessagingcampaignconfigchangereplytoemailaddress) String() string {
j, _ := json.Marshal(o)
str, _ := strconv.Unquote(strings.Replace(strconv.Quote(string(j)), `\\u`, `\u`, -1))
return str
}