-
Notifications
You must be signed in to change notification settings - Fork 455
/
taxrate.go
76 lines (67 loc) · 2.67 KB
/
taxrate.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
package stripe
import "encoding/json"
// TaxRateParams is the set of parameters that can be used when creating a tax rate.
// For more details see https://stripe.com/docs/api/tax_rates/create.
type TaxRateParams struct {
Params `form:"*"`
Active *bool `form:"active"`
Description *string `form:"description"`
DisplayName *string `form:"display_name"`
Inclusive *bool `form:"inclusive"`
Jurisdiction *string `form:"jurisdiction"`
Percentage *float64 `form:"percentage"`
}
// TaxRatePercentageRangeQueryParams are used to filter tax rates by specific percentage values.
type TaxRatePercentageRangeQueryParams struct {
GreaterThan float64 `form:"gt"`
GreaterThanOrEqual float64 `form:"gte"`
LesserThan float64 `form:"lt"`
LesserThanOrEqual float64 `form:"lte"`
}
// TaxRateListParams is the set of parameters that can be used when listing tax rates.
// For more detail see https://stripe.com/docs/api/tax_rates/list.
type TaxRateListParams struct {
ListParams `form:"*"`
Active *bool `form:"active"`
Created *int64 `form:"created"`
CreatedRange *RangeQueryParams `form:"created"`
Inclusive *bool `form:"inclusive"`
Percentage *float64 `form:"percentage"`
PercentageRange *TaxRatePercentageRangeQueryParams `form:"percentage"`
}
// TaxRate is the resource representing a Stripe tax rate.
// For more details see https://stripe.com/docs/api/tax_rates/object.
type TaxRate struct {
Active bool `json:"active"`
Created int64 `json:"created"`
Description string `json:"description"`
DisplayName string `json:"display_name"`
ID string `json:"id"`
Inclusive bool `json:"inclusive"`
Jurisdiction string `json:"jurisdiction"`
Livemode bool `json:"livemode"`
Metadata map[string]string `json:"metadata"`
Object string `json:"object"`
Percentage float64 `json:"percentage"`
}
// TaxRateList is a list of tax rates as retrieved from a list endpoint.
type TaxRateList struct {
ListMeta
Data []*TaxRate `json:"data"`
}
// UnmarshalJSON handles deserialization of a TaxRate.
// This custom unmarshaling is needed because the resulting
// property may be an id or the full struct if it was expanded.
func (c *TaxRate) UnmarshalJSON(data []byte) error {
if id, ok := ParseID(data); ok {
c.ID = id
return nil
}
type taxrate TaxRate
var v taxrate
if err := json.Unmarshal(data, &v); err != nil {
return err
}
*c = TaxRate(v)
return nil
}