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  }