grim/paytreon

initial version to make go happy
draft
2018-05-27, Gary Kramlich
f7be7a3d2116
Parents
Children cbc5ce1664ff
initial version to make go happy
  • +5 -0
    client.go
  • +133 -0
    types.go
  • +31 -0
    types_test.go
  • --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/client.go Sun May 27 00:14:40 2018 -0500
    @@ -0,0 +1,5 @@
    +package paytreon
    +
    +import (
    + "net/http"
    +)
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/types.go Sun May 27 00:14:40 2018 -0500
    @@ -0,0 +1,133 @@
    +package paytreon
    +
    +import (
    + "time"
    +)
    +
    +// Address represents a Patreon's address.
    +type Address struct {
    + ID string `jsonapi:"primary,address"`
    +
    + Addressee string `jsonapi:"attr,addressee"`
    + City string `jsonapi:"attr,city"`
    + Country string `jsonapi:"attr,country"`
    + Line1 string `jsonapi:"attr,line_1"`
    + Line2 string `jsonapi:"attr,line_2"`
    + PhoneNumber string `jsonapi:"attr,phone_number"`
    + PostalCode string `jsonapi:"attr,postal_code"`
    + State string `jsonapi:"attr,state"`
    +}
    +
    +type User struct {
    + ID string `jsonapi:"primary,user"`
    +
    + FirstName string `jsonapi:"attr,first_name"`
    + LastName string `jsonapi:"attr,last_name"`
    + FullName string `jsonapi:"attr,full_name"`
    + Vanity string `jsonapi:"attr,vanity"`
    + Email string `jsonapi:"attr,email"`
    + About string `jsonapi:"attr,about"`
    + FacebookId string `jsonapi:"attr,facebook_id"`
    + Gender int `jsonapi:"attr,gender"`
    + HasPassword bool `jsonapi:"attr,has_password"`
    + ImageURL string `jsonapi:"attr,image_url"`
    + ThumbURL string `jsonapi:"attr,thumb_url"`
    + YouTube string `jsonapi:"attr,youtube"`
    + Twitter string `jsonapi:"attr,twitter"`
    + Facebook string `jsonapi:"attr,facebook"`
    + IsEmailVerified bool `jsonapi:"attr,is_email_verified"`
    + IsSuspended bool `jsonapi:"attr,is_suspended"`
    + IsDeleted bool `jsonapi:"attr,is_deleted"`
    + IsNuked bool `jsonapi:"attr,is_nuked"`
    + Created time.Time `jsonapi:"attr,created"`
    + URL string `jsonapi:"attr,url"`
    +
    + Pledges *Pledge `jsonapi:"relation,pledges"`
    +}
    +
    +type Pledge struct {
    + ID string `jsonapi:"primary,pledge"`
    +
    + AmountCents int `jsonapi:"attr,amount_cents"`
    + CreatedAt time.Time `jsonapi:"attr,created_at"`
    + DeclinedSince time.Time `jsonapi:"attr,declined_since"`
    + PledgeCapCents int `jsonapi:"attr,pledge_cap_cents"`
    + PatronPaysFees bool `jsonapi:"attr,patron_pays_fees"`
    +
    + TotalHistoricalAmountCents *int `jsonapi:"attr,total_historical_amount_cents,omitempty"`
    + IsPaused *bool `jsonapi:"attr,is_paused,omitempty"`
    + HasShippingAddress *bool `jsonapi:"attr,has_shipping_address,omitempty"`
    + OutstandingPaymentAmountCents *int `jsonapi:"attr,outstanding_payment_amount_cents,omitempty"`
    +
    + Patron *User `jsonapi:"relation,patron"`
    + Reward *Reward `jsonapi:"relation,reward"`
    + Creator *User `jsonapi:"relation,creator"`
    + Address *Address `jsonapi:"relation,address"`
    +}
    +
    +type Reward struct {
    + ID string `jsonapi:"primary,reward"`
    +
    + Amount int `jsonapi:"attr,amount"`
    + AmountCents int `jsonapi:"attr,amount_cents"`
    + CreatedAt time.Time `jsonapi:"attr,created_at"`
    + DeletedAt time.Time `jsonapi:"attr,deleted_at"`
    + EditedAt time.Time `jsonapi:"attr,edited_at"`
    + Description string `jsonapi:"attr,description"`
    + ImageURL string `jsonapi:"attr,image_url"`
    + PatronCount int `jsonapi:"attr,patron_count"`
    + PostCount int `jsonapi:"attr,post_count"`
    + Published bool `jsonapi:"attr,published"`
    + PublishedAt time.Time `jsonapi:"attr,published_at"`
    + RequiresShipping bool `jsonapi:"attr,requires_shipping"`
    + Title string `jsonapi:"attr,title"`
    + UnpublishedAt time.Time `jsonapi:"attr,unpublished_at"`
    + URL string `jsonapi:"attr,url"`
    +}
    +
    +type Campaign struct {
    + ID string `jsonapi:"primary,campaign"`
    +
    + Summary string `jsonapi:"attr,summary"`
    + CreationName string `jsonapi:"attr,creation_name"`
    + DisplayPatronGoals bool `jsonapi:"attr,display_patron_goals"`
    + PayPerName string `jsonapi:"attr,pay_per_name"`
    + OneLiner string `jsonapi:"attr,one_liner"`
    + MainVideoEmbed string `jsonapi:"attr,main_video_embed"`
    + MainVideoURL string `jsonapi:"attr,main_video_url"`
    + ImageSmallURL string `jsonapi:"attr,image_small_url"`
    + ImageURL string `jsonapi:"attr,image_url"`
    + ThanksVideoURL string `jsonapi:"attr,thanks_video_url"`
    + ThanksEmbed string `jsonapi:"attr,thanks_embed"`
    + ThanksMsg string `jsonapi:"attr,thanks_msg"`
    + IsChargedImmediately bool `jsonapi:"attr,is_charged_immediately"`
    + IsMonthly bool `jsonapi:"attr,is_monthly"`
    + IsNsfw bool `jsonapi:"attr,is_nsfw"`
    + IsPlural bool `jsonapi:"attr,is_plural"`
    + CreatedAt time.Time `jsonapi:"attr,created_at"`
    + PublishedAt time.Time `jsonapi:"attr,published_at"`
    + PledgeURL string `jsonapi:"attr,pledge_url"`
    + PledgeSum int `jsonapi:"attr,pledge_sum"`
    + PatronCount int `jsonapi:"attr,patron_count"`
    + CreationCount int `jsonapi:"attr,creation_count"`
    + OutstandingPaymentAmountCents int `jsonapi:"attr,outstanding_payment_amount_cents"`
    +
    + // Categories *CategoriesRelationship `jsonapi:"relation,categories,omitempty"`
    + Creator *User `jsonapi:"relation,creator,omitempty"`
    + Rewards []*Reward `jsonapi:"relation,rewards,omitempty"`
    + Goals []*Goal `jsonapi:"relation,goals,omitempty"`
    + Pledges []*Pledge `jsonapi:"relation,pledges,omitempty"`
    + // PostAggregation *PostAggregationRelationship `jsonapi:"relation,post_aggregation,omitempty"`
    +}
    +
    +type Goal struct {
    + ID string `jsonapi:"primary,goal"`
    +
    + Amount int `jsonapi:"attr,amount"`
    + AmountCents int `jsonapi:"attr,amount_cents"`
    + CompletedPercentage int `jsonapi:"attr,completed_percentage"`
    + CreatedAt time.Time `jsonapi:"attr,created_at"`
    + ReachedAt time.Time `jsonapi:"attr,reached_at"`
    + Title string `jsonapi:"attr,title"`
    + Description string `jsonapi:"attr,description"`
    +}
    --- /dev/null Thu Jan 01 00:00:00 1970 +0000
    +++ b/types_test.go Sun May 27 00:14:40 2018 -0500
    @@ -0,0 +1,31 @@
    +package paytreon
    +
    +import (
    + "testing"
    +
    + "github.com/google/jsonapi"
    +)
    +
    +func TestAddressUnmarshal(t *testing.T) {
    + data = `{"data": [{
    + "attributes": {
    + "addressee": "somebody",
    + "city": "somecity",
    + "country": "somecountry",
    + "line_1": "someline1",
    + "line_2": "someline2",
    + "phone_number": null,
    + "postal_code": "somepostalcode",
    + "state": "somestate"
    + },
    + "id": "someid",
    + "type": "address"
    + }]}
    + `
    +
    + var addr Address
    + err := jsonapi.UnmarshalPayload(data, &addr)
    + if err != nil {
    + t.Errorf("unexpected error: %s", err)
    + }
    +}