alphaSDK 0.1.0 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 gem"
10
+ spec.homepage = "http://mygemserver.com"
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
@@ -1,32 +1,41 @@
1
1
  module Gameball
2
- class Player
3
- # include Gameball::Request
4
- def self.initialize_player (customerBody)
5
- Gameball::Utils.validate(customerBody,['playerAttributes','playerUniqueId'],[])
6
- begin
7
- customerBody[:playerAttributes][:joinDate]=customerBody[:playerAttributes][:joinDate].iso8601
8
- customerBody[:playerAttributes][:dateOfBirth]=customerBody[:playerAttributes][:dateOfBirth].iso8601
9
- rescue NoMethodError => exception
10
- p exception
11
- raise Gameball::GameballError.new("Invalid Date Format, Please use Time and Date objects")
12
- end
13
-
14
- res=Gameball::Utils::request("post","/integrations/player",customerBody)
15
- unless res.kind_of? Net::HTTPSuccess
16
- raise Gameball::GameballError.new(res) # use custom message
17
- else
18
- return res
19
- end
2
+ class Player
3
+ def self.initialize_player(body)
4
+ # Validating keys in incoming body
5
+ Gameball::Utils.validate(body, ["playerAttributes", "playerUniqueId"], [])
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
+ begin
8
+ body[:playerAttributes][:joinDate] = body[:playerAttributes][:joinDate].iso8601
9
+ body[:playerAttributes][:dateOfBirth] = body[:playerAttributes][:dateOfBirth].iso8601
10
+ rescue NoMethodError => exception
11
+ raise Gameball::GameballError.new("Invalid Date Format, Please use Time and Date objects")
12
+ end
13
+ # Check for HTTP Success and throws error if not success
14
+ res = Gameball::Utils::request("post", "/integrations/player", body)
15
+ unless res.kind_of? Net::HTTPSuccess
16
+ if res.kind_of? Net::HTTPInternalServerError
17
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
18
+ else
19
+ raise Gameball::GameballError.new(res.body)
20
20
  end
21
- def self.get_player_info(playerUniqueId)
22
- body={playerUniqueId:playerUniqueId}
23
- body["bodyHashed"]=Gameball::Utils::hashBody(playerUniqueId:playerUniqueId)
24
- res=Gameball::Utils::request("post","/integrations/Player/Info",body)
25
- unless res.kind_of? Net::HTTPSuccess
26
- raise Gameball::GameballError.new(res) # use custom message
27
- else
28
- return res
29
- end
21
+ else
22
+ return res
23
+ end
24
+ end
25
+ def self.get_player_info(playerUniqueId)
26
+ body = { playerUniqueId: playerUniqueId }
27
+ body["hash"] = Gameball::Utils::hashBody(playerUniqueId: playerUniqueId)
28
+ res = Gameball::Utils::request("post", "/integrations/Player/Info", 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)
30
35
  end
36
+ else
37
+ return res
38
+ end
31
39
  end
32
- end
40
+ end
41
+ end
@@ -1,23 +1,27 @@
1
1
  module Gameball
2
- class Referral
3
- def self.create_referral(body)
4
- Gameball::Utils.validate(body,['playerUniqueId','playerCode'],['playerAttributes'])
5
- if body.has_key?(:playerAttributes)
6
- # Gameball::Utils.validate(body[:playerAttributes],['displayName','firstName','lastName','email','gender','mobileNumber','dateOfBirth','joinDate'],['custom'])
7
- end
8
- res=Gameball::Utils::request("post","/integrations/referral",body)
9
- unless res.kind_of? Net::HTTPSuccess
10
- raise Gameball::GameballError.new(res.body) # use custom message
11
- else
12
- return true
13
- end
14
- end
15
- def self.create_referral_async(body)
16
- Gameball::Utils.validate(body,['playerUniqueId','playerCode'],['playerAttributes'])
17
- if body.has_key?(:playerAttributes)
18
- # Gameball::Utils.validate(body[:playerAttributes],['displayName','firstName','lastName','email','gender','mobileNumber','dateOfBirth','joinDate'],['custom'])
19
- end
20
- Gameball::Utils::request_async("post","/integrations/referral",body)
2
+ class Referral
3
+ def self.create_referral(body)
4
+ Gameball::Utils.validate(body, ["playerUniqueId", "playerCode"], ["playerAttributes"])
5
+ if body.has_key?(:playerAttributes)
6
+ # Gameball::Utils.validate(body[:playerAttributes],['displayName','firstName','lastName','email','gender','mobileNumber','dateOfBirth','joinDate'],['custom'])
7
+ end
8
+ res = Gameball::Utils::request("post", "/integrations/referral", body)
9
+ unless res.kind_of? Net::HTTPSuccess
10
+ if res.kind_of? Net::HTTPInternalServerError
11
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
12
+ else
13
+ raise Gameball::GameballError.new(res.body)
21
14
  end
15
+ else
16
+ return true
17
+ end
18
+ end
19
+ def self.create_referral_async(body)
20
+ Gameball::Utils.validate(body, ["playerUniqueId", "playerCode"], ["playerAttributes"])
21
+ if body.has_key?(:playerAttributes)
22
+ # Gameball::Utils.validate(body[:playerAttributes],['displayName','firstName','lastName','email','gender','mobileNumber','dateOfBirth','joinDate'],['custom'])
23
+ end
24
+ Gameball::Utils::request_async("post", "/integrations/referral", body)
22
25
  end
23
- end
26
+ end
27
+ end
@@ -1,73 +1,99 @@
1
1
  module Gameball
2
- class Transaction
3
- # include Gameball::Utils
4
- def self.get_player_balance (playerId)
5
- hashedBody=Gameball::Utils::hashBody(playerUniqueId:playerId)
6
- body={playerUniqueId:playerId,
7
- bodyHashed:hashedBody
8
- }
9
- res=Gameball::Utils::request("post","/integrations/transaction/balance",body)
10
- unless res.kind_of? Net::HTTPSuccess
11
- raise Gameball::GameballError.new(res.body) # use custom message
12
- else
13
- return res
14
- end
15
- end
16
- def self.hold_points(body)
17
- puts body
18
- # check if attributes are available
19
- Gameball::Utils.validate(body,['playerUniqueId','amount','transactionTime'],['otp'])
2
+ class Transaction
3
+ # include Gameball::Utils
4
+ def self.get_player_balance(playerId)
5
+ hashedBody = Gameball::Utils::hashBody(playerUniqueId: playerId)
6
+ body = { playerUniqueId: playerId,
7
+ hash: hashedBody }
8
+ res = Gameball::Utils::request("post", "/integrations/transaction/balance", body)
9
+ unless res.kind_of? Net::HTTPSuccess
10
+ raise Gameball::GameballError.new(res.body)
11
+ else
12
+ return res
13
+ end
14
+ end
15
+ def self.hold_points(body)
16
+ # puts body
17
+ # check if attributes are available
20
18
 
21
- body=Gameball::Utils::extractAttributesToHash(body)
22
- res=Gameball::Utils::request("post","/integrations/transaction/hold",body)
23
- unless res.kind_of? Net::HTTPSuccess
24
- raise Gameball::GameballError.new(res.body) # use custom message
25
- else
26
- return res
27
- end
19
+ Gameball::Utils.validate(body, ["playerUniqueId", "amount"], ["otp"])
20
+ body[:transactionTime] = Time.now.utc
21
+ body = Gameball::Utils::extractAttributesToHash(body)
22
+ res = Gameball::Utils::request("post", "/integrations/transaction/hold", body)
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)
28
28
  end
29
- def self.redeem_points(body)
30
- # check if attributes are available
31
- Gameball::Utils.validate(body,['holdReference','playerUniqueId','amount','transactionOnClientSystemId','transactionTime'],[])
32
- body=Gameball::Utils::extractAttributesToHash(body)
33
- res=Gameball::Utils::request("post","/integrations/transaction/redeem",body)
34
- unless res.kind_of? Net::HTTPSuccess
35
- raise Gameball::GameballError.new(res.body) # use custom message
36
- else
37
- return res
38
- end
29
+ else
30
+ return res
31
+ end
32
+ end
33
+ def self.redeem_points(body)
34
+ # 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)
38
+ res = Gameball::Utils::request("post", "/integrations/transaction/redeem", body)
39
+ unless res.kind_of? Net::HTTPSuccess
40
+ if res.kind_of? Net::HTTPInternalServerError
41
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
42
+ else
43
+ raise Gameball::GameballError.new(res.body)
39
44
  end
40
- def self.reverse_transaction(body)
41
- Gameball::Utils.validate(body,['reversedTransactionOnClientSystemId','playerUniqueId','transactionOnClientSystemId','transactionTime'],[])
42
- body=Gameball::Utils::extractAttributesToHash(body)
43
- res=Gameball::Utils::request("post","/integrations/transaction/cancel",body)
44
- unless res.kind_of? Net::HTTPSuccess
45
- raise Gameball::GameballError.new(res.body) # use custom message
46
- else
47
- return res
48
- end
45
+ else
46
+ return res
47
+ end
48
+ end
49
+ def self.reverse_transaction(body)
50
+ Gameball::Utils.validate(body, ["reversedTransactionId", "playerUniqueId", "transactionId"], [])
51
+ body[:transactionTime] = Time.now.utc
52
+
53
+ body = Gameball::Utils::extractAttributesToHash(body)
54
+ res = Gameball::Utils::request("post", "/integrations/transaction/cancel", body)
55
+ unless res.kind_of? Net::HTTPSuccess
56
+ if res.kind_of? Net::HTTPInternalServerError
57
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
58
+ else
59
+ raise Gameball::GameballError.new(res.body)
49
60
  end
50
- def self.reward_points(body)
51
- Gameball::Utils.validate(body,['playerUniqueId','amount','transactionOnClientSystemId','transactionTime'],['playerAttributes'])
52
- body=Gameball::Utils::extractAttributesToHash(body)
53
- res=Gameball::Utils::request("post","/integrations/transaction/reward",body)
54
- unless res.kind_of? Net::HTTPSuccess
55
- raise Gameball::GameballError.new(res.body) # use custom message
56
- else
57
- return true
58
- end
61
+ else
62
+ return res
63
+ end
64
+ end
65
+ def self.reward_points(body)
66
+ Gameball::Utils.validate(body, ["playerUniqueId", "amount", "transactionId"], ["playerAttributes"])
67
+ body[:transactionTime] = Time.now.utc
68
+
69
+ body = Gameball::Utils::extractAttributesToHash(body)
70
+ res = Gameball::Utils::request("post", "/integrations/transaction/reward", body)
71
+ unless res.kind_of? Net::HTTPSuccess
72
+ if res.kind_of? Net::HTTPInternalServerError
73
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
74
+ else
75
+ raise Gameball::GameballError.new(res.body)
59
76
  end
60
- def self.reverse_hold(body)
61
- # check if holdReference is in body else throw error
62
- Gameball::Utils.validate(body,['holdReference','playerUniqueId','transactionTime'],[])
77
+ else
78
+ return true
79
+ end
80
+ end
81
+ def self.reverse_hold(body)
82
+ # check if holdReference is in body else throw error
83
+ Gameball::Utils.validate(body, ["holdReference", "playerUniqueId"], [])
84
+ body[:transactionTime] = Time.now.utc
63
85
 
64
- body=Gameball::Utils::extractAttributesToHash(body)
65
- res=Gameball::Utils::request("post","/integrations/transaction/hold",body)
66
- unless res.kind_of? Net::HTTPSuccess
67
- raise Gameball::GameballError.new(res.body) # use custom message
68
- else
69
- return res
70
- end
86
+ body = Gameball::Utils::extractAttributesToHash(body)
87
+ res = Gameball::Utils::request("post", "/integrations/transaction/hold", body)
88
+ unless res.kind_of? Net::HTTPSuccess
89
+ if res.kind_of? Net::HTTPInternalServerError
90
+ raise Gameball::GameballError.new("An Internal Server Error has occurred")
91
+ else
92
+ raise Gameball::GameballError.new(res.body)
71
93
  end
94
+ else
95
+ return res
96
+ end
72
97
  end
73
- end
98
+ end
99
+ end