tremendous_ruby 2.2.2 → 3.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28008e8d892e11dff1d134d97f63fd0110c1d53a
4
- data.tar.gz: 4fef86545d294a8f4bdd1f19ae3a8c25b7f83611
3
+ metadata.gz: 31e527a3f588de890644004422ee1d7553b08cbc
4
+ data.tar.gz: e8e658a02236b762394241e202740a8634d6ce1b
5
5
  SHA512:
6
- metadata.gz: fa2c97d93f7a9f5799b04cf88ffb1aff9a716d103f1aad24850b655c603dc1f7612f5f3082b1268d1ff940fb337221c59398ac24e1867dcd17eca44307aee599
7
- data.tar.gz: 71bdb0cbdd728865e61b7ec3456a612ef19c593880c7d146787e68d0b342f92fab3d7f6c71eb9fe5d973a21df398859085e0200b48727962f5b02e5dc8fae49e
6
+ metadata.gz: 832431e228c4c21d4159a2a323668c585748605a44c9a2d0c81e5326cb3931f024785b791d638a895332fc30d8460f56701867c250af50defbc3fb4f7c4acc57
7
+ data.tar.gz: b193b99c2404c789845fa8670d486559557aaf4ec9c738c84523b37aed7841395ea5cdc184e2a4cbc05d79f811f6c528e56c27f6d8882725d16589ce613df58a
@@ -13,6 +13,8 @@ module Tremendous
13
13
 
14
14
  # Access token
15
15
  def self.default_options
16
- {access_token: @@config[:access_token]}
16
+ {
17
+ access_token: @@config[:access_token]
18
+ }
17
19
  end
18
20
  end
@@ -1,9 +1,9 @@
1
1
  module Tremendous
2
2
  class Campaign
3
- def self.list
3
+ def self.list(filters={})
4
4
  Tremendous::Request.get(
5
5
  'campaigns',
6
- query: Tremendous.default_options,
6
+ query: filters,
7
7
  format: 'json'
8
8
  )[:campaigns]
9
9
  end
@@ -12,4 +12,13 @@ module Tremendous
12
12
  "Code: #{@response.code}; Data: #{errors}"
13
13
  end
14
14
  end
15
+
16
+ class BadDataError < Error
17
+ end
18
+
19
+ class PaymentError < Error
20
+ end
21
+
22
+ class AccessError < Error
23
+ end
15
24
  end
@@ -8,5 +8,13 @@ module Tremendous
8
8
  format: 'json'
9
9
  )[:funding_sources]
10
10
  end
11
+
12
+ def self.show(id)
13
+ Tremendous::Request.get(
14
+ "funding_sources/#{id}",
15
+ query: filters.merge(Tremendous.default_options),
16
+ format: 'json'
17
+ )[:funding_source]
18
+ end
11
19
  end
12
20
  end
@@ -2,41 +2,35 @@ module Tremendous
2
2
  class Invoice
3
3
 
4
4
  def self.create!(data={})
5
- data_to_post = data.merge(Tremendous.default_options)
6
-
7
- response = Tremendous::Request.post(
5
+ Tremendous::Request.post(
8
6
  'invoices',
9
7
  {
10
- body: data_to_post.to_json,
8
+ body: data.to_json,
11
9
  headers: { 'Content-Type' => 'application/json' }
12
10
  }
13
11
  )[:invoice]
14
-
15
12
  end
16
13
 
17
14
  def self.list(filters={})
18
15
  Tremendous::Request.get(
19
16
  'invoices',
20
- query: filters.merge(Tremendous.default_options),
21
- format: 'json'
17
+ query: filters,
18
+ format: 'json'
22
19
  )[:invoices]
23
20
  end
24
21
 
25
- def self.delete(id)
26
- Tremendous::Request.delete(
22
+ def self.show(id)
23
+ Tremendous::Request.get(
27
24
  "invoices/#{id}",
28
- query: Tremendous.default_options,
29
25
  format: 'json'
30
26
  )[:invoice]
31
27
  end
32
28
 
33
- def self.render(id)
34
- Tremendous::Request.get(
29
+ def self.delete(id)
30
+ Tremendous::Request.delete(
35
31
  "invoices/#{id}",
36
- query: Tremendous.default_options,
37
- format: 'json'
32
+ format: 'json'
38
33
  )[:invoice]
39
34
  end
40
-
41
35
  end
42
36
  end
@@ -0,0 +1,24 @@
1
+ module Tremendous
2
+ class Member
3
+
4
+ def self.create!(data)
5
+ Tremendous::Request.post(
6
+ "members",
7
+ body: data.to_json,
8
+ headers: { 'Content-Type' => 'application/json' }
9
+ )[:member]
10
+ end
11
+
12
+ def self.list(filters={})
13
+ Tremendous::Request.get(
14
+ "members",
15
+ query: filters,
16
+ format: 'json'
17
+ )[:members]
18
+ end
19
+
20
+ def self.show(id)
21
+ Tremendous::Request.get("members/#{id}")[:member]
22
+ end
23
+ end
24
+ end
@@ -2,29 +2,23 @@ module Tremendous
2
2
  class Order
3
3
 
4
4
  def self.create!(data={})
5
- data_to_post = data.merge(Tremendous.default_options)
6
-
7
- response = Tremendous::Request.post 'orders',
8
- body: data_to_post.to_json,
9
- headers: { 'Content-Type' => 'application/json' }
10
-
11
- response[:order]
5
+ Tremendous::Request.post(
6
+ 'orders',
7
+ body: data.to_json,
8
+ headers: { 'Content-Type' => 'application/json' }
9
+ )[:order]
12
10
  end
13
11
 
14
12
  def self.list(filters={})
15
13
  Tremendous::Request.get(
16
14
  'orders',
17
- query: filters.merge(Tremendous.default_options),
15
+ query: filters,
18
16
  format: 'json'
19
17
  )[:orders]
20
18
  end
21
19
 
22
20
  def self.retrieve(id)
23
- response = Tremendous::Request.get "orders/#{id}",
24
- query: Tremendous.default_options,
25
- format: 'json'
26
-
27
- response[:order]
21
+ Tremendous::Request.get("orders/#{id}")[:order]
28
22
  end
29
23
  end
30
24
  end
@@ -1,22 +1,26 @@
1
1
  module Tremendous
2
2
  class Organization
3
-
4
3
  def self.create!(data)
5
- response = Tremendous::Request.post(
4
+ Tremendous::Request.post(
6
5
  'organizations',
7
- body: data.merge(Tremendous.default_options).to_json,
6
+ body: data.to_json,
8
7
  headers: { 'Content-Type' => 'application/json' }
9
- )
10
-
11
- response[:organization]
8
+ )[:organization]
12
9
  end
13
10
 
14
- def self.list
11
+ def self.list(filters={})
15
12
  Tremendous::Request.get(
16
13
  'organizations',
17
- query: Tremendous.default_options,
18
- format: 'json'
14
+ query: filters
19
15
  )[:organizations]
20
16
  end
17
+
18
+ def self.create_access_token!(id, data={})
19
+ Tremendous::Request.post(
20
+ "organizations/#{id}/access_token",
21
+ body: data.to_json,
22
+ headers: { 'Content-Type' => 'application/json' }
23
+ )[:access_token]
24
+ end
21
25
  end
22
26
  end
@@ -0,0 +1,15 @@
1
+ module Tremendous
2
+ class Product
3
+ def self.list(filters={})
4
+ Tremendous::Request.get(
5
+ 'products',
6
+ query: filters,
7
+ format: 'json'
8
+ )[:products]
9
+ end
10
+
11
+ def self.show(id)
12
+ Tremendous::Request.get("products/#{id}")[:product]
13
+ end
14
+ end
15
+ end
@@ -1,17 +1,29 @@
1
1
  module Tremendous
2
2
  class Request
3
- def self.get(path, *opts)
4
- handle_response(HTTParty.get(url(path), *opts))
3
+ def self.get(path, data={}, *opts)
4
+ handle_response(_execute(:get, url(path), data, *opts))
5
5
  end
6
- def self.post(path, *opts)
7
- handle_response(HTTParty.post(url(path), *opts))
6
+
7
+ def self.post(path, data={}, *opts)
8
+ handle_response(_execute(:post, url(path), data, *opts))
8
9
  end
9
- def self.put(path, *opts)
10
- handle_response(HTTParty.put(url(path), *opts))
10
+
11
+ def self.put(path, data={}, *opts)
12
+ handle_response(_execute(:put, url(path), data, *opts))
11
13
  end
12
- def self.delete(path, *opts)
13
- handle_response(HTTParty.delete(url(path), *opts))
14
+
15
+ def self.delete(path, data={}, *opts)
16
+ handle_response(_execute(:delete, url(path), data, *opts))
14
17
  end
18
+
19
+ def self._execute(method, url, data={}, *opts)
20
+ data[:headers] = {
21
+ 'authorization' => "Bearer #{Tremendous.default_options[:access_token]}"
22
+ }.merge(data.class == Hash ? data[:headers] || {} : {})
23
+
24
+ HTTParty.send(method, url, data, *opts)
25
+ end
26
+
15
27
  def self.url(path, params={})
16
28
  url = URI.join(Tremendous.config[:base_api_uri], path)
17
29
  end
@@ -20,7 +32,16 @@ module Tremendous
20
32
  if response.success?
21
33
  response_json = JSON.parse(response.body).with_indifferent_access
22
34
  else
23
- raise Tremendous::Error.new(response)
35
+ case response.code
36
+ when 400
37
+ raise Tremendous::BadDataError.new(response)
38
+ when 401
39
+ raise Tremendous::AccessError.new(response)
40
+ when 402
41
+ raise Tremendous::PaymentError.new(response)
42
+ else
43
+ raise Tremendous::Error.new(response)
44
+ end
24
45
  end
25
46
  end
26
47
  end
@@ -0,0 +1,15 @@
1
+ module Tremendous
2
+ class Reward
3
+ def self.list(filters={})
4
+ Tremendous::Request.get(
5
+ 'rewards',
6
+ query: filters,
7
+ format: 'json'
8
+ )[:rewards]
9
+ end
10
+
11
+ def self.show(id)
12
+ response = Tremendous::Request.get("rewards/#{id}")[:reward]
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Tremendous
2
- VERSION = '2.2.2'
2
+ VERSION = '3.0.0'
3
3
  end
@@ -0,0 +1,27 @@
1
+ module Tremendous
2
+ class Webhook
3
+ def self.create!(url, data={})
4
+ Tremendous::Request.post(
5
+ 'webhooks',
6
+ body: {url: url}.merge(data).to_json,
7
+ headers: { 'Content-Type' => 'application/json' }
8
+ )[:webhook]
9
+ end
10
+
11
+ def self.events(id)
12
+ Tremendous::Request.get("webhooks/#{id}/events")[:events]
13
+ end
14
+
15
+ def self.retrieve(id)
16
+ response = Tremendous::Request.get("webhooks/#{id}")[:webhook]
17
+ end
18
+
19
+ def self.simulate!(id, event, data={})
20
+ Tremendous::Request.post(
21
+ "webhooks/#{id}/simulate",
22
+ body: {event: event}.merge(data).to_json,
23
+ headers: { 'Content-Type' => 'application/json' }
24
+ )
25
+ end
26
+ end
27
+ end
data/lib/tremendous.rb CHANGED
@@ -2,14 +2,15 @@ require 'httparty'
2
2
  require 'active_support/core_ext/hash/indifferent_access'
3
3
  require 'tremendous/base'
4
4
  require 'tremendous/request'
5
- require 'tremendous/catalog'
6
5
  require 'tremendous/campaign'
7
6
  require 'tremendous/funding_source'
8
- require 'tremendous/gift'
7
+ require 'tremendous/reward'
9
8
  require 'tremendous/invoice'
10
9
  require 'tremendous/order'
11
10
  require 'tremendous/organization'
12
- require 'tremendous/organization_member'
11
+ require 'tremendous/member'
12
+ require 'tremendous/product'
13
13
  require 'tremendous/embed'
14
14
  require 'tremendous/error'
15
+ require 'tremendous/webhook'
15
16
  require 'tremendous/version'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tremendous_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tremendous Developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-29 00:00:00.000000000 Z
11
+ date: 2019-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -138,17 +138,18 @@ files:
138
138
  - lib/tremendous.rb
139
139
  - lib/tremendous/base.rb
140
140
  - lib/tremendous/campaign.rb
141
- - lib/tremendous/catalog.rb
142
141
  - lib/tremendous/embed.rb
143
142
  - lib/tremendous/error.rb
144
143
  - lib/tremendous/funding_source.rb
145
- - lib/tremendous/gift.rb
146
144
  - lib/tremendous/invoice.rb
145
+ - lib/tremendous/member.rb
147
146
  - lib/tremendous/order.rb
148
147
  - lib/tremendous/organization.rb
149
- - lib/tremendous/organization_member.rb
148
+ - lib/tremendous/product.rb
150
149
  - lib/tremendous/request.rb
150
+ - lib/tremendous/reward.rb
151
151
  - lib/tremendous/version.rb
152
+ - lib/tremendous/webhook.rb
152
153
  homepage: https://github.com/GiftRocket/tremendous-ruby
153
154
  licenses:
154
155
  - MIT
@@ -169,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  version: '0'
170
171
  requirements: []
171
172
  rubyforge_project:
172
- rubygems_version: 2.4.6
173
+ rubygems_version: 2.6.11
173
174
  signing_key:
174
175
  specification_version: 4
175
176
  summary: Tremendous Ruby API SDK
@@ -1,11 +0,0 @@
1
- module Tremendous
2
- class Catalog
3
- def self.list(filters={})
4
- Tremendous::Request.get(
5
- 'catalog',
6
- query: filters.merge(Tremendous.default_options),
7
- format: 'json'
8
- )[:catalog]
9
- end
10
- end
11
- end
@@ -1,19 +0,0 @@
1
- module Tremendous
2
- class Gift
3
-
4
- def self.list(filters={})
5
- response = Tremendous::Request.get(
6
- 'gifts',
7
- query: filters.merge(Tremendous.default_options),
8
- format: 'json'
9
- )[:gifts]
10
- end
11
-
12
- def self.retrieve(id)
13
- response = Tremendous::Request.get "gifts/#{id}",
14
- query: Tremendous.default_options,
15
- format: 'json'
16
- response[:gift]
17
- end
18
- end
19
- end
@@ -1,26 +0,0 @@
1
- module Tremendous
2
- class OrganizationMember
3
-
4
- def self.to_path(organization_id)
5
- "organizations/#{organization_id}/members"
6
- end
7
-
8
- def self.create!(organization_id, data)
9
- response = Tremendous::Request.post(
10
- to_path(organization_id),
11
- body: data.merge(Tremendous.default_options).to_json,
12
- headers: { 'Content-Type' => 'application/json' }
13
- )
14
-
15
- response[:member]
16
- end
17
-
18
- def self.list(organization_id)
19
- Tremendous::Request.get(
20
- to_path(organization_id),
21
- query: Tremendous.default_options,
22
- format: 'json'
23
- )[:members]
24
- end
25
- end
26
- end