-
Notifications
You must be signed in to change notification settings - Fork 1
/
resume_options.go
60 lines (53 loc) · 2.23 KB
/
resume_options.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
package models
import (
"encoding/json"
)
// ResumeOptions represents a ResumeOptions struct.
type ResumeOptions struct {
// Chargify will only attempt to resume the subscription's billing period. If not resumable, the subscription will be left in it's current state.
RequireResume *bool `json:"require_resume,omitempty"`
// Indicates whether or not Chargify should clear the subscription's existing balance before attempting to resume the subscription. If subscription cannot be resumed, the balance will remain as it was before the attempt to resume was made.
ForgiveBalance *bool `json:"forgive_balance,omitempty"`
AdditionalProperties map[string]any `json:"_"`
}
// MarshalJSON implements the json.Marshaler interface for ResumeOptions.
// It customizes the JSON marshaling process for ResumeOptions objects.
func (r ResumeOptions) MarshalJSON() (
[]byte,
error) {
return json.Marshal(r.toMap())
}
// toMap converts the ResumeOptions object to a map representation for JSON marshaling.
func (r ResumeOptions) toMap() map[string]any {
structMap := make(map[string]any)
MapAdditionalProperties(structMap, r.AdditionalProperties)
if r.RequireResume != nil {
structMap["require_resume"] = r.RequireResume
}
if r.ForgiveBalance != nil {
structMap["forgive_balance"] = r.ForgiveBalance
}
return structMap
}
// UnmarshalJSON implements the json.Unmarshaler interface for ResumeOptions.
// It customizes the JSON unmarshaling process for ResumeOptions objects.
func (r *ResumeOptions) UnmarshalJSON(input []byte) error {
var temp resumeOptions
err := json.Unmarshal(input, &temp)
if err != nil {
return err
}
additionalProperties, err := UnmarshalAdditionalProperties(input, "require_resume", "forgive_balance")
if err != nil {
return err
}
r.AdditionalProperties = additionalProperties
r.RequireResume = temp.RequireResume
r.ForgiveBalance = temp.ForgiveBalance
return nil
}
// resumeOptions is a temporary struct used for validating the fields of ResumeOptions.
type resumeOptions struct {
RequireResume *bool `json:"require_resume,omitempty"`
ForgiveBalance *bool `json:"forgive_balance,omitempty"`
}