reward_sciences 0.1.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: 5d3287bcbfff41333a60c6808e7453211285da59
4
+ data.tar.gz: f4bea6053d3d024b0bfd3b7b4d189ec50abfbd37
5
+ SHA512:
6
+ metadata.gz: dd0c396879afd04439c44c165d59126fb6a18ab6ad5685b75f9fc4792435155210579718b25de65549dcc73528c4f569cbd5202493cfbea019c24b8df8abb076
7
+ data.tar.gz: 9901514c1a87a92db4bc57a0609681b4b67644ddfa14ac5df04e0daad1a292b1ed028d0c93d744041de46e753ff773b03b46b86cb822787744b8f9487322d570
data/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ License:
2
+ ========
3
+ The MIT License (MIT)
4
+ http://opensource.org/licenses/MIT
5
+
6
+ Copyright (c) 2014 - 2016 APIMATIC Limited
7
+
8
+ Permission is hereby granted, free of charge, to any person obtaining a copy
9
+ of this software and associated documentation files (the "Software"), to deal
10
+ in the Software without restriction, including without limitation the rights
11
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
+ copies of the Software, and to permit persons to whom the Software is
13
+ furnished to do so, subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in
16
+ all copies or substantial portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,380 @@
1
+ # Getting Started
2
+ ## How to Build
3
+
4
+ This client library is a Ruby gem which can be compiled and used in your Ruby and Ruby on Rails project. This library requires a few gems from the RubyGems repository.
5
+
6
+ 1. Open the command line interface or the terminal and navigate to the folder containing the source code.
7
+ 2. Run ``` gem build reward_sciences.gemspec ``` to build the gem.
8
+ 3. Once built, the gem can be installed on the current work environment using ``` gem install reward_sciences-1.0.gem ```
9
+
10
+ ![Building Gem](http://apidocs.io/illustration/ruby?step=buildSDK&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
11
+
12
+ ## How to Use
13
+
14
+ The following section explains how to use the RewardSciences Ruby Gem in a new Rails project using RubyMine™. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.
15
+
16
+ #### 1. Starting a new project
17
+ Close any existing projects in RubyMine™ by selecting ``` File -> Close Project ```. Next, click on ``` Create New Project ``` to create a new project from scratch.
18
+
19
+ ![Create a new project in RubyMine](http://apidocs.io/illustration/ruby?step=createNewProject0&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
20
+
21
+ Next, provide ``` TestApp ``` as the project name, choose ``` Rails Application ``` as the project type, and click ``` OK ```.
22
+
23
+ ![Create a new Rails Application in RubyMine - step 1](http://apidocs.io/illustration/ruby?step=createNewProject1&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
24
+
25
+ In the next dialog make sure that correct *Ruby SDK* is being used (minimum 2.0.0) and click ``` OK ```.
26
+
27
+ ![Create a new Rails Application in RubyMine - step 2](http://apidocs.io/illustration/ruby?step=createNewProject2&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
28
+
29
+ This will create a new Rails Application project with an existing set of files and folder.
30
+
31
+ #### 2. Add reference of the gem
32
+ In order to use the RewardSciences gem in the new project we must add a gem reference. Locate the ``` Gemfile ``` in the *Project Explorer* window under the ``` TestApp ``` project node. The file contains references to all gems being used in the project. Here, add the reference to the library gem by adding the following line: ``` gem 'reward_sciences', '~> 1.0' ```
33
+
34
+ ![Add references of the Gemfile](http://apidocs.io/illustration/ruby?step=addReference&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
35
+
36
+
37
+ #### 3. Adding a new Rails Controller
38
+ Once the ``` TestApp ``` project is created, a folder named ``` controllers ``` will be visible in the *Project Explorer* under the following path: ``` TestApp > app > controllers ```. Right click on this folder and select ``` New -> Run Rails Generator... ```.
39
+
40
+ ![Run Rails Generator on Controllers Folder](http://apidocs.io/illustration/ruby?step=addCode0&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
41
+
42
+ Selecting the said option will popup a small window where the generator names are displayed. Here, select the ``` controller ``` template.
43
+
44
+ ![Create a new Controller](http://apidocs.io/illustration/ruby?step=addCode1&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
45
+
46
+ Next, a popup window will ask you for a Controller name and included Actions. For controller name provide ``` Hello ``` and include an action named ``` Index ``` and click ``` OK ```.
47
+
48
+ ![Add a new Controller](http://apidocs.io/illustration/ruby?step=addCode2&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
49
+
50
+ A new controller class anmed ``` HelloController ``` will be created in a file named ``` hello_controller.rb ``` containing a method named ``` Index ```. In this method, add code for initialization and a sample for its usage.
51
+
52
+ ![Initialize the library](http://apidocs.io/illustration/ruby?step=addCode3&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0)
53
+
54
+ ## How to Test
55
+
56
+ You can test the generated SDK and the server with automatically generated test
57
+ cases as follows:
58
+
59
+ 1. From terminal/cmd navigate to the root directory of the SDK.
60
+ 2. Invoke: `bundle exec rake`
61
+
62
+ ## Initialization
63
+
64
+ #### Authentication and Initialization
65
+ In order to setup authentication and initialization of the API client, you need the following information.
66
+
67
+ | Parameter | Description |
68
+ |-----------|-------------|
69
+ | o_auth_access_token | The OAuth 2.0 access token to be set before API calls |
70
+
71
+
72
+
73
+ API client can be initialized as following.
74
+
75
+ ```ruby
76
+ # Configuration parameters and credentials
77
+ o_auth_access_token = "o_auth_access_token"; # The OAuth 2.0 access token to be set before API calls
78
+
79
+ client = RewardSciences::RewardSciencesClient.new(o_auth_access_token)
80
+ ```
81
+
82
+ The added initlization code can be debugged by putting a breakpoint in the ``` Index ``` method and running the project in debug mode by selecting ``` Run -> Debug 'Development: TestApp' ```.
83
+
84
+ ![Debug the TestApp](http://apidocs.io/illustration/ruby?step=addCode4&workspaceFolder=Reward Sciences-Ruby&workspaceName=RewardSciences&projectName=reward_sciences&gemName=reward_sciences&gemVer=1.0&initLine=client%20%3D%20RewardSciencesClient.new%28%27o_auth_access_token%27%29)
85
+
86
+ # Class Reference
87
+ ## <a name="list_of_controllers"></a>List of Controllers
88
+
89
+ * [Rewards](#rewards)
90
+ * [RewardCategories](#reward_categories)
91
+ * [Users](#users)
92
+ * [Activities](#activities)
93
+
94
+ ## <a name="rewards"></a>![Class: ](http://apidocs.io/img/class.png ".Rewards") Rewards
95
+
96
+ #### Get singleton instance
97
+ The singleton instance of the ``` Rewards ``` class can be accessed from the API Client.
98
+ ```ruby
99
+ rewards = client.rewards
100
+ ```
101
+
102
+ ### <a name="bid"></a>![Method: ](http://apidocs.io/img/method.png ".Rewards.bid") bid
103
+
104
+ > Bid on a reward auction.
105
+
106
+ ```ruby
107
+ def bid(user_id,
108
+ reward_id,
109
+ amount); end
110
+ ```
111
+
112
+ #### Parameters:
113
+
114
+ | Parameter | Tags | Description |
115
+ |-----------|------|-------------|
116
+ | user_id | ``` Required ``` | The ID of the user who is bidding on the reward auction. |
117
+ | reward_id | ``` Required ``` | The ID of the reward auction to be bid on. |
118
+ | amount | ``` Required ``` | Can be either 'max' (when max bidding) or the number of points the user wants to bid. |
119
+
120
+
121
+
122
+ #### Example Usage:
123
+ ```ruby
124
+ user_id = 225
125
+ reward_id = 225
126
+ amount = 'amount'
127
+
128
+ result = rewards.bid(user_id, reward_id, amount)
129
+
130
+ ```
131
+
132
+
133
+
134
+
135
+ ### <a name="list"></a>![Method: ](http://apidocs.io/img/method.png ".Rewards.list") list
136
+
137
+ > List all the available rewards.
138
+
139
+ ```ruby
140
+ def list(category_id = nil,
141
+ limit = 25,
142
+ offset = 0); end
143
+ ```
144
+
145
+ #### Parameters:
146
+
147
+ | Parameter | Tags | Description |
148
+ |-----------|------|-------------|
149
+ | category_id | ``` Optional ``` | The id of the category to filter rewards by |
150
+ | limit | ``` Optional ``` ``` DefaultValue ``` | The number of rewards you want to be retrieved. |
151
+ | offset | ``` Optional ``` ``` DefaultValue ``` | The number of rewards you want to skip before starting the retrieval. |
152
+
153
+
154
+
155
+ #### Example Usage:
156
+ ```ruby
157
+ category_id = 225
158
+ limit = 25
159
+ offset = 0
160
+
161
+ result = rewards.list(category_id, limit, offset)
162
+
163
+ ```
164
+
165
+
166
+
167
+
168
+ ### <a name="redeem"></a>![Method: ](http://apidocs.io/img/method.png ".Rewards.redeem") redeem
169
+
170
+ > Redeem a reward.
171
+
172
+ ```ruby
173
+ def redeem(user_id,
174
+ reward_id); end
175
+ ```
176
+
177
+ #### Parameters:
178
+
179
+ | Parameter | Tags | Description |
180
+ |-----------|------|-------------|
181
+ | user_id | ``` Required ``` | The ID of the user who is redeeming the reward. |
182
+ | reward_id | ``` Required ``` | The ID of the reward to be redeemed. |
183
+
184
+
185
+
186
+ #### Example Usage:
187
+ ```ruby
188
+ user_id = 225
189
+ reward_id = 225
190
+
191
+ result = rewards.redeem(user_id, reward_id)
192
+
193
+ ```
194
+
195
+
196
+
197
+
198
+ ### <a name="show"></a>![Method: ](http://apidocs.io/img/method.png ".Rewards.show") show
199
+
200
+ > Show a reward's details.
201
+
202
+ ```ruby
203
+ def show(reward_id); end
204
+ ```
205
+
206
+ #### Parameters:
207
+
208
+ | Parameter | Tags | Description |
209
+ |-----------|------|-------------|
210
+ | reward_id | ``` Required ``` | The ID of the reward to be retrieved. |
211
+
212
+
213
+
214
+ #### Example Usage:
215
+ ```ruby
216
+ reward_id = 225
217
+
218
+ result = rewards.show(reward_id)
219
+
220
+ ```
221
+
222
+
223
+
224
+
225
+ [Back to List of Controllers](#list_of_controllers)
226
+ ## <a name="reward_categories"></a>![Class: ](http://apidocs.io/img/class.png ".RewardCategories") RewardCategories
227
+
228
+ #### Get singleton instance
229
+ The singleton instance of the ``` RewardCategories ``` class can be accessed from the API Client.
230
+ ```ruby
231
+ rewardCategories = client.reward_categories
232
+ ```
233
+
234
+ ### <a name="list"></a>![Method: ](http://apidocs.io/img/method.png ".RewardCategories.list") list
235
+
236
+ > List all the available reward categories.
237
+
238
+ ```ruby
239
+ def list(limit = 25,
240
+ offset = 0); end
241
+ ```
242
+
243
+ #### Parameters:
244
+
245
+ | Parameter | Tags | Description |
246
+ |-----------|------|-------------|
247
+ | limit | ``` Optional ``` ``` DefaultValue ``` | The number of reward categories you want to be retrieved. |
248
+ | offset | ``` Optional ``` ``` DefaultValue ``` | The number of reward categories you want to skip before starting the retrieval. |
249
+
250
+
251
+
252
+ #### Example Usage:
253
+ ```ruby
254
+ limit = 25
255
+ offset = 0
256
+
257
+ result = rewardCategories.list(limit, offset)
258
+
259
+ ```
260
+
261
+
262
+
263
+
264
+ [Back to List of Controllers](#list_of_controllers)
265
+ ## <a name="users"></a>![Class: ](http://apidocs.io/img/class.png ".Users") Users
266
+
267
+ #### Get singleton instance
268
+ The singleton instance of the ``` Users ``` class can be accessed from the API Client.
269
+ ```ruby
270
+ users = client.users
271
+ ```
272
+
273
+ ### <a name="show"></a>![Method: ](http://apidocs.io/img/method.png ".Users.show") show
274
+
275
+ > This endpoint lets retrieve a user's details.
276
+
277
+ ```ruby
278
+ def show(user_id); end
279
+ ```
280
+
281
+ #### Parameters:
282
+
283
+ | Parameter | Tags | Description |
284
+ |-----------|------|-------------|
285
+ | user_id | ``` Required ``` | The ID of the user to be retrieved. |
286
+
287
+
288
+
289
+ #### Example Usage:
290
+ ```ruby
291
+ user_id = 225
292
+
293
+ result = users.show(user_id)
294
+
295
+ ```
296
+
297
+
298
+
299
+
300
+ ### <a name="identify"></a>![Method: ](http://apidocs.io/img/method.png ".Users.identify") identify
301
+
302
+ > This endpoint lets you tie a user with his/her activities. You’ll want to identify a user with any relevant information as soon as they log-in or sign-up.
303
+
304
+ ```ruby
305
+ def identify(email,
306
+ first_name = nil,
307
+ last_name = nil); end
308
+ ```
309
+
310
+ #### Parameters:
311
+
312
+ | Parameter | Tags | Description |
313
+ |-----------|------|-------------|
314
+ | email | ``` Required ``` | The user's email address |
315
+ | first_name | ``` Optional ``` | The user's first name |
316
+ | last_name | ``` Optional ``` | The user's last name |
317
+
318
+
319
+
320
+ #### Example Usage:
321
+ ```ruby
322
+ email = 'email'
323
+ first_name = 'first_name'
324
+ last_name = 'last_name'
325
+
326
+ result = users.identify(email, first_name, last_name)
327
+
328
+ ```
329
+
330
+
331
+
332
+
333
+ [Back to List of Controllers](#list_of_controllers)
334
+ ## <a name="activities"></a>![Class: ](http://apidocs.io/img/class.png ".Activities") Activities
335
+
336
+ #### Get singleton instance
337
+ The singleton instance of the ``` Activities ``` class can be accessed from the API Client.
338
+ ```ruby
339
+ activities = client.activities
340
+ ```
341
+
342
+ ### <a name="track"></a>![Method: ](http://apidocs.io/img/method.png ".Activities.track") track
343
+
344
+ > This endpoint lets you track the activities your users perform.
345
+
346
+ ```ruby
347
+ def track(user_id,
348
+ activity_type,
349
+ price = nil,
350
+ record_id = nil); end
351
+ ```
352
+
353
+ #### Parameters:
354
+
355
+ | Parameter | Tags | Description |
356
+ |-----------|------|-------------|
357
+ | user_id | ``` Required ``` | The ID of the user who is performing the activity. |
358
+ | activity_type | ``` Required ``` | The type of activity the user is performing. Example: 'purchased-a-product' |
359
+ | price | ``` Optional ``` | The price related to the activity, if any. Expressed in USD |
360
+ | record_id | ``` Optional ``` | The ID for the record associated with the activity in your database. |
361
+
362
+
363
+
364
+ #### Example Usage:
365
+ ```ruby
366
+ user_id = 225
367
+ activity_type = 'activity_type'
368
+ price = 225
369
+ record_id = 'record_id'
370
+
371
+ result = activities.track(user_id, activity_type, price, record_id)
372
+
373
+ ```
374
+
375
+
376
+
377
+
378
+ [Back to List of Controllers](#list_of_controllers)
379
+
380
+
@@ -0,0 +1,151 @@
1
+ # This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module RewardSciences
4
+ class APIHelper
5
+ # Replaces template parameters in the given url
6
+ # @param [String] The query string builder to replace the template parameters
7
+ # @param [Array] The parameters to replace in the url
8
+ def self.append_url_with_template_parameters(query_builder, parameters)
9
+ # perform parameter validation
10
+ raise ArgumentError, 'Given value for parameter \"query_builder\" is invalid.' unless query_builder.instance_of? String
11
+
12
+ # return if there are no parameters to replace
13
+ if parameters.nil?
14
+ query_builder
15
+ else
16
+ # iterate and append parameters
17
+ parameters.each do |key, value|
18
+ replace_value = ''
19
+
20
+ if value.nil?
21
+ replace_value = ''
22
+ elsif value.instance_of? Array
23
+ value.map!{|element| CGI.escape(element.to_s)}
24
+ replace_value = value.join('/')
25
+ else
26
+ replace_value = CGI.escape(value.to_s)
27
+ end
28
+
29
+ # find the template parameter and replace it with its value
30
+ query_builder = query_builder.gsub('{' + key.to_s + '}', replace_value)
31
+ end
32
+ end
33
+ return query_builder
34
+ end
35
+
36
+ # Appends the given set of parameters to the given query string
37
+ # @param [String] The query string builder to replace the template parameters
38
+ # @param [Array] The parameters to append
39
+ def self.append_url_with_query_parameters(query_builder, parameters)
40
+ # perform parameter validation
41
+ raise ArgumentError, 'Given value for parameter \"query_builder\" is invalid.' unless query_builder.instance_of? String
42
+
43
+ # return if there are no parameters to replace
44
+ if parameters.nil?
45
+ return query_builder
46
+ else
47
+ # remove any nil values
48
+ parameters = parameters.reject { |_key, value| value.nil? }
49
+
50
+ # does the query string already has parameters
51
+ has_params = query_builder.include? '?'
52
+ separator = has_params ? '&' : '?'
53
+
54
+ # append query with separator and parameters and return
55
+ return query_builder << separator << URI.encode_www_form(parameters)
56
+ end
57
+ end
58
+
59
+ # Validates and processes the given Url
60
+ # @param [String] The given Url to process
61
+ # @return [String] Pre-processed Url as string
62
+ def self.clean_url(url)
63
+ # perform parameter validation
64
+ raise ArgumentError, 'Invalid Url.' unless url.instance_of? String
65
+
66
+ # ensure that the urls are absolute
67
+ matches = url.match(%r{^(https?:\/\/[^\/]+)})
68
+ raise ArgumentError, 'Invalid Url format.' if matches.nil?
69
+
70
+ # get the http protocol match
71
+ protocol = matches[1]
72
+
73
+ # check if parameters exist
74
+ index = url.index('?')
75
+
76
+ # remove redundant forward slashes
77
+ query = url[protocol.length...(index != nil ? index : url.length)]
78
+ query.gsub!(%r{\/\/+}, '/')
79
+
80
+ # get the parameters
81
+ parameters = index != nil ? url[url.index('?')...url.length] : ""
82
+
83
+ # return processed url
84
+ return protocol + query + parameters
85
+ end
86
+
87
+ # Parses JSON string.
88
+ # @param [String] A JSON string.
89
+ def self.json_deserialize(json)
90
+ begin
91
+ return JSON.parse(json)
92
+ rescue
93
+ raise TypeError, "Server responded with invalid JSON."
94
+ end
95
+ end
96
+
97
+ # Form encodes a hash of parameters.
98
+ # @param [Hash] The hash of parameters to encode.
99
+ # @return [Hash] A hash with the same parameters form encoded.
100
+ def self.form_encode_parameters(form_parameters)
101
+ encoded = Hash.new
102
+ form_parameters.each do |key, value|
103
+ encoded.merge!(APIHelper.form_encode value, key)
104
+ end
105
+ return encoded
106
+ end
107
+
108
+ # Form encodes an object.
109
+ # @param [Dynamic] An object to form encode.
110
+ # @param [String] The name of the object.
111
+ # @return [Hash] A form encoded representation of the object in the form of a hash.
112
+ def self.form_encode(obj, instance_name)
113
+ retval = Hash.new
114
+
115
+ # If this is a structure, resolve it's field names.
116
+ if obj.kind_of? BaseModel
117
+ obj = obj.to_hash
118
+ end
119
+
120
+ # Create a form encoded hash for this object.
121
+ if obj == nil
122
+ nil
123
+ elsif obj.instance_of? Array
124
+ obj.each_with_index do |value, index|
125
+ retval.merge!(APIHelper.form_encode(value, instance_name + "[" + index.to_s + "]"))
126
+ end
127
+ elsif obj.instance_of? Hash
128
+ obj.each do |key, value|
129
+ retval.merge!(APIHelper.form_encode(value, instance_name + "[" + key + "]"))
130
+ end
131
+ else
132
+ retval[instance_name] = obj
133
+ end
134
+ return retval
135
+ end
136
+ end
137
+ end
138
+
139
+ # extend types to support to_bool
140
+ module ToBoolean
141
+ def to_bool
142
+ return true if self == true || self.to_s.strip =~ /^(true|yes|y|1)$/i
143
+ return false
144
+ end
145
+ end
146
+
147
+ class NilClass; include ToBoolean; end
148
+ class TrueClass; include ToBoolean; end
149
+ class FalseClass; include ToBoolean; end
150
+ class Numeric; include ToBoolean; end
151
+ class String; include ToBoolean; end
@@ -0,0 +1,10 @@
1
+ # This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module RewardSciences
4
+ class Configuration
5
+ class << self
6
+ attr_accessor :base_uri
7
+ attr_accessor :o_auth_access_token
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,75 @@
1
+ # This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module RewardSciences
4
+ class Activities < BaseController
5
+ @@instance = Activities.new
6
+ # Singleton instance of the controller class
7
+ def self.instance
8
+ @@instance
9
+ end
10
+
11
+ # This endpoint lets you track the activities your users perform.
12
+ # @param [Integer] user_id Required parameter: The ID of the user who is performing the activity.
13
+ # @param [String] activity_type Required parameter: The type of activity the user is performing. Example: 'purchased-a-product'
14
+ # @param [Integer] price Optional parameter: The price related to the activity, if any. Expressed in USD
15
+ # @param [String] record_id Optional parameter: The ID for the record associated with the activity in your database.
16
+ # @return Mixed response from the API call
17
+ def track(user_id,
18
+ activity_type,
19
+ price = nil,
20
+ record_id = nil)
21
+
22
+ # Validate required parameters
23
+ if user_id == nil
24
+ raise ArgumentError.new "Required parameter 'user_id' cannot be nil."
25
+ elsif activity_type == nil
26
+ raise ArgumentError.new "Required parameter 'activity_type' cannot be nil."
27
+ end
28
+
29
+ # the base uri for api requests
30
+ _query_builder = Configuration.base_uri.dup
31
+
32
+ # prepare query string for API call
33
+ _query_builder << '/activities'
34
+
35
+ # process optional query parameters
36
+ _query_builder = APIHelper.append_url_with_query_parameters _query_builder, {
37
+ 'user_id' => user_id,
38
+ 'activity_type' => activity_type,
39
+ 'price' => price,
40
+ 'record_id' => record_id
41
+ }
42
+
43
+ # validate and preprocess url
44
+ _query_url = APIHelper.clean_url _query_builder
45
+
46
+ # prepare headers
47
+ _headers = {
48
+ 'user-agent' => 'APIMATIC 2.0',
49
+ 'Authorization' => 'Bearer %s' % (Configuration.o_auth_access_token)
50
+ }
51
+
52
+ # Create the HttpRequest object for the call
53
+ _request = @http_client.post _query_url, headers: _headers
54
+
55
+ # Call the on_before_request callback
56
+ @http_call_back.on_before_request(_request) if @http_call_back
57
+
58
+ # Invoke the API call and get the response
59
+ _response = @http_client.execute_as_string(_request)
60
+
61
+ # Wrap the request and response in an HttpContext object
62
+ _context = HttpContext.new(_request, _response)
63
+
64
+ # Call the on_after_response callback
65
+ @http_call_back.on_after_response(_context) if @http_call_back
66
+
67
+ # Global error handling using HTTP status codes.
68
+ validate_response(_context)
69
+
70
+ # Return appropriate response type
71
+ decoded = APIHelper.json_deserialize(_response.raw_body) if not (_response.raw_body.nil? or _response.raw_body.to_s.strip.empty?)
72
+ return decoded
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,32 @@
1
+ # This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
2
+
3
+ module RewardSciences
4
+ class BaseController
5
+ attr_accessor :http_client, :http_call_back
6
+
7
+ @@http_client = UnirestClient.new
8
+
9
+ def initialize(http_client: nil, http_call_back: nil)
10
+ @http_client = http_client ||= @@http_client
11
+ @http_call_back = http_call_back
12
+ end
13
+
14
+ def validate_response(context)
15
+ if context.response.status_code == 400
16
+ raise APIException.new "400 - Bad Request", context
17
+ elsif context.response.status_code == 401
18
+ raise APIException.new "401 - Unauthorized", context
19
+ elsif context.response.status_code == 403
20
+ raise APIException.new "403 - Forbidden", context
21
+ elsif context.response.status_code == 404
22
+ raise APIException.new "404 - Not Found", context
23
+ elsif context.response.status_code == 415
24
+ raise APIException.new "415 - Unsupported Media Type", context
25
+ elsif context.response.status_code == 500
26
+ raise APIException.new "500 - Server Error", context
27
+ elsif !context.response.status_code.between?(200, 208) #[200,208] = HTTP OK
28
+ raise APIException.new 'HTTP Response Not OK', context
29
+ end
30
+ end
31
+ end
32
+ end