gameball 1.0.1 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c963796b732470ad5e917b83f6575c8fad84236e9b576f0456fb850bd18f2c30
4
- data.tar.gz: 926256461f6b1b9e91ed33cc2d9285528eaa0e308122413614455a294081f7cb
3
+ metadata.gz: 9ba875c89a38d869e418a5633e7971aa0af4bcb549c7805f0ccf3a87f975b4be
4
+ data.tar.gz: 54e13a38d1a96b88ce4d593e1825d83b3b75523427447cc3d22c100b4d2a4fba
5
5
  SHA512:
6
- metadata.gz: 027c6fe74ce3bf72fc4d020f9ea498a5f71b8c09f001b25590f709f9e7f620540eae545981681f5a9877c508cbada9e2ae0e927c08f55e7c1c98b171c1dbd178
7
- data.tar.gz: b9673abe94ed0e73bc68cf9d90e960add4737ffae0bb982be39973c4f5c5a42771c738ded4addcd72c150a5126ce2cc2017ccae9d82454cc591f1bd911b72cdc
6
+ metadata.gz: d6e8ec8fa126bbbf8b96520af518397af909be3302ea3c0b09a7a8e415662da09478564de793d0a57fa94b19b9ae7c59c3354d961f7a0956a34b61a4896c5ff5
7
+ data.tar.gz: 97a487d56517f4e84046ded950ae2efe5559e8ba612333246c31e43ebfd1dc17bc34db6605e18b3afb460728ca94311e28e7dbd84ad044d3e102dba6227dfd59
data/Gemfile.lock CHANGED
@@ -1,36 +1,36 @@
1
- PATH
2
- remote: .
3
- specs:
4
- gameball (1.0.1)
5
- rake (>= 12.0)
6
- rspec (>= 3.0)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- diff-lcs (1.4.4)
12
- rake (12.0.0)
13
- rspec (3.9.0)
14
- rspec-core (~> 3.9.0)
15
- rspec-expectations (~> 3.9.0)
16
- rspec-mocks (~> 3.9.0)
17
- rspec-core (3.9.2)
18
- rspec-support (~> 3.9.3)
19
- rspec-expectations (3.9.2)
20
- diff-lcs (>= 1.2.0, < 2.0)
21
- rspec-support (~> 3.9.0)
22
- rspec-mocks (3.9.1)
23
- diff-lcs (>= 1.2.0, < 2.0)
24
- rspec-support (~> 3.9.0)
25
- rspec-support (3.9.3)
26
-
27
- PLATFORMS
28
- x64-mingw32
29
-
30
- DEPENDENCIES
31
- gameball!
32
- rake (>= 12.0)
33
- rspec (>= 3.0)
34
-
35
- BUNDLED WITH
36
- 2.1.4
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gameball (1.0.1)
5
+ rake (>= 12.0)
6
+ rspec (>= 3.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ diff-lcs (1.4.4)
12
+ rake (12.0.0)
13
+ rspec (3.9.0)
14
+ rspec-core (~> 3.9.0)
15
+ rspec-expectations (~> 3.9.0)
16
+ rspec-mocks (~> 3.9.0)
17
+ rspec-core (3.9.2)
18
+ rspec-support (~> 3.9.3)
19
+ rspec-expectations (3.9.2)
20
+ diff-lcs (>= 1.2.0, < 2.0)
21
+ rspec-support (~> 3.9.0)
22
+ rspec-mocks (3.9.1)
23
+ diff-lcs (>= 1.2.0, < 2.0)
24
+ rspec-support (~> 3.9.0)
25
+ rspec-support (3.9.3)
26
+
27
+ PLATFORMS
28
+ x64-mingw32
29
+
30
+ DEPENDENCIES
31
+ gameball!
32
+ rake (>= 12.0)
33
+ rspec (>= 3.0)
34
+
35
+ BUNDLED WITH
36
+ 2.1.4
data/README.md CHANGED
@@ -28,10 +28,89 @@ require 'gameball'
28
28
 
29
29
  Gameball.api_key="api_key"
30
30
  Gameball.transaction_key="transaction_key"
31
+ # If using API Version 3.0
32
+ Gameball.api_version="v3.0
31
33
  ```
32
34
 
33
35
  ### Example
34
36
 
37
+ #### Create Player
38
+
39
+ ```ruby
40
+ # Example 1
41
+ Gameball::Player.initialize_player({
42
+ playerUniqueId:"player123",
43
+ mobile: "+1234567",
44
+ email: "jon.snow@example.com",
45
+ "playerAttributes":{
46
+ displayName:"Jon Snow",
47
+ firstName: "Jon",
48
+ lastName: "Snow",
49
+ mobile: "+1234567",
50
+ email:"jon.snow@example.com",
51
+ gender:"M",
52
+ dateOfBirth:"1980-09-19T00:00:00.000Z",
53
+ joinDate:"2019-09-19T21:06:29.158Z",
54
+ tags: "VIP,Platinum",
55
+ custom:{
56
+ location:"Miami",
57
+ graduationDate:"2018-07-04T21:06:29.158Z",
58
+ isMarried:false
59
+ }
60
+ }
61
+ })
62
+ # Example 2
63
+ Gameball::Player.initialize_player({
64
+ referrerCode:"CODE11",
65
+ playerUniqueId:"player456",
66
+ playerAttributes:{
67
+ displayName:" Tyrion Lannister",
68
+ firstName:"Tyrion",
69
+ lastName:"Lannister",
70
+ email:"tyrion@example.com",
71
+ gender:"M",
72
+ dateOfBirth:"1978-01-11T00:00:00.000Z",
73
+ joinDate:"2019-09-19T21:06:29.158Z",
74
+ custom:{
75
+ location:"Miami",
76
+ graduationDate:"2018-07-04T21:06:29.158Z",
77
+ isMarried:false
78
+ }
79
+ })
80
+
81
+
82
+ ```
83
+
84
+ #### Retrieve Player
85
+ ```ruby
86
+ Gameball::Player.get_player_info("player123")
87
+
88
+ ```
89
+
90
+ #### Player Balance
91
+ ```ruby
92
+ Gameball::Player.get_player_balance("player123")
93
+
94
+ ```
95
+
96
+ #### Player's Progress
97
+ ```ruby
98
+ Gameball::Player.get_player_progress("player123")
99
+
100
+ ```
101
+
102
+ #### Attach Tags to Player
103
+ ```ruby
104
+ Gameball::Player.attach_tags("player123","VIP,Platinum")
105
+
106
+ ```
107
+
108
+ #### Detach Tags
109
+ ```ruby
110
+ Gameball::Player.detach_tags("player123","VIP,Platinum")
111
+
112
+ ```
113
+
35
114
  #### Sending an Event
36
115
 
37
116
  ```ruby
@@ -56,104 +135,22 @@ Gameball::Event.send_event({
56
135
  rooms:2
57
136
  }
58
137
  },
59
- playerUniqueId:" player123",
60
- playerAttributes:{
61
- displayName:" Jon Snow",
62
- email:"jon.snow@example.com",
63
- dateOfBirth:"1980-09-19T00:00:00.000Z",
64
- joinDate:"2019-09-19T21:06:29.158Z"
65
- }
66
- })
67
- # Example 3
68
- Gameball::Event.send_event({
69
- events:{
70
- reserve:{
71
- rooms:2
72
- }
73
- },
74
- playerUniqueId:" player123",
75
- playerAttributes:{
76
- displayName:" Jon Snow",
77
- email:"jon.snow@example.com",
78
- dateOfBirth:"1980-09-19T00:00:00.000Z",
79
- joinDate:"2019-09-19T21:06:29.158Z",
80
- custom:{
81
- location:"Miami",
82
- graduationDate:"2018-07-04T21:06:29.158Z",
83
- isMarried:false
84
- }
85
- }
138
+ playerUniqueId:" player123"
139
+
86
140
  })
87
141
 
88
142
 
89
143
  ```
90
144
 
91
- #### Create a new Referral
92
-
93
- ```ruby
94
- Gameball::Referral.create_referral({
95
- playerCode:"CODE11",
96
- playerUniqueId:"player456"
97
- }
98
- )
99
- # Example 2
100
- Gameball::Referral.create_referral({
101
- playerCode:"CODE11",
102
- playerUniqueId:"player456",
103
- playerAttributes:{
104
- displayName:" Tyrion Lannister",
105
- firstName:"Tyrion",
106
- lastName:"Lannister",
107
- email:"tyrion@example.com",
108
- gender:"M",
109
- dateOfBirth:"1978-01-11T00:00:00.000Z",
110
- joinDate:"2019-09-19T21:06:29.158Z",
111
- custom:{
112
- location:"Miami",
113
- graduationDate:"2018-07-04T21:06:29.158Z",
114
- isMarried:false
115
- }
116
- }
117
- }
118
- )
119
- ```
120
-
121
- #### Reward Examples
145
+ #### Cashback Examples
122
146
 
123
147
  ```ruby
124
148
  # Example 1
125
- Gameball::Transaction.reward_points({
149
+ Gameball::Transaction.cashback({
126
150
  playerUniqueId:"player123",
127
151
  amount:99.98,
128
152
  transactionId:"tra_123456789"
129
153
  })
130
- # Example 2
131
- Gameball::Transaction.reward_points({
132
- playerUniqueId:"player456",
133
- amount:2500,
134
- transactionId:"tra_123456789",
135
- playerAttributes:{
136
- displayName:" Tyrion Lannister",
137
- firstName:"Tyrion",
138
- lastName:"Lannister",
139
- email:"tyrion@example.com",
140
- gender:"M",
141
- dateOfBirth:"1978-01-11T00:00:00.000Z",
142
- joinDate:"2019-09-19T21:06:29.158Z",
143
- custom:{
144
- location:"Miami",
145
- graduationDate:"2018-07-04T21:06:29.158Z",
146
- isMarried:false
147
- }
148
- }
149
- }
150
- )
151
- ```
152
-
153
- #### Get Player Balance Example
154
-
155
- ```ruby
156
- Gameball::Transaction.get_player_balance("player456")
157
154
  ```
158
155
 
159
156
  #### Hold Points Example
@@ -169,21 +166,29 @@ Gameball::Transaction.hold_points({
169
166
  #### Redeem Example
170
167
 
171
168
  ```ruby
169
+ # Example 1
172
170
  Gameball::Transaction.redeem_points({
173
171
  playerUniqueId:"player456",
174
- amount:10,
175
172
  transactionId:"tra_123456789",
176
173
  holdReference:"2342452352435234",
177
174
  })
175
+
176
+ # Example 2
177
+ Gameball::Transaction.redeem_points({
178
+ playerUniqueId:"player456",
179
+ transactionId:"tra_123456789",
180
+ redeemedAmount:12,
181
+ })
178
182
  ```
179
183
 
180
184
  #### Reverse Transaction Example
181
185
 
182
186
  ```ruby
183
- Gameball::Transaction.reverse_transaction({
184
- playerUniqueId:"player456",
185
- transactionId:"1234567890",
186
- reversedTransactionId:"234567891"
187
+ Gameball::Transaction.refund({
188
+ playerUniqueId:"player456",
189
+ transactionId:"1234567890",
190
+ reverseTransactionId:"234567891",
191
+ amount: nil
187
192
  }
188
193
  )
189
194
  ```
@@ -191,56 +196,121 @@ Gameball::Transaction.reverse_transaction({
191
196
  #### Reverse Hold Example
192
197
 
193
198
  ```ruby
194
- Gameball::Transaction.reverse_hold({
195
- playerUniqueId:" player456",
196
- holdReference:"9245fe4a-d402-451c-b9ed-9c1a04247482"
197
- }
198
- )
199
+ Gameball::Transaction.reverse_hold("9245fe4a-d402-451c-b9ed-9c1a04247482")
199
200
  ```
200
201
 
201
- ### Actions
202
+ #### Manual Transaction Example
202
203
 
203
204
  ```ruby
204
- # Example 1
205
- Gameball::Action.send_action({
206
- playerUniqueId: "your_player_unique_id",
207
- events: {
208
- review: {},
209
- reserve: {
210
- rooms: 2
211
- }
212
- }
205
+ Gameball::Transaction.manual_transaction({
206
+ playerUniqueId:"player123",
207
+ amount:99.98,
208
+ transactionId:"tra_123456789",
209
+ username: "admin_storename",
210
+ reason: "Thank You Gift"
211
+ })
212
+ ```
213
+
214
+ #### List Transactions Example
215
+
216
+ ```ruby
217
+ Gameball::Transaction.list_transactions({
218
+ page:2,
219
+ limit:10
220
+ })
221
+ ```
222
+
223
+ #### Order Examples
224
+
225
+ ```ruby
226
+ Gameball::Order.place_order({
227
+ playerUniqueId:"player456",
228
+ orderId: "6253e03b",
229
+ totalPrice: "100",
230
+ totalPaid: "90",
231
+ totalDiscount: "0",
232
+ totalShipping: "0",
233
+ totalTax: "0",
234
+ lineItems:[
235
+ {
236
+ productId:"197765",
237
+ tag: ["VIP"],
238
+ category: [
239
+ "natural",
240
+ "cosmetics"
241
+ ],
242
+ weight: "20",
243
+ vendor: "nike",
244
+ collection: ["14313", "4343"],
245
+ },
246
+ {
247
+ productId:"875511",
248
+ title: "XPS-15s",
249
+ category: [
250
+ "electronics"
251
+ ],
252
+ vendor: "Dell"
253
+ }
254
+ ],
255
+ discountCodes: [
256
+ "AU7X-8Q7L",
257
+ "BY3V-22GK"
258
+ ],
259
+ extra: {
260
+ paymentMethod: "credit card",
261
+ billingAddress: "Alabama"
262
+ },
263
+ redeemedAmount: 20,
264
+ holdReference: nil,
265
+ guest: false
213
266
  })
267
+ ```
268
+ #### Leaderboard
269
+
270
+ ```ruby
271
+ # Example 1
272
+ Gameball::Leaderboard.get_leaderboard()
273
+
214
274
  # Example 2
215
- Gameball::Action.send_action({
216
- playerUniqueId: "your_player_unique_id",
217
- events: {
218
- review: {},
219
- reserve: {
220
- rooms: 2
221
- }
222
- },
223
- pointsTransaction: {
224
- rewardAmount: 2,
225
- transactionId: "234567890"
226
- }
275
+
276
+ Gameball::Leaderboard.get_leaderboard({limit: 5})
277
+ ```
278
+
279
+ #### Get Player Notifications
280
+
281
+ ```ruby
282
+ # Example 1
283
+ Gameball::Notifications.get_notifications("player123")
284
+
285
+ # Example 2
286
+ Gameball::Notifications.get_notifications("player123",{
287
+ page: 2,
288
+ limit: 10
227
289
  })
228
- # Example 3
229
- Gameball::Action.send_action({
230
- playerUniqueId: "your_player_unique_id",
231
- events: {
232
- review: {},
233
- reserve: {
234
- rooms: 2
235
- }
236
- },
237
- pointsTransaction: {
238
- rewardAmount: 2,
239
- holdReference: "2342452352435234",
240
- transactionId: "234567890"
241
- }
290
+
291
+ ```
292
+
293
+ #### Mark Player Notifications
294
+
295
+ ```ruby
296
+ Gameball::Notifications.mark_notifications({notificationIds: ["123", "3441", "3245"]})
297
+
298
+ ```
299
+
300
+ #### Configurations
301
+
302
+ ```ruby
303
+ # Example 1
304
+ Gameball::Configurations.get_configurations()
305
+
306
+ # Example 2
307
+ Gameball::Configurations.get_configurations({lang: "en"})
308
+
242
309
  ```
243
310
 
311
+
312
+
313
+
244
314
  ### Testing
245
315
 
246
316
  To test run in the terminal `bundle exec rspec spec`
@@ -0,0 +1,19 @@
1
+ module Gameball
2
+ class Configurations
3
+ # include Gameball::Utils
4
+ def self.get_configurations(params={})
5
+ Gameball::Utils.validate(params, [], ["lang"])
6
+ res = Gameball::Utils::request("get", "/integrations/config",params:params)
7
+ unless res.kind_of? Net::HTTPSuccess
8
+ if res.kind_of? Net::HTTPInternalServerError
9
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
10
+ else
11
+ raise Gameball::GameballError.new(res.body)
12
+ end
13
+ else
14
+ return res
15
+ end
16
+ end
17
+ end
18
+ end
19
+
@@ -2,7 +2,11 @@ module Gameball
2
2
  class Event
3
3
  def self.sendEvent(eventBody)
4
4
  # Validating keys in incoming body
5
- Gameball::Utils.validate(eventBody, ["events", "playerUniqueId"], ["playerAttributes"])
5
+ if(Gameball.api_version=="v3.0")
6
+ Gameball::Utils.validate(eventBody, ["events", "playerUniqueId"], ["mobile","email"])
7
+ else
8
+ Gameball::Utils.validate(eventBody, ["events", "playerUniqueId"], ["playerAttributes"])
9
+ end
6
10
  res = Gameball::Utils::request("post", "/integrations/event", eventBody)
7
11
  # Check for HTTP Success and throws error if not success
8
12
  unless res.kind_of? Net::HTTPSuccess
@@ -0,0 +1,19 @@
1
+ module Gameball
2
+ class Leaderboard
3
+ # include Gameball::Utils
4
+ def self.get_leaderboard(params={})
5
+ Gameball::Utils.validate(params, [], ["limit","from","to","playerUniqueId","challengeId"])
6
+ res = Gameball::Utils::request("get", "/integrations/leaderboard",params:params)
7
+ unless res.kind_of? Net::HTTPSuccess
8
+ if res.kind_of? Net::HTTPInternalServerError
9
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
10
+ else
11
+ raise Gameball::GameballError.new(res.body)
12
+ end
13
+ else
14
+ return res
15
+ end
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,32 @@
1
+ module Gameball
2
+ class Notifications
3
+ # include Gameball::Utils
4
+ def self.get_notifications(playerUniqueId,params={})
5
+ Gameball::Utils.validate(params, [], ["limit","page","isRead","lang"])
6
+ res = Gameball::Utils::request("get", "/integrations/notifications/#{playerUniqueId}",params:params)
7
+ unless res.kind_of? Net::HTTPSuccess
8
+ if res.kind_of? Net::HTTPInternalServerError
9
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
10
+ else
11
+ raise Gameball::GameballError.new(res.body)
12
+ end
13
+ else
14
+ return res
15
+ end
16
+ end
17
+ def self.mark_notifications(body)
18
+ Gameball::Utils.validate(body, ["notificationIds"], [])
19
+ res = Gameball::Utils::request("put", "/integrations/notifications",body)
20
+ unless res.kind_of? Net::HTTPSuccess
21
+ if res.kind_of? Net::HTTPInternalServerError
22
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
23
+ else
24
+ raise Gameball::GameballError.new(res.body)
25
+ end
26
+ else
27
+ return res
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,23 @@
1
+ module Gameball
2
+ class Order
3
+ def self.place_order(body)
4
+ # Validating keys in incoming body
5
+ Gameball::Utils.validate(body, ["playerUniqueId","orderId","totalPaid","totalPrice"],
6
+ ["mobile","email","totalShipping","totalTax","totalDiscount","lineItems","discountCodes","extra","redeemedAmount","holdReference","guest",
7
+ "merchant"])
8
+ body[:orderDate] = Time.now.utc.iso8601
9
+ res = Gameball::Utils::request("post", "/Integrations/order", body)
10
+ # Check for HTTP Success and throws error if not success
11
+ unless res.kind_of? Net::HTTPSuccess
12
+ if res.kind_of? Net::HTTPInternalServerError
13
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
14
+ else
15
+ raise Gameball::GameballError.new(res.body)
16
+ end
17
+ else
18
+ return res
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -2,7 +2,7 @@ module Gameball
2
2
  class Player
3
3
  def self.initialize_player(body)
4
4
  # Validating keys in incoming body
5
- Gameball::Utils.validate(body, ["playerAttributes", "playerUniqueId"], [])
5
+ Gameball::Utils.validate(body, ["playerAttributes", "playerUniqueId"], ["mobile","email","referrerCode","levelOrder"])
6
6
  # .iso8601 Throws an exception if not invoked on a valid date object, so it is used to check if the dates are valid
7
7
  begin
8
8
  body[:playerAttributes][:joinDate] = body[:playerAttributes][:joinDate].iso8601
@@ -20,13 +20,70 @@ module Gameball
20
20
  end
21
21
  else
22
22
  return res
23
- return res
24
23
  end
25
24
  end
26
- def self.get_player_info(playerUniqueId,lang="")
27
- body = { playerUniqueId: playerUniqueId }
28
- body["hash"] = Gameball::Utils::hashBody(playerUniqueId: playerUniqueId)
29
- res = Gameball::Utils::request("post", "/integrations/Player/Info", body,lang)
25
+ def self.get_player_info(playerUniqueId)
26
+ if Gameball.api_version!="v3.0"
27
+ body = { playerUniqueId: playerUniqueId }
28
+ body["hash"] = Gameball::Utils::hashBody(playerUniqueId: playerUniqueId)
29
+ res = Gameball::Utils::request("post", "/integrations/Player/Info", body)
30
+ else
31
+ res=Gameball::Utils::request("get","/integrations/player/#{playerUniqueId}")
32
+ end
33
+ # Check for HTTP Success and throws error if not success
34
+ unless res.kind_of? Net::HTTPSuccess
35
+ if res.kind_of? Net::HTTPInternalServerError
36
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
37
+ else
38
+ raise Gameball::GameballError.new(res.body)
39
+ end
40
+ else
41
+ return res
42
+ end
43
+ end
44
+ def self.get_player_balance(playerUniqueId)
45
+ res=Gameball::Utils::request("get","/integrations/player/#{playerUniqueId}/balance")
46
+ # Check for HTTP Success and throws error if not success
47
+ unless res.kind_of? Net::HTTPSuccess
48
+ if res.kind_of? Net::HTTPInternalServerError
49
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
50
+ else
51
+ raise Gameball::GameballError.new(res.body)
52
+ end
53
+ else
54
+ return res
55
+ end
56
+ end
57
+ def self.get_player_progress(playerUniqueId)
58
+ res=Gameball::Utils::request("get","/integrations/player/#{playerUniqueId}/progress")
59
+ # Check for HTTP Success and throws error if not success
60
+ unless res.kind_of? Net::HTTPSuccess
61
+ if res.kind_of? Net::HTTPInternalServerError
62
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
63
+ else
64
+ raise Gameball::GameballError.new(res.body)
65
+ end
66
+ else
67
+ return res
68
+ end
69
+ end
70
+ def self.attach_tags(playerUniqueId,tags)
71
+ body={tags:tags}
72
+ res=Gameball::Utils::request("post","/integrations/player/#{playerUniqueId}/tags",body)
73
+ # Check for HTTP Success and throws error if not success
74
+ unless res.kind_of? Net::HTTPSuccess
75
+ if res.kind_of? Net::HTTPInternalServerError
76
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
77
+ else
78
+ raise Gameball::GameballError.new(res.body)
79
+ end
80
+ else
81
+ return res
82
+ end
83
+ end
84
+ def self.detach_tags(playerUniqueId,tags)
85
+ body={tags:tags}
86
+ res=Gameball::Utils::request("delete","/integrations/player/#{playerUniqueId}/tags",body)
30
87
  # Check for HTTP Success and throws error if not success
31
88
  unless res.kind_of? Net::HTTPSuccess
32
89
  if res.kind_of? Net::HTTPInternalServerError
@@ -15,10 +15,14 @@ module Gameball
15
15
  def self.hold_points(body)
16
16
  # puts body
17
17
  # check if attributes are available
18
-
19
- Gameball::Utils.validate(body, ["playerUniqueId", "amount"], ["otp"])
20
- body[:transactionTime] = Time.now.utc
21
- body = Gameball::Utils::extractAttributesToHash(body)
18
+ if (Gameball.api_version!="v3.0")
19
+ Gameball::Utils.validate(body, ["playerUniqueId", "amount"], ["otp"])
20
+ body[:transactionTime] = Time.now.utc
21
+ body = Gameball::Utils::extractAttributesToHash(body)
22
+ else
23
+ Gameball::Utils.validate(body, ["playerUniqueId", "amount"], ["mobile","email"])
24
+ body[:transactionTime] = Time.now.utc.iso8601
25
+ end
22
26
  res = Gameball::Utils::request("post", "/integrations/transaction/hold", body)
23
27
  unless res.kind_of? Net::HTTPSuccess
24
28
  if res.kind_of? Net::HTTPInternalServerError
@@ -32,9 +36,15 @@ module Gameball
32
36
  end
33
37
  def self.redeem_points(body)
34
38
  # check if attributes are available
35
- Gameball::Utils.validate(body, ["holdReference", "playerUniqueId", "transactionId"], [])
36
- body[:transactionTime] = Time.now.utc
37
- body = Gameball::Utils::extractAttributesToHash(body)
39
+ if (Gameball.api_version!="v3.0")
40
+ Gameball::Utils.validate(body, ["holdReference", "playerUniqueId", "transactionId"], [])
41
+ body[:transactionTime] = Time.now.utc
42
+ body = Gameball::Utils::extractAttributesToHash(body)
43
+ else
44
+ Gameball::Utils.validate(body, ["playerUniqueId", "transactionId"],
45
+ ["mobile","email","redeemedAmount","holdReference"])
46
+ body[:transactionTime] = Time.now.utc.iso8601
47
+ end
38
48
  res = Gameball::Utils::request("post", "/integrations/transaction/redeem", body)
39
49
  unless res.kind_of? Net::HTTPSuccess
40
50
  if res.kind_of? Net::HTTPInternalServerError
@@ -49,7 +59,6 @@ module Gameball
49
59
  def self.reverse_transaction(body)
50
60
  Gameball::Utils.validate(body, ["reversedTransactionId", "playerUniqueId", "transactionId"], [])
51
61
  body[:transactionTime] = Time.now.utc
52
-
53
62
  body = Gameball::Utils::extractAttributesToHash(body)
54
63
  res = Gameball::Utils::request("post", "/integrations/transaction/cancel", body)
55
64
  unless res.kind_of? Net::HTTPSuccess
@@ -62,10 +71,24 @@ module Gameball
62
71
  return res
63
72
  end
64
73
  end
74
+ def self.refund(body)
75
+ Gameball::Utils.validate(body, ["reverseTransactionId", "playerUniqueId", "transactionId"],
76
+ ["mobile","email","amount"])
77
+ body[:transactionTime] = Time.now.utc.iso8601
78
+ res = Gameball::Utils::request("post", "/integrations/transaction/refund", body)
79
+ unless res.kind_of? Net::HTTPSuccess
80
+ if res.kind_of? Net::HTTPInternalServerError
81
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
82
+ else
83
+ raise Gameball::GameballError.new(res.body)
84
+ end
85
+ else
86
+ return res
87
+ end
88
+ end
65
89
  def self.reward_points(body)
66
90
  Gameball::Utils.validate(body, ["playerUniqueId", "amount", "transactionId"], ["playerAttributes"])
67
91
  body[:transactionTime] = Time.now.utc
68
-
69
92
  body = Gameball::Utils::extractAttributesToHash(body)
70
93
  res = Gameball::Utils::request("post", "/integrations/transaction/reward", body)
71
94
  unless res.kind_of? Net::HTTPSuccess
@@ -75,14 +98,68 @@ module Gameball
75
98
  raise Gameball::GameballError.new(res.body)
76
99
  end
77
100
  else
78
- return true
101
+ return res
102
+ end
103
+ end
104
+ def self.cashback(body)
105
+ Gameball::Utils.validate(body, ["playerUniqueId", "amount", "transactionId"], ["mobile","email","merchant"])
106
+ body[:transactionTime] = Time.now.utc.iso8601
107
+ res = Gameball::Utils::request("post", "/integrations/transaction/cashback", body)
108
+ unless res.kind_of? Net::HTTPSuccess
109
+ if res.kind_of? Net::HTTPInternalServerError
110
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
111
+ else
112
+ raise Gameball::GameballError.new(res.body)
113
+ end
114
+ else
115
+ return res
116
+ end
117
+ end
118
+ def self.manual_transaction(body)
119
+ Gameball::Utils.validate(body, ["playerUniqueId", "username", "transactionId","reason"],
120
+ ["mobile","email","amount","points"])
121
+ body[:transactionTime] = Time.now.utc.iso8601
122
+ res = Gameball::Utils::request("post", "/integrations/transaction/manual", body)
123
+ unless res.kind_of? Net::HTTPSuccess
124
+ if res.kind_of? Net::HTTPInternalServerError
125
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
126
+ else
127
+ raise Gameball::GameballError.new(res.body)
128
+ end
129
+ else
130
+ return res
131
+ end
132
+ end
133
+ def self.list_transactions(params={})
134
+ Gameball::Utils.validate(params, [], ["page","limit","direction","from","to","transactionId","status"])
135
+ res = Gameball::Utils::request("get", "/integrations/transaction/list",params:params)
136
+ unless res.kind_of? Net::HTTPSuccess
137
+ if res.kind_of? Net::HTTPInternalServerError
138
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
139
+ else
140
+ raise Gameball::GameballError.new(res.body)
141
+ end
142
+ else
143
+ return res
79
144
  end
80
145
  end
81
146
  def self.reverse_hold(body)
82
147
  # check if holdReference is in body else throw error
148
+ if(Gameball.api_version=="v3.0")
149
+ # If v3.0 holReference is sent instead of body in args
150
+ res = Gameball::Utils::request("delete", "/integrations/transaction/hold/#{body}")
151
+ unless res.kind_of? Net::HTTPSuccess
152
+ if res.kind_of? Net::HTTPInternalServerError
153
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
154
+ else
155
+ raise Gameball::GameballError.new(res.body)
156
+ end
157
+ else
158
+ return res
159
+ end
160
+ end
83
161
  Gameball::Utils.validate(body, ["holdReference", "playerUniqueId"], [])
84
162
  body[:transactionTime] = Time.now.utc
85
-
86
163
  body = Gameball::Utils::extractAttributesToHash(body)
87
164
  res = Gameball::Utils::request("post", "/integrations/transaction/hold", body)
88
165
  unless res.kind_of? Net::HTTPSuccess
@@ -31,5 +31,8 @@ module Gameball
31
31
  body["hash"] = Gameball::Utils::hashBody(playerUniqueId: playerUniqueId, amount: (amount || ""), transactionTime: (transactionTime || ""))
32
32
  body
33
33
  end
34
+ def hash_to_query(hash)
35
+ return URI.encode_www_form(hash)
36
+ end
34
37
  end
35
38
  end
@@ -2,28 +2,31 @@ module Gameball
2
2
  module Utils
3
3
  extend self
4
4
 
5
- def request(verb, path, body = {},lang="")
5
+ def request(verb, path, body = {},lang:"",params:{})
6
+
6
7
  # check for api_version and key and throw error if not included
7
8
  if !Gameball.api_key
8
9
  raise Gameball::GameballError.new("Please provide the api_key before making a request, try Gameball::api_key='your_key'")
9
10
  end
10
11
  uri = URI(Gameball.api_base + "/api" + "/" + Gameball.api_version + path)
11
-
12
+ if params != {}
13
+ uri.query=URI.encode_www_form(params)
14
+ end
12
15
  https = Net::HTTP.new(uri.host, uri.port)
13
16
  https.max_retries = Gameball.max_retries
14
17
  https.read_timeout = Gameball.read_timeout
15
18
  https.keep_alive_timeout = Gameball.keep_alive_timeout
16
19
  https.use_ssl = true
17
-
20
+
18
21
  case verb.downcase
19
22
  when "post"
20
- req = Net::HTTP::Post.new(uri.path, initheader = { "Content-Type" => "application/json" })
23
+ req = Net::HTTP::Post.new(uri, initheader = { "Content-Type" => "application/json" })
21
24
  when "get"
22
- req = Net::HTTP::Get.new(uri.path, initheader = { "Content-Type" => "application/json" })
25
+ req = Net::HTTP::Get.new(uri, initheader = { "Content-Type" => "application/json" })
23
26
  when "put"
24
- req = Net::HTTP::Put.new(uri.path, initheader = { "Content-Type" => "application/json" })
27
+ req = Net::HTTP::Put.new(uri, initheader = { "Content-Type" => "application/json" })
25
28
  when "delete"
26
- req = Net::HTTP::Delete.new(uri.path, initheader = { "Content-Type" => "application/json" })
29
+ req = Net::HTTP::Delete.new(uri, initheader = { "Content-Type" => "application/json" })
27
30
  else
28
31
  raise Gameball::GameballException.new("Please provide a valid HTTP Verb") # will later throw an exception
29
32
  end
@@ -34,6 +37,7 @@ module Gameball
34
37
  req["lang"]=lang
35
38
  end
36
39
  req["APIKey"] = Gameball.api_key
40
+ req["secretKey"]=Gameball.transaction_key
37
41
  res = https.request(req)
38
42
  return res
39
43
  end
@@ -66,8 +70,9 @@ module Gameball
66
70
  if body != {}
67
71
  req.body = body.to_json
68
72
  end
69
- req["APIKey"] = Gameball.api_key
70
73
  Thread.new do
74
+ req["APIKey"] = Gameball.api_key
75
+ req["secretKey"]=Gameball.transaction_key
71
76
  res = https.request(req)
72
77
  return res
73
78
  end
@@ -1,3 +1,3 @@
1
1
  module Gameball
2
- VERSION = "1.0.1" # Version of the SDK
2
+ VERSION = "2.1.3" # Version of the SDK
3
3
  end
data/lib/gameball.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # Requiring all dependencies needed
2
2
  require "net/http"
3
- require "net/http"
4
3
  require "openssl"
5
4
  require "uri"
6
5
  require "Time"
@@ -16,18 +15,21 @@ require_relative "./gameball/models/transaction"
16
15
  require_relative "./gameball/models/referral"
17
16
  require_relative "./gameball/models/coupon"
18
17
  require_relative "./gameball/models/action"
18
+ require_relative "./gameball/models/order"
19
+ require_relative "./gameball/models/leaderboard"
20
+ require_relative "./gameball/models/notifications"
21
+ require_relative "./gameball/models/configurations"
19
22
  require_relative "./gameball/exceptions/gameballException"
20
- require_relative "./gameball/lang"
21
23
 
22
24
  module Gameball
23
- @api_base = "https://api.gameball.co"
25
+ @api_base = "https://api.dev.gameball.app/"
24
26
  @max_retries = 1
25
27
  @read_timeout = 60
26
28
  @keep_alive_timeout = 30
27
29
  @api_version = "v2.0"
28
30
  class << self
29
31
  attr_accessor :api_key
30
- attr_reader :api_version
32
+ attr_accessor :api_version
31
33
  attr_accessor :transaction_key
32
34
  attr_accessor :read_timeout
33
35
  attr_accessor :max_retries
data/test.rb ADDED
@@ -0,0 +1,46 @@
1
+ require "./lib/gameball"
2
+ Gameball.api_key="184be486ad124379a8d1bf6dbe59cd8a"
3
+ Gameball.transaction_key="5cd1cb2bef9f475c85e8d2a6edd85895"
4
+ Gameball.api_version="v3.0"
5
+ res=Gameball::Order.place_order({
6
+ playerUniqueId:"player45126",
7
+ orderId: "6253e0123b",
8
+ totalPrice: "100",
9
+ totalPaid: "90",
10
+ totalDiscount: "0",
11
+ totalShipping: "0",
12
+ totalTax: "0",
13
+ lineItems:[
14
+ {
15
+ productId:"197765",
16
+ tag: ["VIP"],
17
+ category: [
18
+ "natural",
19
+ "cosmetics"
20
+ ],
21
+ weight: "20",
22
+ vendor: "nike",
23
+ collection: ["14313", "4343"],
24
+ },
25
+ {
26
+ productId:"875511",
27
+ title: "XPS-15s",
28
+ category: [
29
+ "electronics"
30
+ ],
31
+ vendor: "Dell"
32
+ }
33
+ ],
34
+ discountCodes: [
35
+ "AU7X-8Q7L",
36
+ "BY3V-22GK"
37
+ ],
38
+ extra: {
39
+ paymentMethod: "credit card",
40
+ billingAddress: "Alabama"
41
+ },
42
+ redeemedAmount: 20,
43
+ holdReference: nil,
44
+ guest: false
45
+ })
46
+ puts res.body
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gameball
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alsouidan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-24 00:00:00.000000000 Z
11
+ date: 2021-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,7 +38,7 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
- description:
41
+ description:
42
42
  email:
43
43
  - alsouidan@gmail.com
44
44
  executables: []
@@ -63,8 +63,12 @@ files:
63
63
  - lib/gameball/exceptions/gameballException.rb
64
64
  - lib/gameball/lang.rb
65
65
  - lib/gameball/models/action.rb
66
+ - lib/gameball/models/configurations.rb
66
67
  - lib/gameball/models/coupon.rb
67
68
  - lib/gameball/models/event.rb
69
+ - lib/gameball/models/leaderboard.rb
70
+ - lib/gameball/models/notifications.rb
71
+ - lib/gameball/models/order.rb
68
72
  - lib/gameball/models/player.rb
69
73
  - lib/gameball/models/referral.rb
70
74
  - lib/gameball/models/transaction.rb
@@ -72,6 +76,7 @@ files:
72
76
  - lib/gameball/utils/request.rb
73
77
  - lib/gameball/utils/validation.rb
74
78
  - lib/gameball/version.rb
79
+ - test.rb
75
80
  homepage: https://www.gameball.co/
76
81
  licenses:
77
82
  - MIT
@@ -79,7 +84,7 @@ metadata:
79
84
  homepage_uri: https://www.gameball.co/
80
85
  source_code_uri: https://github.com/gameballers/gameball-ruby
81
86
  changelog_uri: http://mygemserver.com
82
- post_install_message:
87
+ post_install_message:
83
88
  rdoc_options: []
84
89
  require_paths:
85
90
  - lib
@@ -94,8 +99,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
99
  - !ruby/object:Gem::Version
95
100
  version: '0'
96
101
  requirements: []
97
- rubygems_version: 3.0.3
98
- signing_key:
102
+ rubygems_version: 3.2.32
103
+ signing_key:
99
104
  specification_version: 4
100
105
  summary: Ruby SDK for Gameball's API
101
106
  test_files: []