grim/paytreon
Clone
Summary
Browse
Changes
Graph
initial version to make go happy
draft
2018-05-27, Gary Kramlich
f7be7a3d2116
Parents
Children
cbc5ce1664ff
initial version to make go happy
3 files changed, 169 insertions(+), 0 deletions(-)
+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)
+ }
+}