compropago_sdk 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7f76ff9703f043e408818d70c0ff1cf3f5b5e975
4
+ data.tar.gz: 9e9a05ddea2fd99e70c1db4bece1a437cc5da9b4
5
+ SHA512:
6
+ metadata.gz: a205853520d63483f431532d0ed0f89e955962c76b0f93ef627f39802fb9310d157a9151ca134042b6092a667caf71496c76953e8c16f65f0b1802279b0daeff
7
+ data.tar.gz: c087cbfa1e9b695cad042d522169585791399d22cc7b051c96a189264e4ff081066108bb3cd5564024d2405213d90d7093b520068a93f4499e782b35d07e8a72
@@ -0,0 +1,31 @@
1
+ require 'openssl'
2
+
3
+ require 'net/http'
4
+ require 'json'
5
+ require 'base64'
6
+
7
+ require 'compropago_sdk/cp_config_sdk'
8
+ require 'compropago_sdk/client'
9
+ require 'compropago_sdk/service'
10
+
11
+ require 'compropago_sdk/tools/http'
12
+ require 'compropago_sdk/tools/request'
13
+ require 'compropago_sdk/tools/validations'
14
+
15
+ require 'compropago_sdk/factory/factory'
16
+ require 'compropago_sdk/factory/serialize'
17
+
18
+ require 'compropago_sdk/factory/models/cp_order_info'
19
+ require 'compropago_sdk/factory/models/customer'
20
+ require 'compropago_sdk/factory/models/eval_auth_info'
21
+ require 'compropago_sdk/factory/models/fee_details'
22
+ require 'compropago_sdk/factory/models/instruction_details'
23
+ require 'compropago_sdk/factory/models/instructions'
24
+ require 'compropago_sdk/factory/models/new_order_info'
25
+ require 'compropago_sdk/factory/models/order_info'
26
+ require 'compropago_sdk/factory/models/place_order_info'
27
+ require 'compropago_sdk/factory/models/provider'
28
+ require 'compropago_sdk/factory/models/sms_data'
29
+ require 'compropago_sdk/factory/models/sms_info'
30
+ require 'compropago_sdk/factory/models/sms_object'
31
+ require 'compropago_sdk/factory/models/webhook'
@@ -0,0 +1,31 @@
1
+ class Client
2
+
3
+ attr_accessor :publickey, :privatekey, :live, :deploy_uri, :api
4
+
5
+ def initialize(publickey, privatekey, live)
6
+ @publickey = publickey
7
+ @privatekey = privatekey
8
+ @live = live
9
+
10
+ if live
11
+ @deploy_uri = CpConfigSdk::API_LIVE_URI
12
+ else
13
+ @deploy_uri = CpConfigSdk::API_SANDBOX_URI
14
+ end
15
+
16
+ @api = Service.new self
17
+ end
18
+
19
+ def get_user
20
+ @privatekey
21
+ end
22
+
23
+ def get_pass
24
+ @publickey
25
+ end
26
+
27
+ def get_full_auth
28
+ @privatekey+':'+@publickey
29
+ end
30
+
31
+ end
@@ -0,0 +1,9 @@
1
+ module CpConfigSdk
2
+
3
+ API_LIVE_URI = 'https://api.compropago.com/v1/'
4
+
5
+ API_SANDBOX_URI = 'https://api.compropago.com/v1/'
6
+
7
+ VERSION = '3.0.0'
8
+
9
+ end
@@ -0,0 +1,56 @@
1
+ class Factory
2
+
3
+ def self.get_instance_of(name, data=nil)
4
+ if data && data.is_a?(String)
5
+ data = JSON.parse data
6
+ elsif data && data.is_a?(Hash)
7
+ data = data
8
+ end
9
+
10
+ case name
11
+ when 'CpOrderInfo'
12
+ return Serialize::cp_order_info data
13
+ when 'Customer'
14
+ return Serialize::customer data
15
+ when 'EvalAuthInfo'
16
+ return Serialize::eval_auth_info data
17
+ when 'FeeDetails'
18
+ return Serialize::fee_details data
19
+ when 'InstructionDetails'
20
+ return Serialize::instruction_details data
21
+ when 'Instructions'
22
+ return Serialize::instructions data
23
+ when 'NewOrderInfo'
24
+ return Serialize::new_order_info data
25
+ when 'OrderInfo'
26
+ return Serialize::order_info data
27
+ when 'PlaceOrderInfo'
28
+ return Serialize::place_order_info data
29
+ when 'Provider'
30
+ return Serialize::provider data
31
+ when 'ListProviders'
32
+ aux = []
33
+ data.each do |provider|
34
+ aux.push Serialize::provider(provider)
35
+ end
36
+ return aux
37
+ when 'SmsData'
38
+ return Serialize::sms_data data
39
+ when 'SmsInfo'
40
+ return Serialize::sms_info data
41
+ when 'SmsObject'
42
+ return Serialize::sms_object data
43
+ when 'Webhook'
44
+ return Serialize::webhook data
45
+ when 'ListWebhooks'
46
+ aux = []
47
+ data.each do |webhook|
48
+ aux.push Serialize::webhook(webhook)
49
+ end
50
+ return aux
51
+ else
52
+ raise 'Object not in factory.'
53
+ end
54
+ end
55
+
56
+ end
@@ -0,0 +1,29 @@
1
+ class CpOrderInfo
2
+
3
+ attr_accessor :id
4
+ attr_accessor :type
5
+ attr_accessor :object
6
+ attr_accessor :created
7
+ attr_accessor :paid
8
+ attr_accessor :amount
9
+ attr_accessor :livemode
10
+ attr_accessor :currency
11
+ attr_accessor :refunded
12
+ attr_accessor :fee
13
+ attr_accessor :fee_details
14
+ attr_accessor :order_info
15
+ attr_accessor :customer
16
+ attr_accessor :captured
17
+ attr_accessor :failure_message
18
+ attr_accessor :failure_code
19
+ attr_accessor :amount_refunded
20
+ attr_accessor :description
21
+ attr_accessor :dispute
22
+
23
+ def initialize
24
+ @fee_details = FeeDetails.new
25
+ @order_info = OrderInfo.new
26
+ @customer = Customer.new
27
+ end
28
+
29
+ end
@@ -0,0 +1,7 @@
1
+ class Customer
2
+
3
+ attr_accessor :customer_name
4
+ attr_accessor :customer_email
5
+ attr_accessor :customer_phone
6
+
7
+ end
@@ -0,0 +1,9 @@
1
+ class EvalAuthInfo
2
+
3
+ attr_accessor :type
4
+ attr_accessor :livemode
5
+ attr_accessor :mode_key
6
+ attr_accessor :message
7
+ attr_accessor :code
8
+
9
+ end
@@ -0,0 +1,12 @@
1
+ class FeeDetails
2
+
3
+ attr_accessor :amount
4
+ attr_accessor :currency
5
+ attr_accessor :type
6
+ attr_accessor :description
7
+ attr_accessor :application
8
+ attr_accessor :tax_percent
9
+ attr_accessor :amount_refunded
10
+ attr_accessor :tax
11
+
12
+ end
@@ -0,0 +1,16 @@
1
+ class InstructionDetails
2
+
3
+ attr_accessor :amount
4
+ attr_accessor :store
5
+ attr_accessor :payment_amount
6
+ attr_accessor :payment_store
7
+ attr_accessor :bank_account_holder_name
8
+ attr_accessor :bank_account_number
9
+ attr_accessor :bank_reference
10
+ attr_accessor :company_reference_name
11
+ attr_accessor :company_reference_number
12
+ attr_accessor :company_bank_number
13
+ attr_accessor :order_reference_number
14
+ attr_accessor :bank_name
15
+
16
+ end
@@ -0,0 +1,16 @@
1
+ class Instructions
2
+
3
+ attr_accessor :description
4
+ attr_accessor :step_1
5
+ attr_accessor :step_2
6
+ attr_accessor :step_3
7
+ attr_accessor :note_extra_comition
8
+ attr_accessor :note_expiration_date
9
+ attr_accessor :note_confirmation
10
+ attr_accessor :details
11
+
12
+ def initialize
13
+ @details = InstructionDetails.new
14
+ end
15
+
16
+ end
@@ -0,0 +1,20 @@
1
+ class NewOrderInfo
2
+
3
+ attr_accessor :id
4
+ attr_accessor :short_id
5
+ attr_accessor :object
6
+ attr_accessor :status
7
+ attr_accessor :created
8
+ attr_accessor :exp_date
9
+ attr_accessor :live_mode
10
+ attr_accessor :order_info
11
+ attr_accessor :fee_details
12
+ attr_accessor :instructions
13
+
14
+ def initialize
15
+ @order_info = OrderInfo.new
16
+ @fee_details = FeeDetails.new
17
+ @instructions = Instructions.new
18
+ end
19
+
20
+ end
@@ -0,0 +1,12 @@
1
+ class OrderInfo
2
+
3
+ attr_accessor :order_id
4
+ attr_accessor :order_price
5
+ attr_accessor :order_name
6
+ attr_accessor :payment_method
7
+ attr_accessor :store
8
+ attr_accessor :country
9
+ attr_accessor :image_url
10
+ attr_accessor :success_url
11
+
12
+ end
@@ -0,0 +1,38 @@
1
+ class PlaceOrderInfo
2
+
3
+ attr_accessor :order_id
4
+ attr_accessor :order_name
5
+ attr_accessor :order_price
6
+ attr_accessor :customer_name
7
+ attr_accessor :customer_email
8
+ attr_accessor :payment_type
9
+ attr_accessor :currency
10
+ attr_accessor :image_url
11
+ attr_accessor :app_client_name
12
+ attr_accessor :app_client_version
13
+
14
+ def initialize(
15
+ order_id,
16
+ order_name,
17
+ order_price,
18
+ customer_name,
19
+ customer_email,
20
+ payment_type='OXXO',
21
+ currency='MXN',
22
+ image_url='',
23
+ app_client_name='sdk-ruby',
24
+ app_client_version=CpConfigSdk::VERSION
25
+ )
26
+ @order_id = order_id
27
+ @order_name = order_name
28
+ @order_price = order_price
29
+ @customer_name = customer_name
30
+ @customer_email = customer_email
31
+ @payment_type = payment_type
32
+ @currency = currency
33
+ @image_url = image_url
34
+ @app_client_name = app_client_name
35
+ @app_client_version = app_client_version
36
+ end
37
+
38
+ end
@@ -0,0 +1,13 @@
1
+ class Provider
2
+
3
+ attr_accessor :name
4
+ attr_accessor :store_image
5
+ attr_accessor :is_active
6
+ attr_accessor :internal_name
7
+ attr_accessor :image_small
8
+ attr_accessor :image_medium
9
+ attr_accessor :image_large
10
+ attr_accessor :transaction_limit
11
+ attr_accessor :rank
12
+
13
+ end
@@ -0,0 +1,9 @@
1
+ class SmsData
2
+
3
+ attr_accessor :object
4
+
5
+ def initialize
6
+ @object = SmsObject.new
7
+ end
8
+
9
+ end
@@ -0,0 +1,11 @@
1
+ class SmsInfo
2
+
3
+ attr_accessor :type
4
+ attr_accessor :object
5
+ attr_accessor :data
6
+
7
+ def initialize
8
+ @data = SmsData.new
9
+ end
10
+
11
+ end
@@ -0,0 +1,7 @@
1
+ class SmsObject
2
+
3
+ attr_accessor :id
4
+ attr_accessor :object
5
+ attr_accessor :short_id
6
+
7
+ end
@@ -0,0 +1,8 @@
1
+ class Webhook
2
+
3
+ attr_accessor :id
4
+ attr_accessor :url
5
+ attr_accessor :mode
6
+ attr_accessor :status
7
+
8
+ end
@@ -0,0 +1,261 @@
1
+ class Serialize
2
+
3
+ def self.place_order_info(data=nil)
4
+ if data.nil?
5
+ return PlaceOrderInfo.new(nil, nil, nil, nil, nil)
6
+ else
7
+ return PlaceOrderInfo.new(
8
+ data[:order_id],
9
+ data[:order_name],
10
+ data[:order_price],
11
+ data[:customer_name],
12
+ data[:customer_email],
13
+ data[:payment_type] ? data[:payment_type] : 'OXXO',
14
+ data[:currency] ? data[:currency] : 'MXN',
15
+ data[:image_url] ? data[:image_url] : '',
16
+ data[:app_client_name] ? data[:app_client_name] : 'sdk-ruby',
17
+ data[:app_client_version] ? data[:app_client_version] : CpConfigSdk::VERSION,
18
+ )
19
+ end
20
+ end
21
+
22
+ def self.cp_order_info(data=nil)
23
+ if data.nil?
24
+ return CpOrderInfo.new
25
+ else
26
+ obj = CpOrderInfo.new
27
+
28
+ obj.id = data['id']
29
+ obj.type = data['type']
30
+ obj.object = data['object']
31
+ obj.created = data['created']
32
+ obj.paid = data['paid']
33
+ obj.amount = data['amount']
34
+ obj.livemode = data['livemode']
35
+ obj.currency = data['currency']
36
+ obj.refunded = data['refunded']
37
+ obj.fee = data['fee']
38
+
39
+ obj.fee_details = Serialize::fee_details(data['fee_details'])
40
+ obj.order_info = Serialize::order_info(data['order_info'])
41
+ obj.customer.customer_name = Serialize::customer(data['customer'])
42
+
43
+ obj.captured = data['captured']
44
+ obj.failure_message = data['failure_message']
45
+ obj.failure_code = data['failure_code']
46
+ obj.amount_refunded = data['amount_refunded']
47
+ obj.description = data['description']
48
+ obj.dispute = data['dispute']
49
+
50
+ return obj
51
+ end
52
+ end
53
+
54
+ def self.customer(data=nil)
55
+ if data.nil?
56
+ Customer.new
57
+ else
58
+ obj = Customer.new
59
+
60
+ obj.customer_name = data['customer_name']
61
+ obj.customer_email = data['customer_email']
62
+ obj.customer_phone = data['customer_phone']
63
+
64
+ return obj
65
+ end
66
+ end
67
+
68
+ def self.eval_auth_info(data=nil)
69
+ if data.nil?
70
+ return EvalAuthInfo.new
71
+ else
72
+ obj = EvalAuthInfo.new
73
+
74
+ obj.type = data['type']
75
+ obj.livemode = data['livemode']
76
+ obj.mode_key = data['mode_key']
77
+ obj.message = data['message']
78
+ obj.code = data['code']
79
+
80
+ return obj
81
+ end
82
+ end
83
+
84
+ def self.fee_details(data=nil)
85
+ if data.nil?
86
+ return FeeDetails.new
87
+ else
88
+ obj = FeeDetails.new
89
+
90
+ obj.amount = data['amount'] ? data['amount'] : nil
91
+ obj.currency = data['currency'] ? data['currency'] : nil
92
+ obj.type = data['type'] ? data['type'] : nil
93
+ obj.description = data['description'] ? data['description'] : nil
94
+ obj.application = data['application'] ? data['application'] : nil
95
+ obj.tax_percent = data['tax_percent'] ? data['tax_percent'] : nil
96
+ obj.amount_refunded = data['amount_refunded'] ? data['amount_refunded'] : nil
97
+ obj.tax = data['tax'] ? data['tax'] : nil
98
+
99
+ return obj
100
+ end
101
+ end
102
+
103
+ def self.instruction_details(data=nil)
104
+ if data.nil?
105
+ return InstructionDetails.new
106
+ else
107
+ obj = InstructionDetails.new
108
+
109
+ obj.amount = data['amount'] ? data['amount'] : nil
110
+ obj.store = data['store'] ? data['store'] : nil
111
+ obj.payment_amount = data['payment_amount'] ? data['payment_amount'] : nil
112
+ obj.payment_store = data['payment_store'] ? data['payment_store'] : nil
113
+ obj.bank_account_holder_name = data['bank_account_holder_name'] ? data['bank_account_holder_name'] : nil
114
+ obj.bank_account_number = data['bank_accont_number'] ? data['bank_accont_number'] : nil
115
+ obj.bank_reference = data['bank_reference'] ? data['bank_reference'] : nil
116
+ obj.company_reference_name = data['company_reference_name'] ? data['company_reference_name'] : nil
117
+ obj.company_reference_number = data['company_reference_number'] ? data['company_reference_number'] : nil
118
+ obj.company_bank_number = data['company_bank_number'] ? data['company_bank_number'] : nil
119
+ obj.order_reference_number = data['order_reference_number'] ? data['order_reference_number'] : nil
120
+ obj.bank_name = data['bank_name'] ? data['bank_name'] : nil
121
+
122
+ return obj
123
+ end
124
+ end
125
+
126
+ def self.instructions(data=nil)
127
+ if data.nil?
128
+ return Instructions.new
129
+ else
130
+ obj = Instructions.new
131
+
132
+ obj.description = data['description']
133
+ obj.step_1 = data['step_1']
134
+ obj.step_2 = data['step_2']
135
+ obj.step_3 = data['step_3']
136
+ obj.note_extra_comition = data['note_extra_comition']
137
+ obj.note_expiration_date = data['note_expiration_date']
138
+ obj.note_confirmation = data['note_confirmation']
139
+
140
+ obj.details = Serialize::instruction_details(data['details'])
141
+
142
+ return obj
143
+ end
144
+ end
145
+
146
+ def self.new_order_info(data=nil)
147
+ if data.nil?
148
+ return NewOrderInfo.new
149
+ else
150
+ obj = NewOrderInfo.new
151
+
152
+ obj.id = data['id']
153
+ obj.short_id = data['short_id']
154
+ obj.object = data['object']
155
+ obj.status = data['status']
156
+ obj.created = data['created']
157
+ obj.exp_date = data['exp_date']
158
+ obj.live_mode = data['live_mode']
159
+ obj.order_info = Serialize::order_info(data['order_info'])
160
+ obj.fee_details = Serialize::fee_details(data['fee_details'])
161
+ obj.instructions = Serialize::instructions(data['instructions'])
162
+
163
+ return obj
164
+ end
165
+ end
166
+
167
+ def self.order_info(data=nil)
168
+ if data.nil?
169
+ return OrderInfo.new
170
+ else
171
+ obj = OrderInfo.new
172
+
173
+ obj.order_id = data['order_id'] ? data['order_id'] : nil
174
+ obj.order_price = data['order_price'] ? data['order_price'] : nil
175
+ obj.order_name = data['order_name'] ? data['order_name'] : nil
176
+ obj.payment_method = data['payment_method'] ? data['payment_method'] : nil
177
+ obj.store = data['store'] ? data['store'] : nil
178
+ obj.country = data['country'] ? data['country'] : nil
179
+ obj.image_url = data['image_url'] ? data['image_url'] : nil
180
+ obj.success_url = data['success_url'] ? data['success_url'] : nil
181
+
182
+ return obj
183
+ end
184
+ end
185
+
186
+ def self.provider(data=nil)
187
+ if data.nil?
188
+ return Provider.new
189
+ else
190
+ obj = Provider.new
191
+
192
+ obj.name = data['name']
193
+ obj.store_image = data['store_image']
194
+ obj.is_active = data['is_active']
195
+ obj.internal_name = data['internal_name']
196
+ obj.image_small = data['image_small']
197
+ obj.image_medium = data['image_medium']
198
+ obj.image_large = data['image_large']
199
+ obj.transaction_limit = data['transaction_limit']
200
+ obj.rank = data['rank']
201
+
202
+ return obj
203
+ end
204
+ end
205
+
206
+ def self.sms_object(data=nil)
207
+ if data.nil?
208
+ return SmsObject.new
209
+ else
210
+ obj = SmsObject.new
211
+
212
+ obj.id = data['id']
213
+ obj.object = data['object']
214
+ obj.short_id = data['short_id']
215
+
216
+ return obj
217
+ end
218
+ end
219
+
220
+ def self.sms_data(data=nil)
221
+ if data.nil?
222
+ return SmsData.new
223
+ else
224
+ obj = SmsData.new
225
+
226
+ obj.object = Serialize::sms_object(data['object'])
227
+
228
+ return obj
229
+ end
230
+ end
231
+
232
+ def self.sms_info(data=nil)
233
+ if data.nil?
234
+ return SmsInfo.new
235
+ else
236
+ obj = SmsInfo.new
237
+
238
+ obj.type = data['type']
239
+ obj.object = data['object']
240
+ obj.data = Serialize::sms_data(data['data'])
241
+
242
+ return obj
243
+ end
244
+ end
245
+
246
+ def self.webhook(data=nil)
247
+ if data.nil?
248
+ return Webhook.new
249
+ else
250
+ obj = Webhook.new
251
+
252
+ obj.id = data['id'] ? data['id'] : nil
253
+ obj.url = data['url'] ? data['url'] : nil
254
+ obj.mode = data['mode'] ? data['mode'] : nil
255
+ obj.status = data['status'] ? data['status'] : nil
256
+
257
+ return obj
258
+ end
259
+ end
260
+
261
+ end
@@ -0,0 +1,131 @@
1
+ class Service
2
+
3
+ def initialize(client)
4
+ @client = client
5
+ end
6
+
7
+ def list_providers(auth=false, limit=0)
8
+ if auth
9
+ Validations::validate_gateway @client
10
+ uri = @client.deploy_uri+'providers/'
11
+ keys = {user: @client.get_user, pass: @client.get_pass}
12
+ else
13
+ uri = @client.deploy_uri+'providers/true/'
14
+ keys = nil
15
+ end
16
+
17
+ if limit > 0
18
+ uri = uri+'?order_total='+limit.to_s
19
+ end
20
+
21
+ response = Request::get(uri, keys)
22
+
23
+ Factory::get_instance_of 'ListProviders', response
24
+ end
25
+
26
+ def verify_order(order_id)
27
+ Validations::validate_gateway @client
28
+
29
+ response = Request::get(
30
+ @client.deploy_uri+'charges/'+order_id+'/',
31
+ user: @client.get_user, pass: @client.get_pass
32
+ )
33
+
34
+ Factory::get_instance_of 'CpOrderInfo', response
35
+ end
36
+
37
+ def place_order(order)
38
+ unless order.is_a?(PlaceOrderInfo)
39
+ raise 'Order object is not valid'
40
+ end
41
+
42
+ Validations::validate_gateway @client
43
+
44
+ params = {
45
+ order_id: order.order_id,
46
+ order_name: order.order_name,
47
+ order_price: order.order_price,
48
+ customer_name: order.customer_name,
49
+ customer_email: order.customer_email,
50
+ payment_type: order.payment_type,
51
+ currency: order.currency,
52
+ image_url: order.image_url,
53
+ app_client_name: order.app_client_name,
54
+ app_client_version: order.app_client_version
55
+ }
56
+
57
+ response = Request::post(
58
+ @client.deploy_uri+'charges/',
59
+ params,
60
+ user: @client.get_user, pass: @client.get_pass
61
+ )
62
+
63
+ Factory::get_instance_of 'NewOrderInfo', response
64
+ end
65
+
66
+ def send_sms_instructions(number, order_id)
67
+ Validations::validate_gateway @client
68
+
69
+ params = {customer_phone: number}
70
+
71
+ response = Request::post(
72
+ @client.deploy_uri+'charges/'+order_id+'/sms/',
73
+ params,
74
+ user: @client.get_user, pass: @client.get_pass
75
+ )
76
+
77
+ Factory::get_instance_of 'SmsInfo', response
78
+ end
79
+
80
+ def create_webhook(url)
81
+ Validations::validate_gateway @client
82
+
83
+ params = {url: url}
84
+
85
+ response = Request::post(
86
+ @client.deploy_uri+'webhooks/stores/',
87
+ params,
88
+ user: @client.get_user, pass: @client.get_pass
89
+ )
90
+
91
+ Factory::get_instance_of 'Webhook', response
92
+ end
93
+
94
+ def update_webhook(webhook_id, new_url)
95
+ Validations::validate_gateway @client
96
+
97
+ params = {url: new_url}
98
+
99
+ response = Request::put(
100
+ @client.deploy_uri+'webhooks/stores/'+webhook_id+'/',
101
+ params,
102
+ user: @client.get_user, pass: @client.get_pass
103
+ )
104
+
105
+ Factory::get_instance_of 'Webhook', response
106
+ end
107
+
108
+ def delete_webhook(webhook_id)
109
+ Validations::validate_gateway @client
110
+
111
+ response = Request::delete(
112
+ @client.deploy_uri+'webhooks/stores/'+webhook_id,
113
+ nil,
114
+ user: @client.get_user, pass: @client.get_pass
115
+ )
116
+
117
+ Factory::get_instance_of 'Webhook', response
118
+ end
119
+
120
+ def list_webhooks
121
+ Validations::validate_gateway @client
122
+
123
+ response = Request::get(
124
+ @client.deploy_uri+'webhooks/stores/',
125
+ user: @client.get_user, pass: @client.get_pass
126
+ )
127
+
128
+ Factory::get_instance_of 'ListWebhooks', response
129
+ end
130
+
131
+ end
@@ -0,0 +1,72 @@
1
+ class Http
2
+
3
+ def initialize(url)
4
+ @url = url
5
+ @data = nil
6
+ @auth = nil
7
+ @method = nil
8
+ @extra_headers = nil
9
+ end
10
+
11
+ def set_method(method)
12
+ if method == 'GET' || method == 'POST' || method == 'PUT' || method == 'DELETE'
13
+ @method = method
14
+ else
15
+ raise 'Not supported method'
16
+ end
17
+ end
18
+
19
+ def set_auth(auth)
20
+ @auth = auth
21
+ end
22
+
23
+ def set_data(data)
24
+ @data = data.to_json
25
+ end
26
+
27
+ def set_extra_headers(headers)
28
+ if headers.is_a?(Hash)
29
+ @extra_headers = headers
30
+ end
31
+ end
32
+
33
+ def execute_request
34
+ headers = {
35
+ 'content-type' => 'application/json',
36
+ 'cache-control' => 'no-cache'
37
+ }
38
+
39
+ if @extra_headers
40
+ headers.merge @extra_headers
41
+ end
42
+
43
+ uri = URI.parse(@url)
44
+ http = Net::HTTP.new(uri.host, uri.port)
45
+ http.use_ssl = true
46
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
47
+
48
+ case @method
49
+ when 'GET'
50
+ req = Net::HTTP::Get.new(uri.request_uri, headers)
51
+ when 'POST'
52
+ req = Net::HTTP::Post.new(uri.request_uri, headers)
53
+ when 'PUT'
54
+ req = Net::HTTP::Put.new(uri.request_uri, headers)
55
+ when 'DELETE'
56
+ req = Net::HTTP::Delete.new(uri.request_uri, headers)
57
+ else
58
+ raise 'Request method is not defined: '+@method.to_s
59
+ end
60
+
61
+ if @auth && @auth.is_a?(Hash)
62
+ req.basic_auth @auth[:user], @auth[:pass]
63
+ end
64
+
65
+ req.body = @data
66
+
67
+ res = http.request(req)
68
+
69
+ res.body
70
+ end
71
+
72
+ end
@@ -0,0 +1,72 @@
1
+ class Request
2
+
3
+ def self.validate_response(res)
4
+ if res
5
+ aux = JSON.parse(res)
6
+
7
+ if aux.is_a?(Hash) && aux['type'] == 'error'
8
+ raise 'Error: '+aux['message']
9
+ else
10
+ return true
11
+ end
12
+ else
13
+ raise 'Empty Response'
14
+ end
15
+ end
16
+
17
+ def self.get(url, auth=nil, headers=nil)
18
+ http = Http.new url
19
+ http.set_auth auth
20
+ http.set_method 'GET'
21
+ http.set_extra_headers headers
22
+
23
+ response = http.execute_request
24
+
25
+ Request::validate_response response
26
+
27
+ return response
28
+ end
29
+
30
+ def self.post(url, data=nil, auth=nil, headers=nil)
31
+ http = Http.new url
32
+ http.set_auth auth
33
+ http.set_method 'POST'
34
+ http.set_data data unless data.nil?
35
+ http.set_extra_headers headers
36
+
37
+ response = http.execute_request
38
+
39
+ Request::validate_response response
40
+
41
+ return response
42
+ end
43
+
44
+ def self.put(url, data=nil, auth=nil, headers=nil)
45
+ http = Http.new url
46
+ http.set_auth auth
47
+ http.set_method 'PUT'
48
+ http.set_data data unless data.nil?
49
+ http.set_extra_headers headers
50
+
51
+ response = http.execute_request
52
+
53
+ Request::validate_response response
54
+
55
+ return response
56
+ end
57
+
58
+ def self.delete(url, data=nil, auth=nil, headers=nil)
59
+ http = Http.new url
60
+ http.set_auth auth
61
+ http.set_method 'DELETE'
62
+ http.set_data data unless data.nil?
63
+ http.set_extra_headers headers
64
+
65
+ response = http.execute_request
66
+
67
+ Request::validate_response response
68
+
69
+ return response
70
+ end
71
+
72
+ end
@@ -0,0 +1,36 @@
1
+ class Validations
2
+
3
+ def self.eval_auth(client)
4
+ response = Request::get(client.deploy_uri+'users/auth/', user: client.get_user, pass: client.get_pass)
5
+ info = Factory.get_instance_of('EvalAuthInfo', response)
6
+
7
+ if info.code == 200
8
+ return info
9
+ else
10
+ raise 'Error :'+info.message
11
+ end
12
+ end
13
+
14
+ def self.validate_gateway(client)
15
+ unless client
16
+ raise 'Client object is not valid'
17
+ end
18
+
19
+ client_mode = client.live
20
+
21
+ auth_info = Validations::eval_auth client
22
+
23
+ if auth_info.mode_key != auth_info.livemode
24
+ raise 'Keys are diferent of store mode.'
25
+ end
26
+
27
+ if client_mode != auth_info.livemode
28
+ raise 'Client mode is diferent of store mode'
29
+ end
30
+
31
+ if client_mode != auth_info.mode_key
32
+ raise 'Client mode is diferent of keys mode'
33
+ end
34
+ end
35
+
36
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: compropago_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Eduardo Aguilar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Provee los servicios de creacion de cargos verificacion etc.
56
+ email:
57
+ - eduardo.aguilar@compropago.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - "./lib/compropago_sdk.rb"
63
+ - "./lib/compropago_sdk/client.rb"
64
+ - "./lib/compropago_sdk/cp_config_sdk.rb"
65
+ - "./lib/compropago_sdk/factory/factory.rb"
66
+ - "./lib/compropago_sdk/factory/models/cp_order_info.rb"
67
+ - "./lib/compropago_sdk/factory/models/customer.rb"
68
+ - "./lib/compropago_sdk/factory/models/eval_auth_info.rb"
69
+ - "./lib/compropago_sdk/factory/models/fee_details.rb"
70
+ - "./lib/compropago_sdk/factory/models/instruction_details.rb"
71
+ - "./lib/compropago_sdk/factory/models/instructions.rb"
72
+ - "./lib/compropago_sdk/factory/models/new_order_info.rb"
73
+ - "./lib/compropago_sdk/factory/models/order_info.rb"
74
+ - "./lib/compropago_sdk/factory/models/place_order_info.rb"
75
+ - "./lib/compropago_sdk/factory/models/provider.rb"
76
+ - "./lib/compropago_sdk/factory/models/sms_data.rb"
77
+ - "./lib/compropago_sdk/factory/models/sms_info.rb"
78
+ - "./lib/compropago_sdk/factory/models/sms_object.rb"
79
+ - "./lib/compropago_sdk/factory/models/webhook.rb"
80
+ - "./lib/compropago_sdk/factory/serialize.rb"
81
+ - "./lib/compropago_sdk/service.rb"
82
+ - "./lib/compropago_sdk/tools/http.rb"
83
+ - "./lib/compropago_sdk/tools/request.rb"
84
+ - "./lib/compropago_sdk/tools/validations.rb"
85
+ homepage: https://github.com/compropago/compropago-ruby
86
+ licenses:
87
+ - MIT
88
+ metadata: {}
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ requirements: []
104
+ rubyforge_project:
105
+ rubygems_version: 2.5.1
106
+ signing_key:
107
+ specification_version: 4
108
+ summary: Gema para API ComproPago
109
+ test_files: []