processout 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -105,29 +105,35 @@ module ProcessOut
105
105
  # Initializes the Customer object
106
106
  # Params:
107
107
  # +client+:: +ProcessOut+ client instance
108
- def initialize(client)
108
+ # +data+:: data that can be used to fill the object
109
+ def initialize(client, data = {})
109
110
  @client = client
110
111
 
111
- @id = ""
112
- @project = nil
113
- @email = ""
114
- @first_name = ""
115
- @last_name = ""
116
- @address1 = ""
117
- @address2 = ""
118
- @city = ""
119
- @state = ""
120
- @zip = ""
121
- @country_code = ""
122
- @balance = "0"
123
- @currency = ""
124
- @metadata = Hash.new
125
- @has_pin = false
126
- @sandbox = false
127
- @created_at = ""
112
+ @id = data.fetch(:id, "")
113
+ @project = data.fetch(:project, nil)
114
+ @email = data.fetch(:email, "")
115
+ @first_name = data.fetch(:first_name, "")
116
+ @last_name = data.fetch(:last_name, "")
117
+ @address1 = data.fetch(:address1, "")
118
+ @address2 = data.fetch(:address2, "")
119
+ @city = data.fetch(:city, "")
120
+ @state = data.fetch(:state, "")
121
+ @zip = data.fetch(:zip, "")
122
+ @country_code = data.fetch(:country_code, "")
123
+ @balance = data.fetch(:balance, "0")
124
+ @currency = data.fetch(:currency, "")
125
+ @metadata = data.fetch(:metadata, Hash.new)
126
+ @has_pin = data.fetch(:has_pin, false)
127
+ @sandbox = data.fetch(:sandbox, false)
128
+ @created_at = data.fetch(:created_at, "")
128
129
 
129
130
  end
130
131
 
132
+ # Create a new Customer using the current client
133
+ def new(data = {})
134
+ Customer.new(@client, data)
135
+ end
136
+
131
137
  # Fills the object with data coming from the API
132
138
  # Params:
133
139
  # +data+:: +Hash+ of data coming from the API
@@ -190,7 +196,7 @@ module ProcessOut
190
196
  # Get the subscriptions belonging to the customer.
191
197
  # Params:
192
198
  # +options+:: +Hash+ of options
193
- def subscriptions(options = nil)
199
+ def subscriptions(options = {})
194
200
  request = Request.new(@client)
195
201
  path = "/customers/" + CGI.escape(@id) + "/subscriptions"
196
202
  data = {
@@ -203,7 +209,7 @@ module ProcessOut
203
209
  a = Array.new
204
210
  body = response.body
205
211
  for v in body['subscriptions']
206
- tmp = Subscription(@client)
212
+ tmp = Subscription.new(@client)
207
213
  tmp.fill_with_data(v)
208
214
  a.push(tmp)
209
215
  end
@@ -218,7 +224,7 @@ module ProcessOut
218
224
  # Get the customer's tokens.
219
225
  # Params:
220
226
  # +options+:: +Hash+ of options
221
- def tokens(options = nil)
227
+ def tokens(options = {})
222
228
  request = Request.new(@client)
223
229
  path = "/customers/" + CGI.escape(@id) + "/tokens"
224
230
  data = {
@@ -231,7 +237,7 @@ module ProcessOut
231
237
  a = Array.new
232
238
  body = response.body
233
239
  for v in body['tokens']
234
- tmp = Token(@client)
240
+ tmp = Token.new(@client)
235
241
  tmp.fill_with_data(v)
236
242
  a.push(tmp)
237
243
  end
@@ -246,7 +252,7 @@ module ProcessOut
246
252
  # Get the transactions belonging to the customer.
247
253
  # Params:
248
254
  # +options+:: +Hash+ of options
249
- def transactions(options = nil)
255
+ def transactions(options = {})
250
256
  request = Request.new(@client)
251
257
  path = "/customers/" + CGI.escape(@id) + "/transactions"
252
258
  data = {
@@ -259,7 +265,7 @@ module ProcessOut
259
265
  a = Array.new
260
266
  body = response.body
261
267
  for v in body['transactions']
262
- tmp = Transaction(@client)
268
+ tmp = Transaction.new(@client)
263
269
  tmp.fill_with_data(v)
264
270
  a.push(tmp)
265
271
  end
@@ -274,7 +280,7 @@ module ProcessOut
274
280
  # Get all the customers.
275
281
  # Params:
276
282
  # +options+:: +Hash+ of options
277
- def all(options = nil)
283
+ def all(options = {})
278
284
  request = Request.new(@client)
279
285
  path = "/customers"
280
286
  data = {
@@ -287,7 +293,7 @@ module ProcessOut
287
293
  a = Array.new
288
294
  body = response.body
289
295
  for v in body['customers']
290
- tmp = Customer(@client)
296
+ tmp = Customer.new(@client)
291
297
  tmp.fill_with_data(v)
292
298
  a.push(tmp)
293
299
  end
@@ -302,7 +308,7 @@ module ProcessOut
302
308
  # Create a new customer.
303
309
  # Params:
304
310
  # +options+:: +Hash+ of options
305
- def create(options = nil)
311
+ def create(options = {})
306
312
  request = Request.new(@client)
307
313
  path = "/customers"
308
314
  data = {
@@ -338,7 +344,7 @@ module ProcessOut
338
344
  # Params:
339
345
  # +customer_id+:: ID of the customer
340
346
  # +options+:: +Hash+ of options
341
- def find(customer_id, options = nil)
347
+ def find(customer_id, options = {})
342
348
  request = Request.new(@client)
343
349
  path = "/customers/" + CGI.escape(customer_id) + ""
344
350
  data = {
@@ -363,7 +369,7 @@ module ProcessOut
363
369
  # Save the updated customer attributes.
364
370
  # Params:
365
371
  # +options+:: +Hash+ of options
366
- def save(options = nil)
372
+ def save(options = {})
367
373
  request = Request.new(@client)
368
374
  path = "/customers/" + CGI.escape(@id) + ""
369
375
  data = {
@@ -397,7 +403,7 @@ module ProcessOut
397
403
  # Delete the customer.
398
404
  # Params:
399
405
  # +options+:: +Hash+ of options
400
- def delete(options = nil)
406
+ def delete(options = {})
401
407
  request = Request.new(@client)
402
408
  path = "/customers/" + CGI.escape(@id) + ""
403
409
  data = {
@@ -23,14 +23,20 @@ module ProcessOut
23
23
  # Initializes the CustomerAction object
24
24
  # Params:
25
25
  # +client+:: +ProcessOut+ client instance
26
- def initialize(client)
26
+ # +data+:: data that can be used to fill the object
27
+ def initialize(client, data = {})
27
28
  @client = client
28
29
 
29
- @type = ""
30
- @value = ""
30
+ @type = data.fetch(:type, "")
31
+ @value = data.fetch(:value, "")
31
32
 
32
33
  end
33
34
 
35
+ # Create a new CustomerAction using the current client
36
+ def new(data = {})
37
+ CustomerAction.new(@client, data)
38
+ end
39
+
34
40
  # Fills the object with data coming from the API
35
41
  # Params:
36
42
  # +data+:: +Hash+ of data coming from the API
@@ -79,21 +79,27 @@ module ProcessOut
79
79
  # Initializes the Discount object
80
80
  # Params:
81
81
  # +client+:: +ProcessOut+ client instance
82
- def initialize(client)
82
+ # +data+:: data that can be used to fill the object
83
+ def initialize(client, data = {})
83
84
  @client = client
84
85
 
85
- @id = ""
86
- @project = nil
87
- @subscription = nil
88
- @coupon = nil
89
- @amount = ""
90
- @expires_at = ""
91
- @metadata = Hash.new
92
- @sandbox = false
93
- @created_at = ""
86
+ @id = data.fetch(:id, "")
87
+ @project = data.fetch(:project, nil)
88
+ @subscription = data.fetch(:subscription, nil)
89
+ @coupon = data.fetch(:coupon, nil)
90
+ @amount = data.fetch(:amount, "")
91
+ @expires_at = data.fetch(:expires_at, "")
92
+ @metadata = data.fetch(:metadata, Hash.new)
93
+ @sandbox = data.fetch(:sandbox, false)
94
+ @created_at = data.fetch(:created_at, "")
94
95
 
95
96
  end
96
97
 
98
+ # Create a new Discount using the current client
99
+ def new(data = {})
100
+ Discount.new(@client, data)
101
+ end
102
+
97
103
  # Fills the object with data coming from the API
98
104
  # Params:
99
105
  # +data+:: +Hash+ of data coming from the API
@@ -133,7 +139,7 @@ module ProcessOut
133
139
  # Params:
134
140
  # +subscription_id+:: ID of the subscription
135
141
  # +options+:: +Hash+ of options
136
- def apply(subscription_id, options = nil)
142
+ def apply(subscription_id, options = {})
137
143
  request = Request.new(@client)
138
144
  path = "/subscriptions/" + CGI.escape(subscription_id) + "/discounts"
139
145
  data = {
@@ -161,7 +167,7 @@ module ProcessOut
161
167
  # +subscription_id+:: ID of the subscription
162
168
  # +coupon_id+:: ID of the coupon
163
169
  # +options+:: +Hash+ of options
164
- def apply_coupon(subscription_id, coupon_id, options = nil)
170
+ def apply_coupon(subscription_id, coupon_id, options = {})
165
171
  request = Request.new(@client)
166
172
  path = "/subscriptions/" + CGI.escape(subscription_id) + "/discounts"
167
173
  data = {
@@ -190,7 +196,7 @@ module ProcessOut
190
196
  # +subscription_id+:: ID of the subscription
191
197
  # +discount_id+:: ID of the discount
192
198
  # +options+:: +Hash+ of options
193
- def find(subscription_id, discount_id, options = nil)
199
+ def find(subscription_id, discount_id, options = {})
194
200
  request = Request.new(@client)
195
201
  path = "/subscriptions/" + CGI.escape(subscription_id) + "/discounts/" + CGI.escape(discount_id) + ""
196
202
  data = {
@@ -51,18 +51,24 @@ module ProcessOut
51
51
  # Initializes the Event object
52
52
  # Params:
53
53
  # +client+:: +ProcessOut+ client instance
54
- def initialize(client)
54
+ # +data+:: data that can be used to fill the object
55
+ def initialize(client, data = {})
55
56
  @client = client
56
57
 
57
- @id = ""
58
- @project = nil
59
- @name = ""
60
- @data = nil
61
- @sandbox = false
62
- @fired_at = ""
58
+ @id = data.fetch(:id, "")
59
+ @project = data.fetch(:project, nil)
60
+ @name = data.fetch(:name, "")
61
+ @data = data.fetch(:data, nil)
62
+ @sandbox = data.fetch(:sandbox, false)
63
+ @fired_at = data.fetch(:fired_at, "")
63
64
 
64
65
  end
65
66
 
67
+ # Create a new Event using the current client
68
+ def new(data = {})
69
+ Event.new(@client, data)
70
+ end
71
+
66
72
  # Fills the object with data coming from the API
67
73
  # Params:
68
74
  # +data+:: +Hash+ of data coming from the API
@@ -92,7 +98,7 @@ module ProcessOut
92
98
  # Get all the webhooks of the event.
93
99
  # Params:
94
100
  # +options+:: +Hash+ of options
95
- def webhooks(options = nil)
101
+ def webhooks(options = {})
96
102
  request = Request.new(@client)
97
103
  path = "/events/" + CGI.escape(@id) + "/webhooks"
98
104
  data = {
@@ -105,7 +111,7 @@ module ProcessOut
105
111
  a = Array.new
106
112
  body = response.body
107
113
  for v in body['webhooks']
108
- tmp = Webhook(@client)
114
+ tmp = Webhook.new(@client)
109
115
  tmp.fill_with_data(v)
110
116
  a.push(tmp)
111
117
  end
@@ -120,7 +126,7 @@ module ProcessOut
120
126
  # Get all the events.
121
127
  # Params:
122
128
  # +options+:: +Hash+ of options
123
- def all(options = nil)
129
+ def all(options = {})
124
130
  request = Request.new(@client)
125
131
  path = "/events"
126
132
  data = {
@@ -133,7 +139,7 @@ module ProcessOut
133
139
  a = Array.new
134
140
  body = response.body
135
141
  for v in body['events']
136
- tmp = Event(@client)
142
+ tmp = Event.new(@client)
137
143
  tmp.fill_with_data(v)
138
144
  a.push(tmp)
139
145
  end
@@ -149,7 +155,7 @@ module ProcessOut
149
155
  # Params:
150
156
  # +event_id+:: ID of the event
151
157
  # +options+:: +Hash+ of options
152
- def find(event_id, options = nil)
158
+ def find(event_id, options = {})
153
159
  request = Request.new(@client)
154
160
  path = "/events/" + CGI.escape(event_id) + ""
155
161
  data = {
@@ -53,20 +53,26 @@ module ProcessOut
53
53
  # Initializes the Gateway object
54
54
  # Params:
55
55
  # +client+:: +ProcessOut+ client instance
56
- def initialize(client)
56
+ # +data+:: data that can be used to fill the object
57
+ def initialize(client, data = {})
57
58
  @client = client
58
59
 
59
- @id = ""
60
- @name = ""
61
- @display_name = ""
62
- @logo_url = ""
63
- @url = ""
64
- @flows = Array.new
65
- @tags = Array.new
66
- @description = ""
60
+ @id = data.fetch(:id, "")
61
+ @name = data.fetch(:name, "")
62
+ @display_name = data.fetch(:display_name, "")
63
+ @logo_url = data.fetch(:logo_url, "")
64
+ @url = data.fetch(:url, "")
65
+ @flows = data.fetch(:flows, Array.new)
66
+ @tags = data.fetch(:tags, Array.new)
67
+ @description = data.fetch(:description, "")
67
68
 
68
69
  end
69
70
 
71
+ # Create a new Gateway using the current client
72
+ def new(data = {})
73
+ Gateway.new(@client, data)
74
+ end
75
+
70
76
  # Fills the object with data coming from the API
71
77
  # Params:
72
78
  # +data+:: +Hash+ of data coming from the API
@@ -52,17 +52,23 @@ module ProcessOut
52
52
  # Initializes the GatewayConfiguration object
53
53
  # Params:
54
54
  # +client+:: +ProcessOut+ client instance
55
- def initialize(client)
55
+ # +data+:: data that can be used to fill the object
56
+ def initialize(client, data = {})
56
57
  @client = client
57
58
 
58
- @id = ""
59
- @project = nil
60
- @gateway = nil
61
- @enabled = false
62
- @public_keys = Hash.new
59
+ @id = data.fetch(:id, "")
60
+ @project = data.fetch(:project, nil)
61
+ @gateway = data.fetch(:gateway, nil)
62
+ @enabled = data.fetch(:enabled, false)
63
+ @public_keys = data.fetch(:public_keys, Hash.new)
63
64
 
64
65
  end
65
66
 
67
+ # Create a new GatewayConfiguration using the current client
68
+ def new(data = {})
69
+ GatewayConfiguration.new(@client, data)
70
+ end
71
+
66
72
  # Fills the object with data coming from the API
67
73
  # Params:
68
74
  # +data+:: +Hash+ of data coming from the API
@@ -121,28 +121,34 @@ module ProcessOut
121
121
  # Initializes the Invoice object
122
122
  # Params:
123
123
  # +client+:: +ProcessOut+ client instance
124
- def initialize(client)
124
+ # +data+:: data that can be used to fill the object
125
+ def initialize(client, data = {})
125
126
  @client = client
126
127
 
127
- @id = ""
128
- @project = nil
129
- @transaction = nil
130
- @customer = nil
131
- @subscription = nil
132
- @url = ""
133
- @name = ""
134
- @amount = ""
135
- @currency = ""
136
- @metadata = Hash.new
137
- @request_email = false
138
- @request_shipping = false
139
- @return_url = ""
140
- @cancel_url = ""
141
- @sandbox = false
142
- @created_at = ""
128
+ @id = data.fetch(:id, "")
129
+ @project = data.fetch(:project, nil)
130
+ @transaction = data.fetch(:transaction, nil)
131
+ @customer = data.fetch(:customer, nil)
132
+ @subscription = data.fetch(:subscription, nil)
133
+ @url = data.fetch(:url, "")
134
+ @name = data.fetch(:name, "")
135
+ @amount = data.fetch(:amount, "")
136
+ @currency = data.fetch(:currency, "")
137
+ @metadata = data.fetch(:metadata, Hash.new)
138
+ @request_email = data.fetch(:request_email, false)
139
+ @request_shipping = data.fetch(:request_shipping, false)
140
+ @return_url = data.fetch(:return_url, "")
141
+ @cancel_url = data.fetch(:cancel_url, "")
142
+ @sandbox = data.fetch(:sandbox, false)
143
+ @created_at = data.fetch(:created_at, "")
143
144
 
144
145
  end
145
146
 
147
+ # Create a new Invoice using the current client
148
+ def new(data = {})
149
+ Invoice.new(@client, data)
150
+ end
151
+
146
152
  # Fills the object with data coming from the API
147
153
  # Params:
148
154
  # +data+:: +Hash+ of data coming from the API
@@ -203,7 +209,7 @@ module ProcessOut
203
209
  # Params:
204
210
  # +source+:: Source used to authorization the payment. Can be a card, a token or a gateway request
205
211
  # +options+:: +Hash+ of options
206
- def authorize(source, options = nil)
212
+ def authorize(source, options = {})
207
213
  request = Request.new(@client)
208
214
  path = "/invoices/" + CGI.escape(@id) + "/authorize"
209
215
  data = {
@@ -215,7 +221,7 @@ module ProcessOut
215
221
 
216
222
  body = response.body
217
223
  body = body["transaction"]
218
- transaction = Transaction(self._client)
224
+ transaction = Transaction.new(@client)
219
225
  return_values.push(transaction.fill_with_data(body))
220
226
 
221
227
 
@@ -226,7 +232,7 @@ module ProcessOut
226
232
  # Params:
227
233
  # +source+:: Source used to authorization the payment. Can be a card, a token or a gateway request
228
234
  # +options+:: +Hash+ of options
229
- def capture(source, options = nil)
235
+ def capture(source, options = {})
230
236
  request = Request.new(@client)
231
237
  path = "/invoices/" + CGI.escape(@id) + "/capture"
232
238
  data = {
@@ -238,7 +244,7 @@ module ProcessOut
238
244
 
239
245
  body = response.body
240
246
  body = body["transaction"]
241
- transaction = Transaction(self._client)
247
+ transaction = Transaction.new(@client)
242
248
  return_values.push(transaction.fill_with_data(body))
243
249
 
244
250
 
@@ -248,7 +254,7 @@ module ProcessOut
248
254
  # Get the customer linked to the invoice.
249
255
  # Params:
250
256
  # +options+:: +Hash+ of options
251
- def customer(options = nil)
257
+ def customer(options = {})
252
258
  request = Request.new(@client)
253
259
  path = "/invoices/" + CGI.escape(@id) + "/customers"
254
260
  data = {
@@ -260,7 +266,7 @@ module ProcessOut
260
266
 
261
267
  body = response.body
262
268
  body = body["customer"]
263
- customer = Customer(self._client)
269
+ customer = Customer.new(@client)
264
270
  return_values.push(customer.fill_with_data(body))
265
271
 
266
272
 
@@ -271,7 +277,7 @@ module ProcessOut
271
277
  # Params:
272
278
  # +customer_id+:: ID of the customer to be linked to the invoice
273
279
  # +options+:: +Hash+ of options
274
- def assign_customer(customer_id, options = nil)
280
+ def assign_customer(customer_id, options = {})
275
281
  request = Request.new(@client)
276
282
  path = "/invoices/" + CGI.escape(@id) + "/customers"
277
283
  data = {
@@ -283,7 +289,7 @@ module ProcessOut
283
289
 
284
290
  body = response.body
285
291
  body = body["customer"]
286
- customer = Customer(self._client)
292
+ customer = Customer.new(@client)
287
293
  return_values.push(customer.fill_with_data(body))
288
294
 
289
295
 
@@ -293,7 +299,7 @@ module ProcessOut
293
299
  # Get the transaction of the invoice.
294
300
  # Params:
295
301
  # +options+:: +Hash+ of options
296
- def transaction(options = nil)
302
+ def transaction(options = {})
297
303
  request = Request.new(@client)
298
304
  path = "/invoices/" + CGI.escape(@id) + "/transactions"
299
305
  data = {
@@ -305,7 +311,7 @@ module ProcessOut
305
311
 
306
312
  body = response.body
307
313
  body = body["transaction"]
308
- transaction = Transaction(self._client)
314
+ transaction = Transaction.new(@client)
309
315
  return_values.push(transaction.fill_with_data(body))
310
316
 
311
317
 
@@ -315,7 +321,7 @@ module ProcessOut
315
321
  # Void the invoice
316
322
  # Params:
317
323
  # +options+:: +Hash+ of options
318
- def void(options = nil)
324
+ def void(options = {})
319
325
  request = Request.new(@client)
320
326
  path = "/invoices/" + CGI.escape(@id) + "/void"
321
327
  data = {
@@ -327,7 +333,7 @@ module ProcessOut
327
333
 
328
334
  body = response.body
329
335
  body = body["transaction"]
330
- transaction = Transaction(self._client)
336
+ transaction = Transaction.new(@client)
331
337
  return_values.push(transaction.fill_with_data(body))
332
338
 
333
339
 
@@ -337,7 +343,7 @@ module ProcessOut
337
343
  # Get all the invoices.
338
344
  # Params:
339
345
  # +options+:: +Hash+ of options
340
- def all(options = nil)
346
+ def all(options = {})
341
347
  request = Request.new(@client)
342
348
  path = "/invoices"
343
349
  data = {
@@ -350,7 +356,7 @@ module ProcessOut
350
356
  a = Array.new
351
357
  body = response.body
352
358
  for v in body['invoices']
353
- tmp = Invoice(@client)
359
+ tmp = Invoice.new(@client)
354
360
  tmp.fill_with_data(v)
355
361
  a.push(tmp)
356
362
  end
@@ -365,7 +371,7 @@ module ProcessOut
365
371
  # Create a new invoice.
366
372
  # Params:
367
373
  # +options+:: +Hash+ of options
368
- def create(options = nil)
374
+ def create(options = {})
369
375
  request = Request.new(@client)
370
376
  path = "/invoices"
371
377
  data = {
@@ -397,7 +403,7 @@ module ProcessOut
397
403
  # Params:
398
404
  # +customer_id+:: ID of the customer
399
405
  # +options+:: +Hash+ of options
400
- def create_for_customer(customer_id, options = nil)
406
+ def create_for_customer(customer_id, options = {})
401
407
  request = Request.new(@client)
402
408
  path = "/invoices"
403
409
  data = {
@@ -430,7 +436,7 @@ module ProcessOut
430
436
  # Params:
431
437
  # +invoice_id+:: ID of the invoice
432
438
  # +options+:: +Hash+ of options
433
- def find(invoice_id, options = nil)
439
+ def find(invoice_id, options = {})
434
440
  request = Request.new(@client)
435
441
  path = "/invoices/" + CGI.escape(invoice_id) + ""
436
442
  data = {