tremendous_ruby 2.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 148d25d929893bcb84c532c3ce27ab3b3140f556
4
+ data.tar.gz: 903db9703a07fc29795c1a8d80d48e9b8a1f6428
5
+ SHA512:
6
+ metadata.gz: cff6c6f37a18c24e3ccbf4430b1a59a6bf39b7b777c9dbb405ac073b4f8de91c963a5e83d06de048849259e5c0b78d7badf2178a98e0d59896b7dd61452e85ea
7
+ data.tar.gz: 60799f9ab59ee3fa0d00b55c7beb68e03411020d18890698a9ff6541157740576b02c3a5e51452986ddf0cf532de337c2e90e8ed670760fc0c48c94648ea4ee6
@@ -0,0 +1,18 @@
1
+ module Tremendous
2
+ @@config = {
3
+ base_api_uri: 'https://www.tremendous.com/api/v1/'
4
+ }
5
+
6
+ def self.config
7
+ @@config
8
+ end
9
+
10
+ def self.configure
11
+ yield @@config
12
+ end
13
+
14
+ # Access token
15
+ def self.default_options
16
+ {access_token: @@config[:access_token]}
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ module Tremendous
2
+ class Campaign
3
+ def self.list
4
+ Tremendous::Request.get(
5
+ 'campaigns',
6
+ query: Tremendous.default_options,
7
+ format: 'json'
8
+ )[:campaigns]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
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
@@ -0,0 +1,13 @@
1
+ require 'jwt'
2
+
3
+ module Tremendous
4
+ class Embed
5
+ def self.tokenize(payload)
6
+ JWT.encode(
7
+ payload,
8
+ Tremendous.config[:access_token],
9
+ 'HS256'
10
+ )
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ module Tremendous
2
+ class Error < StandardError
3
+
4
+ def initialize(response)
5
+ @response = response
6
+ super
7
+ end
8
+
9
+ def message
10
+ response_json = JSON.parse(@response.body).with_indifferent_access
11
+ errors = response_json[:errors]
12
+ "Code: #{@response.code}; Data: #{errors}"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module Tremendous
2
+ class FundingSource
3
+
4
+ def self.list(filters={})
5
+ Tremendous::Request.get(
6
+ 'funding_sources',
7
+ query: filters.merge(Tremendous.default_options),
8
+ format: 'json'
9
+ )[:funding_sources]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,19 @@
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
@@ -0,0 +1,30 @@
1
+ module Tremendous
2
+ class Order
3
+
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]
12
+ end
13
+
14
+ def self.list(filters={})
15
+ Tremendous::Request.get(
16
+ 'orders',
17
+ query: filters.merge(Tremendous.default_options),
18
+ format: 'json'
19
+ )[:orders]
20
+ end
21
+
22
+ def self.retrieve(id)
23
+ response = Tremendous::Request.get "orders/#{id}",
24
+ query: Tremendous.default_options,
25
+ format: 'json'
26
+
27
+ response[:order]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,22 @@
1
+ module Tremendous
2
+ class Organization
3
+
4
+ def self.create!(data)
5
+ response = Tremendous::Request.post(
6
+ 'organizations',
7
+ body: data.merge(Tremendous.default_options).to_json,
8
+ headers: { 'Content-Type' => 'application/json' }
9
+ )
10
+
11
+ response[:organization]
12
+ end
13
+
14
+ def self.list
15
+ Tremendous::Request.get(
16
+ 'organizations',
17
+ query: Tremendous.default_options,
18
+ format: 'json'
19
+ )[:organizations]
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,26 @@
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
@@ -0,0 +1,27 @@
1
+ module Tremendous
2
+ class Request
3
+ def self.get(path, *opts)
4
+ handle_response(HTTParty.get(url(path), *opts))
5
+ end
6
+ def self.post(path, *opts)
7
+ handle_response(HTTParty.post(url(path), *opts))
8
+ end
9
+ def self.put(path, *opts)
10
+ handle_response(HTTParty.put(url(path), *opts))
11
+ end
12
+ def self.delete(path, *opts)
13
+ handle_response(HTTParty.delete(url(path), *opts))
14
+ end
15
+ def self.url(path, params={})
16
+ url = URI.join(Tremendous.config[:base_api_uri], path)
17
+ end
18
+
19
+ def self.handle_response(response)
20
+ if response.success?
21
+ response_json = JSON.parse(response.body).with_indifferent_access
22
+ else
23
+ raise Tremendous::Error.new(response)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module Tremendous
2
+ VERSION = '2.0.0'
3
+ end
data/lib/tremendous.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'httparty'
2
+ require 'active_support/core_ext/hash/indifferent_access'
3
+ require 'tremendous/base'
4
+ require 'tremendous/request'
5
+ require 'tremendous/catalog'
6
+ require 'tremendous/campaign'
7
+ require 'tremendous/funding_source'
8
+ require 'tremendous/gift'
9
+ require 'tremendous/order'
10
+ require 'tremendous/organization'
11
+ require 'tremendous/organization_member'
12
+ require 'tremendous/embed'
13
+ require 'tremendous/error'
14
+ require 'tremendous/version'
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tremendous_ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Tremendous Developers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-04-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.2'
20
+ - - "<="
21
+ - !ruby/object:Gem::Version
22
+ version: 5.1.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.2'
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.1.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: httparty
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.14.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.14.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: jwt
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.5.6
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '='
59
+ - !ruby/object:Gem::Version
60
+ version: 1.5.6
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '5.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: mocha
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.1'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.1'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rake
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '10.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '10.0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: simplecov
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.10'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.10'
117
+ - !ruby/object:Gem::Dependency
118
+ name: webmock
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.20'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.20'
131
+ description:
132
+ email:
133
+ - dev@tremendous.com
134
+ executables: []
135
+ extensions: []
136
+ extra_rdoc_files: []
137
+ files:
138
+ - lib/tremendous.rb
139
+ - lib/tremendous/base.rb
140
+ - lib/tremendous/campaign.rb
141
+ - lib/tremendous/catalog.rb
142
+ - lib/tremendous/embed.rb
143
+ - lib/tremendous/error.rb
144
+ - lib/tremendous/funding_source.rb
145
+ - lib/tremendous/gift.rb
146
+ - lib/tremendous/order.rb
147
+ - lib/tremendous/organization.rb
148
+ - lib/tremendous/organization_member.rb
149
+ - lib/tremendous/request.rb
150
+ - lib/tremendous/version.rb
151
+ homepage: https://github.com/GiftRocket/tremendous-ruby
152
+ licenses:
153
+ - MIT
154
+ metadata: {}
155
+ post_install_message:
156
+ rdoc_options: []
157
+ require_paths:
158
+ - lib
159
+ required_ruby_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ requirements: []
170
+ rubyforge_project:
171
+ rubygems_version: 2.4.6
172
+ signing_key:
173
+ specification_version: 4
174
+ summary: GiftRocket Ruby API SDK
175
+ test_files: []