teespring 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +43 -1
- data/lib/teespring.rb +3 -1
- data/lib/teespring/client.rb +65 -0
- data/lib/teespring/error.rb +11 -0
- data/lib/teespring/response.rb +19 -0
- data/lib/teespring/version.rb +1 -1
- data/teespring.gemspec +2 -0
- metadata +18 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7523636f6488a09cfee2991b1ae426977a310fc3
|
4
|
+
data.tar.gz: c640d1cbdce46177d65948868765a4e02d6745de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35cf607b92d2de3d792286b9a634fc27e174a830c1116850489f2cdf6632e34bb9779d8a57c64a5d5e7e420fc2139b7f6789a40dc1efb07ed1992c94379e9f79
|
7
|
+
data.tar.gz: 04e792e74e104fd3258074dadbb32baebea412e0494d1f4500a8ba0ccad557df8bc6749a9dcd7799b0a893f57c4de75b7b124c0a422a956a50f4dd3d2a16d7c1
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -20,7 +20,42 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
In order to use this gem you must obtain an `app_id` from [Teespring](https://teespring.com/
|
23
|
+
In order to use this gem you must obtain an `app_id` from [Teespring](https://teespring.com/help).
|
24
|
+
|
25
|
+
Create a client:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
client = Teespring::Client.new(app_id: "APP_ID_YOU_REQUESTED_FROM_TEESPRING")
|
29
|
+
```
|
30
|
+
|
31
|
+
Authenticate (this will create a new access token):
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
token = client.authenticate("youremail@example.com", "yourpassword")
|
35
|
+
```
|
36
|
+
|
37
|
+
Alternatively, if you already have an access token you can create the client with the token directly:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
client = Teespring::Client.new(app_id: "APP_ID_YOU_REQUESTED_FROM_TEESPRING", access_token: "YOUR_ACCESS_TOKEN")
|
41
|
+
```
|
42
|
+
|
43
|
+
Once the client is authenticated you can retrieve information about the authenticated (via the access token) user:
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
response = client.me
|
47
|
+
response.body
|
48
|
+
=> {"users"=>[{"id"=>12345, "email"=>"youremail@example.com"}]}
|
49
|
+
|
50
|
+
```
|
51
|
+
|
52
|
+
You can also retrieve a list of campaigns:
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
response = client.campaigns(nil, "active")
|
56
|
+
```
|
57
|
+
|
58
|
+
Additional endpoints and details are available in the [Teespring Documentation](https://api.teespring.com/docs). Additional endpoints can be accessed directly through the `client.get` and `client.post` methods.
|
24
59
|
|
25
60
|
## Development
|
26
61
|
|
@@ -28,6 +63,13 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
28
63
|
|
29
64
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
30
65
|
|
66
|
+
## TODO
|
67
|
+
|
68
|
+
* More Endpoints and response specific adapters
|
69
|
+
* Rate limiting
|
70
|
+
* Pagination
|
71
|
+
* Auto-pagination
|
72
|
+
|
31
73
|
## Contributing
|
32
74
|
|
33
75
|
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/teespring.
|
data/lib/teespring.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Teespring
|
5
|
+
class Client
|
6
|
+
attr_accessor :access_token
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
@app_id = options.delete(:app_id)
|
10
|
+
end
|
11
|
+
|
12
|
+
def connection
|
13
|
+
@connection ||= ::Faraday.new(url: endpoint)
|
14
|
+
end
|
15
|
+
|
16
|
+
def reset
|
17
|
+
@connection = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def authenticate(email, password)
|
21
|
+
@response = post '/v1/auth-tokens', email: email, password: password, app_id: @app_id
|
22
|
+
|
23
|
+
@access_token = @response.body['token']
|
24
|
+
end
|
25
|
+
|
26
|
+
def me
|
27
|
+
@response = get '/me', { access_token: @access_token }
|
28
|
+
end
|
29
|
+
|
30
|
+
def campaigns(search = nil, states = nil)
|
31
|
+
@response = get '/seller/v1/campaigns', { access_token: @access_token, search: search, states: states, page: 1, per_page: 100 }
|
32
|
+
end
|
33
|
+
|
34
|
+
def get(url, params)
|
35
|
+
request(:get, url, params)
|
36
|
+
end
|
37
|
+
|
38
|
+
def post(url, params)
|
39
|
+
request(:post, url, params)
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def request(method, url, params)
|
45
|
+
response = connection.send(method, url, params)
|
46
|
+
|
47
|
+
case response.status
|
48
|
+
when 200..299
|
49
|
+
Teespring::Response.new(response)
|
50
|
+
when 301
|
51
|
+
raise Teespring::Error.new('Not found', response)
|
52
|
+
when 400
|
53
|
+
message = JSON.parse(response.body)['error']['message'] rescue response.reason_phrase
|
54
|
+
|
55
|
+
raise Teespring::Error.new(message, response)
|
56
|
+
else
|
57
|
+
raise Teespring::Error.new('Unknown error', response)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def endpoint
|
62
|
+
"https://api.teespring.com"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Teespring
|
4
|
+
class Response
|
5
|
+
attr_reader :response
|
6
|
+
|
7
|
+
def initialize(response)
|
8
|
+
@response = response
|
9
|
+
end
|
10
|
+
|
11
|
+
def body
|
12
|
+
@body ||= JSON.parse(response.body)
|
13
|
+
end
|
14
|
+
|
15
|
+
def status
|
16
|
+
response.status
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/teespring/version.rb
CHANGED
data/teespring.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teespring
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jeffrafter
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: faraday
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.10'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.10'
|
55
69
|
description: Teespring provides a number of public and private APIs for creating,
|
56
70
|
managing, and purchasing tee-shirts through their platform.
|
57
71
|
email:
|
@@ -70,6 +84,9 @@ files:
|
|
70
84
|
- bin/console
|
71
85
|
- bin/setup
|
72
86
|
- lib/teespring.rb
|
87
|
+
- lib/teespring/client.rb
|
88
|
+
- lib/teespring/error.rb
|
89
|
+
- lib/teespring/response.rb
|
73
90
|
- lib/teespring/version.rb
|
74
91
|
- teespring.gemspec
|
75
92
|
homepage: https://github.com/jeffrafter/teespring
|