github.com/plutov/paypal/v4@v4.7.1/filter.go (about) 1 package paypal 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 const format = "2006-01-02T15:04:05Z" 9 10 // Filter type 11 type Filter struct { 12 fields []fmt.Stringer 13 } 14 15 func (s *Filter) String() string { 16 var filter string 17 for i, f := range s.fields { 18 if i == 0 { 19 filter = "?" + f.String() 20 } else { 21 filter = filter + "&" + f.String() 22 } 23 } 24 25 return filter 26 } 27 28 // TextField type 29 type TextField struct { 30 name string 31 Is string 32 } 33 34 func (d TextField) String() string { 35 return fmt.Sprintf("%s=%s", d.name, d.Is) 36 } 37 38 // TimeField type 39 type TimeField struct { 40 name string 41 Is time.Time 42 } 43 44 // String . 45 func (d TimeField) String() string { 46 return fmt.Sprintf("%s=%s", d.name, d.Is.UTC().Format(format)) 47 } 48 49 // AddTextField . 50 func (s *Filter) AddTextField(field string) *TextField { 51 f := &TextField{name: field} 52 s.fields = append(s.fields, f) 53 return f 54 } 55 56 // AddTimeField . 57 func (s *Filter) AddTimeField(field string) *TimeField { 58 f := &TimeField{name: field} 59 s.fields = append(s.fields, f) 60 return f 61 }