alphaSDK 0.2.0 → 0.2.8

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.
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "gameball"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,174 @@
1
+ # This file is not to be executed, this is for offering examples for the usage of the SDK
2
+ require "gameball"
3
+ Gameball.api_key = "7c7636658209418c9a82306a421f76a5"
4
+ Gameball.api_version = "v2.0"
5
+ Gameball::transaction_key = "26e1967d89114388bdd1772587c336c8"
6
+ # Events
7
+ # Example 1
8
+ Gameball::Event.send_event({
9
+ events: {
10
+ place_order: {
11
+ total_amount: "100",
12
+ category: [
13
+ "electronics",
14
+ "cosmetics",
15
+ ],
16
+ },
17
+ review: {},
18
+ },
19
+ playerUniqueId: "player123",
20
+ })
21
+ # Example 2
22
+ Gameball::Event.send_event({
23
+ events: {
24
+ reserve: {
25
+ rooms: 2,
26
+ },
27
+ },
28
+ playerUniqueId: " player123",
29
+ playerAttributes: {
30
+ displayName: " Jon Snow",
31
+ email: "jon.snow@example.com",
32
+ dateOfBirth: "1980-09-19T00:00:00.000Z",
33
+ joinDate: "2019-09-19T21:06:29.158Z",
34
+ },
35
+ })
36
+ # Example 3
37
+ Gameball::Event.send_event({
38
+ events: {
39
+ reserve: {
40
+ rooms: 2,
41
+ },
42
+ },
43
+ playerUniqueId: " player123",
44
+ playerAttributes: {
45
+ displayName: " Jon Snow",
46
+ email: "jon.snow@example.com",
47
+ dateOfBirth: "1980-09-19T00:00:00.000Z",
48
+ joinDate: "2019-09-19T21:06:29.158Z",
49
+ custom: {
50
+ location: "Miami",
51
+ graduationDate: "2018-07-04T21:06:29.158Z",
52
+ isMarried: false,
53
+ },
54
+ },
55
+ })
56
+ # Referrals
57
+ # Example 1
58
+ Gameball::Referral.create_referral({
59
+ playerCode: "CODE11",
60
+ playerUniqueId: "player456",
61
+ })
62
+ # Example 2
63
+ Gameball::Referral.create_referral({
64
+ playerCode: "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
+ # Reward
82
+ # Example 1
83
+ Gameball::Transaction.reward_points({
84
+ playerUniqueId: "player123",
85
+ amount: 99.98,
86
+ transactionId: "tra_123456789"
87
+ })
88
+ # Example 2
89
+ Gameball::Transaction.reward_points({
90
+ playerUniqueId: "player456",
91
+ amount: 2500,
92
+ transactionId: "tra_123456789",
93
+ playerAttributes: {
94
+ displayName: " Tyrion Lannister",
95
+ firstName: "Tyrion",
96
+ lastName: "Lannister",
97
+ email: "tyrion@example.com",
98
+ gender: "M",
99
+ dateOfBirth: "1978-01-11T00:00:00.000Z",
100
+ joinDate: "2019-09-19T21:06:29.158Z",
101
+ custom: {
102
+ location: "Miami",
103
+ graduationDate: "2018-07-04T21:06:29.158Z",
104
+ isMarried: false,
105
+ },
106
+ }
107
+ })
108
+ # Get Player Balance
109
+ Gameball::Transaction.get_player_balance("player456")
110
+ # Hold
111
+ # Example 1
112
+ Gameball::Transaction.hold_points({
113
+ playerUniqueId: "player456",
114
+ amount: 98.89
115
+ })
116
+ # Redeem
117
+ # Example 1
118
+ Gameball::Transaction.redeem_points({
119
+ playerUniqueId: "player456",
120
+ amount: 10,
121
+ transactionId: "tra_123456789",
122
+ holdReference: "2342452352435234"
123
+ })
124
+ # Reverse Transaction
125
+ # Example 1
126
+ Gameball::Transaction.reverse_transaction({
127
+ playerUniqueId: "player456",
128
+ transactionId: "1234567890",
129
+ reversedTransactionId: "234567891"
130
+ })
131
+ Gameball::Transaction.reverse_hold({
132
+ playerUniqueId: " player456",
133
+ holdReference: "9245fe4a-d402-451c-b9ed-9c1a04247482"
134
+ })
135
+
136
+ # Action
137
+ # Example 1
138
+ Gameball::Action.send_action({
139
+ playerUniqueId: "your_player_unique_id",
140
+ events: {
141
+ review: {},
142
+ reserve: {
143
+ rooms: 2
144
+ }
145
+ }
146
+ })
147
+ # Example 2
148
+ Gameball::Action.send_action({
149
+ playerUniqueId: "your_player_unique_id",
150
+ events: {
151
+ review: {},
152
+ reserve: {
153
+ rooms: 2
154
+ }
155
+ },
156
+ pointsTransaction: {
157
+ rewardAmount: 2,
158
+ transactionId: "234567890"
159
+ }
160
+ })
161
+ # Example 3
162
+ Gameball::Action.send_action({
163
+ playerUniqueId: "your_player_unique_id",
164
+ events: {
165
+ review: {},
166
+ reserve: {
167
+ rooms: 2
168
+ }
169
+ },
170
+ pointsTransaction: {
171
+ rewardAmount: 2,
172
+ holdReference: "2342452352435234",
173
+ transactionId: "234567890"
174
+ }
@@ -0,0 +1,29 @@
1
+ require_relative 'lib/gameball/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "alphaSDK"
5
+ spec.version = Gameball::VERSION
6
+ spec.authors = ["Alsouidan"]
7
+ spec.email = ["alsouidan@gmail.com"]
8
+
9
+ spec.summary = "Ruby SDK for Gameball's API"
10
+ spec.homepage = "https://www.gameball.co/"
11
+ spec.license = "MIT"
12
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
13
+ spec.add_dependency 'rake','>= 12.0'
14
+ spec.add_dependency 'rspec','>= 3.0'
15
+ # spec.metadata["allowed_push_host"] = "https://github.com/Alsouidan/alphasdk"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "http://mygemserver.com"
19
+ spec.metadata["changelog_uri"] = "http://mygemserver.com"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+ end
@@ -1,11 +1,12 @@
1
+ # Requiring all dependencies needed
1
2
  require "net/http"
2
3
  require "net/http"
3
4
  require "openssl"
4
5
  require "uri"
5
- require 'Time'
6
- require 'digest/sha1'
7
- require 'json'
8
- require 'async'
6
+ require "Time"
7
+ require "digest/sha1"
8
+ require "json"
9
+ # Requiring all the other files to help us require this fiel only
9
10
  require_relative "./gameball/utils/request"
10
11
  require_relative "./gameball/utils/helper"
11
12
  require_relative "./gameball/utils/validation"
@@ -13,23 +14,23 @@ require_relative "./gameball/models/player"
13
14
  require_relative "./gameball/models/event"
14
15
  require_relative "./gameball/models/transaction"
15
16
  require_relative "./gameball/models/referral"
17
+ require_relative "./gameball/models/coupon"
18
+ require_relative "./gameball/models/action"
16
19
  require_relative "./gameball/exceptions/gameballException"
17
20
 
18
-
19
21
  module Gameball
20
- @api_base = "https://gb-api.azurewebsites.net"
21
- @max_retries=1
22
- @read_timeout=60
23
- @keep_alive_timeout=30
24
- @api_version="v1.0"
25
- class << self
26
- attr_accessor :api_key
27
- attr_accessor :api_version
28
- attr_accessor :transaction_key
29
- attr_accessor :read_timeout
30
- attr_accessor :max_retries
31
- attr_reader :keep_alive_timeout
32
- attr_reader :api_base
33
-
34
- end
22
+ @api_base = "https://gb-api.azurewebsites.net"
23
+ @max_retries = 1
24
+ @read_timeout = 60
25
+ @keep_alive_timeout = 30
26
+ @api_version = "v2.0"
27
+ class << self
28
+ attr_accessor :api_key
29
+ attr_accessor :api_version
30
+ attr_accessor :transaction_key
31
+ attr_accessor :read_timeout
32
+ attr_accessor :max_retries
33
+ attr_reader :keep_alive_timeout
34
+ attr_reader :api_base
35
+ end
35
36
  end
@@ -1,7 +1,7 @@
1
1
  module Gameball
2
- class GameballError < StandardError
3
- def initialize (msg="Something went wrong while authorizing your request")
4
- super(msg)
5
- end
2
+ class GameballError < StandardError # Custom GameballError that inherits from Ruby StandardError
3
+ def initialize(msg = "Something went wrong while authorizing your request")
4
+ super(msg)
6
5
  end
7
- end
6
+ end
7
+ end
@@ -1,13 +1,31 @@
1
1
  module Gameball
2
- class Action
3
- def send_action(body)
4
- Gameball::Utils.validate(body,['playerUniqueId'],['playerAttributes','events','pointsTransaction'])
5
- res=Gameball::Utils::request("post","/Integrations/Action",body)
6
- unless res.kind_of? Net::HTTPSuccess
7
- raise Gameball::GameballError.new(res) # use custom message
8
- else
9
- return res
10
- end
2
+ class Action
3
+ def self.send_action(body)
4
+ # Validating keys in incoming body
5
+ Gameball::Utils.validate(body, ["playerUniqueId"], ["playerAttributes", "events", "pointsTransaction"])
6
+ if body.has_key? (:pointsTransaction)
7
+ # Validating pointsTransaction object in body
8
+ Gameball::Utils.validate(body[:pointsTransaction], ['transactionId'],['rewardAmount','holdReference'])
9
+ body[:pointsTransaction][:transactionTime]=Time.now.utc
10
+ amount=''
11
+ if body[:pointsTransaction].has_key?(:rewardAmount)
12
+ amount=body[:pointsTransaction][:rewardAmount]
11
13
  end
14
+ body[:pointsTransaction]['hash']=Gameball::Utils.hashBody(playerUniqueId:body[:playerUniqueId],transactionTime:body[:pointsTransaction][:transactionTime],amount:amount)
15
+ body[:pointsTransaction][:transactionTime]=Time.now.utc.iso8601
16
+ end
17
+
18
+ res = Gameball::Utils::request("post", "/Integrations/Action", body)
19
+ # Check for HTTP Success and throws error if not success
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
12
29
  end
13
- end
30
+ end
31
+ end
@@ -1,37 +1,58 @@
1
1
  module Gameball
2
- class Coupon
3
- def self.create_discount_coupon(body)
4
- Gameball::Utils.validate(body,['playerUniqueId','transactionTime'],['startAt','endsAt','entitledCollectionIds','entitledProductIds',
5
- 'oncePerCustomer','prerequisiteQuantityRange','prerequisiteShippingPriceRange','prerequisiteSubtotalRange',
6
- 'prerequisiteCollectionIds','prerequisiteProductIds','code','usageLimit','value','valueType','cap'])
7
- body["hash"]=Gameball::Utils::hashBody(playerUniqueId:body[:playerUniqueId])
8
- res=Gameball::Utils::request("post","/Integrations/Coupon",body)
9
- unless res.kind_of? Net::HTTPSuccess
10
- raise Gameball::GameballError.new(res) # use custom message
11
- else
12
- return res
13
- end
2
+ class Coupon
3
+ def self.create_discount_coupon(body)
4
+ # Validating keys in incoming body
5
+ Gameball::Utils.validate(body, ["playerUniqueId"], ["startAt", "endsAt", "entitledCollectionIds", "entitledProductIds",
6
+ "oncePerCustomer", "prerequisiteQuantityRange", "prerequisiteShippingPriceRange", "prerequisiteSubtotalRange",
7
+ "prerequisiteCollectionIds", "prerequisiteProductIds", "code", "usageLimit", "value", "valueType", "cap"])
8
+
9
+ body[:transactionTime] = Time.now.utc
10
+ body["hash"] = Gameball::Utils::hashBody(playerUniqueId: body[:playerUniqueId])
11
+ res = Gameball::Utils::request("post", "/Integrations/Coupon", body)
12
+ # Check for HTTP Success and throws error if not success
13
+ unless res.kind_of? Net::HTTPSuccess
14
+ if res.kind_of? Net::HTTPInternalServerError
15
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
16
+ else
17
+ raise Gameball::GameballError.new(res.body)
18
+ end
19
+ else
20
+ return res
21
+ end
14
22
  end
15
23
  def self.validate_discount_coupon(body)
16
- Gameball::Utils.validate(body,['playerUniqueId','code','transactionTime'])
17
- body["hash"]=Gameball::Utils::hashBody(playerUniqueId:body[:playerUniqueId])
18
- res=Gameball::Utils::request("post","/Integrations/Coupon/Validate",body)
19
- unless res.kind_of? Net::HTTPSuccess
20
- raise Gameball::GameballError.new(res) # use custom message
21
- else
22
- return res
24
+ # Validating keys in incoming body
25
+ Gameball::Utils.validate(body, ["playerUniqueId", "code"])
26
+ body[:transactionTime] = Time.now.utc
27
+ body["hash"] = Gameball::Utils::hashBody(playerUniqueId: body[:playerUniqueId])
28
+ res = Gameball::Utils::request("post", "/Integrations/Coupon/Validate", body)
29
+ # Check for HTTP Success and throws error if not success
30
+ unless res.kind_of? Net::HTTPSuccess
31
+ if res.kind_of? Net::HTTPInternalServerError
32
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
33
+ else
34
+ raise Gameball::GameballError.new(res.body)
23
35
  end
36
+ else
37
+ return res
38
+ end
24
39
  end
25
40
  def self.redeem_discount_coupon(body)
26
- Gameball::Utils.validate(body,['playerUniqueId','code','transactionTime'])
27
- body["hash"]=Gameball::Utils::hashBody(playerUniqueId:body[:playerUniqueId])
28
- res=Gameball::Utils::request("post","/Integrations/Coupon/Redeem",body)
29
- unless res.kind_of? Net::HTTPSuccess
30
- raise Gameball::GameballError.new(res) # use custom message
31
- else
32
- return true
41
+ # Check for HTTP Success and throws error if not success
42
+ Gameball::Utils.validate(body, ["playerUniqueId", "code"])
43
+ body[:transactionTime] = Time.now.utc
44
+ body["hash"] = Gameball::Utils::hashBody(playerUniqueId: body[:playerUniqueId])
45
+ res = Gameball::Utils::request("post", "/Integrations/Coupon/Redeem", body)
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)
33
52
  end
53
+ else
54
+ return true
55
+ end
34
56
  end
35
-
36
- end
37
- end
57
+ end
58
+ end
@@ -1,29 +1,34 @@
1
1
  module Gameball
2
- class Event
3
- # include Gameball::Request
4
- def self.sendEvent (eventBody)
5
- Gameball::Utils.validate(eventBody,['events','playerUniqueId'],['playerAttributes'])
6
- if eventBody.has_key?(:playerAttributes)
7
- # Gameball::Utils.validate(eventBody[:playerAttributes],['displayName','firstName','lastName','email','gender','mobileNumber','dateOfBirth','joinDate'],['custom'])
8
- end
9
- res=Gameball::Utils::request("post","/integrations/event",eventBody)
10
- unless res.kind_of? Net::HTTPSuccess
11
- raise Gameball::GameballError.new(res.body) # use custom message
12
- else
13
- return true
14
- end
2
+ class Event
3
+ def self.sendEvent(eventBody)
4
+ # Validating keys in incoming body
5
+ Gameball::Utils.validate(eventBody, ["events", "playerUniqueId"], ["playerAttributes"])
6
+ res = Gameball::Utils::request("post", "/integrations/event", eventBody)
7
+ # Check for HTTP Success and throws error if not success
8
+ unless res.kind_of? Net::HTTPSuccess
9
+ if res.kind_of? Net::HTTPInternalServerError
10
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
11
+ else
12
+ raise Gameball::GameballError.new(res.body)
15
13
  end
16
- def self.sendEvent_async (eventBody)
17
- Gameball::Utils.validate(eventBody,['events','playerUniqueId'],['playerAttributes'])
18
- if eventBody.has_key?(:playerAttributes)
19
- # Gameball::Utils.validate(eventBody[:playerAttributes],['displayName','firstName','lastName','email','gender','mobileNumber','dateOfBirth','joinDate'],['custom'])
20
- end
21
- res=Gameball::Utils::request_async("post","/integrations/event",eventBody)
22
- unless res.kind_of? Net::HTTPSuccess
23
- raise Gameball::GameballError.new(res.body) # use custom message
24
- else
25
- return true
26
- end
14
+ else
15
+ return true
16
+ end
17
+ end
18
+ def self.sendEvent_async(eventBody)
19
+ # Validating keys in incoming body
20
+ Gameball::Utils.validate(eventBody, ["events", "playerUniqueId"], ["playerAttributes"])
21
+ res = Gameball::Utils::request_async("post", "/integrations/event", eventBody)
22
+ # Check for HTTP Success and throws error if not success
23
+ unless res.kind_of? Net::HTTPSuccess
24
+ if res.kind_of? Net::HTTPInternalServerError
25
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
26
+ else
27
+ raise Gameball::GameballError.new(res.body)
27
28
  end
29
+ else
30
+ return true
31
+ end
28
32
  end
29
- end
33
+ end
34
+ end