From a4a6af6695e5248be378e021ae622576b4b2ff46 Mon Sep 17 00:00:00 2001 From: Alexander Plutov Date: Wed, 14 Oct 2015 12:30:28 +0700 Subject: [PATCH] Initial types --- examples/main.go | 18 ++++++++++++++++++ paypal.go | 16 ++++++++++++++++ types.go | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 examples/main.go create mode 100644 paypal.go create mode 100644 types.go diff --git a/examples/main.go b/examples/main.go new file mode 100644 index 0000000..1749a4b --- /dev/null +++ b/examples/main.go @@ -0,0 +1,18 @@ +package main + +import ( + "paypalsdk" + + "fmt" + "os" +) + +func main() { + client, err := paypalsdk.NewClient("123", "123", paypalsdk.APIBaseSandBox) + if err == nil { + fmt.Println("DEBUG: ClientID=" + client.ClientID + " APIBase=" + client.APIBase) + } else { + fmt.Println("ERROR: " + err.Error()) + os.Exit(1) + } +} diff --git a/paypal.go b/paypal.go new file mode 100644 index 0000000..f36ecec --- /dev/null +++ b/paypal.go @@ -0,0 +1,16 @@ +package paypalsdk + +import ( + "net/http" +) + +// NewClient returns new Client struct +func NewClient(clientID string, secret string, APIBase string) (*Client, error) { + return &Client{ + &http.Client{}, + clientID, + secret, + APIBase, + nil, + }, nil +} diff --git a/types.go b/types.go new file mode 100644 index 0000000..b67d3d0 --- /dev/null +++ b/types.go @@ -0,0 +1,35 @@ +package paypalsdk + +import ( + "net/http" + "time" +) + +const ( + // APIBaseSandBox points to the sandbox (for testing) version of the API + APIBaseSandBox = "https://api.sandbox.paypal.com/v1" + + // APIBaseLive points to the live version of the API + APIBaseLive = "https://api.paypal.com/v1" +) + +type ( + // Client represents a Paypal REST API Client + Client struct { + client *http.Client + ClientID string + Secret string + APIBase string + Token *TokenResponse + } + + // TokenResponse maps to the API response for the /oauth2/token endpoint + TokenResponse struct { + Scope string `json:"scope"` // "https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/vault/credit-card/.*", + Token string `json:"access_token"` // "EEwJ6tF9x5WCIZDYzyZGaz6Khbw7raYRIBV_WxVvgmsG", + Type string `json:"token_type"` // "Bearer", + AppID string `json:"app_id"` // "APP-6XR95014BA15863X", + ExpiresIn int `json:"expires_in"` // 28800 + ExpiresAt time.Time `json:"expires_at"` + } +)