processout 1.2.2 → 2.0.0

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
  SHA1:
3
- metadata.gz: 54acb0b48d4da1e1ec473dff88a5b08d8f9ad33e
4
- data.tar.gz: bb8a3e1b1add18023f54d3739858909812e96bb0
3
+ metadata.gz: 63e1163e73bcea9ce6653eba757252dafedca08f
4
+ data.tar.gz: 36553ed290dab6dedd47e7a5863b6f4e0722d687
5
5
  SHA512:
6
- metadata.gz: 17aa470d45a37fc7e30b6993925934b80c5e468d7d26d3715c2dfff373c11f7451e730559d8eff4e42d43629904dfa8f51bef43b365556736c94bbcaa9930aee
7
- data.tar.gz: 80073b3e9dc0aee204f5963907cdfc39e91536fc59ceda7852ffb876eadbee6ac694e3f8a2505bb1207aa5c5725afce1ac1860a74af9268d4938345a1b312d33
6
+ metadata.gz: aad70b245a3d7d82da6777f23863a81cfa2468c08b64a729c7d4ebeda8320881b724635ec5edcc0f44b797687798fb4a1784fb8d387a4b590e082726481b2e57
7
+ data.tar.gz: 6c55f645cb87d5433f5a26184d912a7606a3dcc2775aa6d7390d45e30537ae5a6a5169a6052a1fe407ccfe914ac659cc81564f1ab81a093315562835bfa6d696
@@ -1,5 +1,9 @@
1
1
  require "processout/version"
2
+ require "processout/gateway_request"
2
3
  require "processout/activity"
4
+ require "processout/addon"
5
+ require "processout/api_request"
6
+ require "processout/api_version"
3
7
  require "processout/authorization_request"
4
8
  require "processout/card"
5
9
  require "processout/card_information"
@@ -13,13 +17,16 @@ require "processout/gateway_configuration"
13
17
  require "processout/invoice"
14
18
  require "processout/invoice_detail"
15
19
  require "processout/customer_action"
20
+ require "processout/dunning_action"
16
21
  require "processout/plan"
17
22
  require "processout/product"
18
23
  require "processout/project"
19
24
  require "processout/refund"
20
25
  require "processout/subscription"
21
26
  require "processout/transaction"
27
+ require "processout/transaction_operation"
22
28
  require "processout/webhook"
29
+ require "processout/webhook_endpoint"
23
30
 
24
31
  module ProcessOut
25
32
  class Client
@@ -37,6 +44,21 @@ module ProcessOut
37
44
  obj = Activity.new(self, data)
38
45
  end
39
46
 
47
+ # Create a new Addon instance
48
+ def addon(data = {})
49
+ obj = Addon.new(self, data)
50
+ end
51
+
52
+ # Create a new APIRequest instance
53
+ def api_request(data = {})
54
+ obj = APIRequest.new(self, data)
55
+ end
56
+
57
+ # Create a new APIVersion instance
58
+ def api_version(data = {})
59
+ obj = APIVersion.new(self, data)
60
+ end
61
+
40
62
  # Create a new AuthorizationRequest instance
41
63
  def authorization_request(data = {})
42
64
  obj = AuthorizationRequest.new(self, data)
@@ -102,6 +124,11 @@ module ProcessOut
102
124
  obj = CustomerAction.new(self, data)
103
125
  end
104
126
 
127
+ # Create a new DunningAction instance
128
+ def dunning_action(data = {})
129
+ obj = DunningAction.new(self, data)
130
+ end
131
+
105
132
  # Create a new Plan instance
106
133
  def plan(data = {})
107
134
  obj = Plan.new(self, data)
@@ -132,11 +159,21 @@ module ProcessOut
132
159
  obj = Transaction.new(self, data)
133
160
  end
134
161
 
162
+ # Create a new TransactionOperation instance
163
+ def transaction_operation(data = {})
164
+ obj = TransactionOperation.new(self, data)
165
+ end
166
+
135
167
  # Create a new Webhook instance
136
168
  def webhook(data = {})
137
169
  obj = Webhook.new(self, data)
138
170
  end
139
171
 
172
+ # Create a new WebhookEndpoint instance
173
+ def webhook_endpoint(data = {})
174
+ obj = WebhookEndpoint.new(self, data)
175
+ end
176
+
140
177
 
141
178
  end
142
179
  end
@@ -9,6 +9,7 @@ module ProcessOut
9
9
 
10
10
  attr_reader :id
11
11
  attr_reader :project
12
+ attr_reader :project_id
12
13
  attr_reader :title
13
14
  attr_reader :content
14
15
  attr_reader :level
@@ -20,6 +21,11 @@ module ProcessOut
20
21
  end
21
22
 
22
23
  def project=(val)
24
+ if val.nil?
25
+ @project = val
26
+ return
27
+ end
28
+
23
29
  if val.instance_of? Project
24
30
  @project = val
25
31
  else
@@ -30,6 +36,10 @@ module ProcessOut
30
36
 
31
37
  end
32
38
 
39
+ def project_id=(val)
40
+ @project_id = val
41
+ end
42
+
33
43
  def title=(val)
34
44
  @title = val
35
45
  end
@@ -56,6 +66,7 @@ module ProcessOut
56
66
 
57
67
  self.id = data.fetch(:id, nil)
58
68
  self.project = data.fetch(:project, nil)
69
+ self.project_id = data.fetch(:project_id, nil)
59
70
  self.title = data.fetch(:title, nil)
60
71
  self.content = data.fetch(:content, nil)
61
72
  self.level = data.fetch(:level, nil)
@@ -81,6 +92,9 @@ module ProcessOut
81
92
  if data.include? "project"
82
93
  self.project = data["project"]
83
94
  end
95
+ if data.include? "project_id"
96
+ self.project_id = data["project_id"]
97
+ end
84
98
  if data.include? "title"
85
99
  self.title = data["title"]
86
100
  end
@@ -106,6 +120,7 @@ module ProcessOut
106
120
  end
107
121
  self.id = data.fetch(:id, self.id)
108
122
  self.project = data.fetch(:project, self.project)
123
+ self.project_id = data.fetch(:project_id, self.project_id)
109
124
  self.title = data.fetch(:title, self.title)
110
125
  self.content = data.fetch(:content, self.content)
111
126
  self.level = data.fetch(:level, self.level)
@@ -0,0 +1,352 @@
1
+ # The content of this file was automatically generated
2
+
3
+ require "cgi"
4
+ require "processout/networking/request"
5
+ require "processout/networking/response"
6
+
7
+ module ProcessOut
8
+ class Addon
9
+
10
+ attr_reader :id
11
+ attr_reader :project
12
+ attr_reader :project_id
13
+ attr_reader :subscription
14
+ attr_reader :subscription_id
15
+ attr_reader :plan
16
+ attr_reader :plan_id
17
+ attr_reader :type
18
+ attr_reader :name
19
+ attr_reader :amount
20
+ attr_reader :quantity
21
+ attr_reader :metadata
22
+ attr_reader :sandbox
23
+ attr_reader :created_at
24
+
25
+
26
+ def id=(val)
27
+ @id = val
28
+ end
29
+
30
+ def project=(val)
31
+ if val.nil?
32
+ @project = val
33
+ return
34
+ end
35
+
36
+ if val.instance_of? Project
37
+ @project = val
38
+ else
39
+ obj = Project.new(@client)
40
+ obj.fill_with_data(val)
41
+ @project = obj
42
+ end
43
+
44
+ end
45
+
46
+ def project_id=(val)
47
+ @project_id = val
48
+ end
49
+
50
+ def subscription=(val)
51
+ if val.nil?
52
+ @subscription = val
53
+ return
54
+ end
55
+
56
+ if val.instance_of? Subscription
57
+ @subscription = val
58
+ else
59
+ obj = Subscription.new(@client)
60
+ obj.fill_with_data(val)
61
+ @subscription = obj
62
+ end
63
+
64
+ end
65
+
66
+ def subscription_id=(val)
67
+ @subscription_id = val
68
+ end
69
+
70
+ def plan=(val)
71
+ if val.nil?
72
+ @plan = val
73
+ return
74
+ end
75
+
76
+ if val.instance_of? Plan
77
+ @plan = val
78
+ else
79
+ obj = Plan.new(@client)
80
+ obj.fill_with_data(val)
81
+ @plan = obj
82
+ end
83
+
84
+ end
85
+
86
+ def plan_id=(val)
87
+ @plan_id = val
88
+ end
89
+
90
+ def type=(val)
91
+ @type = val
92
+ end
93
+
94
+ def name=(val)
95
+ @name = val
96
+ end
97
+
98
+ def amount=(val)
99
+ @amount = val
100
+ end
101
+
102
+ def quantity=(val)
103
+ @quantity = val
104
+ end
105
+
106
+ def metadata=(val)
107
+ @metadata = val
108
+ end
109
+
110
+ def sandbox=(val)
111
+ @sandbox = val
112
+ end
113
+
114
+ def created_at=(val)
115
+ @created_at = val
116
+ end
117
+
118
+
119
+ # Initializes the Addon object
120
+ # Params:
121
+ # +client+:: +ProcessOut+ client instance
122
+ # +data+:: data that can be used to fill the object
123
+ def initialize(client, data = {})
124
+ @client = client
125
+
126
+ self.id = data.fetch(:id, nil)
127
+ self.project = data.fetch(:project, nil)
128
+ self.project_id = data.fetch(:project_id, nil)
129
+ self.subscription = data.fetch(:subscription, nil)
130
+ self.subscription_id = data.fetch(:subscription_id, nil)
131
+ self.plan = data.fetch(:plan, nil)
132
+ self.plan_id = data.fetch(:plan_id, nil)
133
+ self.type = data.fetch(:type, nil)
134
+ self.name = data.fetch(:name, nil)
135
+ self.amount = data.fetch(:amount, nil)
136
+ self.quantity = data.fetch(:quantity, nil)
137
+ self.metadata = data.fetch(:metadata, nil)
138
+ self.sandbox = data.fetch(:sandbox, nil)
139
+ self.created_at = data.fetch(:created_at, nil)
140
+
141
+ end
142
+
143
+ # Create a new Addon using the current client
144
+ def new(data = {})
145
+ Addon.new(@client, data)
146
+ end
147
+
148
+ # Fills the object with data coming from the API
149
+ # Params:
150
+ # +data+:: +Hash+ of data coming from the API
151
+ def fill_with_data(data)
152
+ if data.nil?
153
+ return self
154
+ end
155
+ if data.include? "id"
156
+ self.id = data["id"]
157
+ end
158
+ if data.include? "project"
159
+ self.project = data["project"]
160
+ end
161
+ if data.include? "project_id"
162
+ self.project_id = data["project_id"]
163
+ end
164
+ if data.include? "subscription"
165
+ self.subscription = data["subscription"]
166
+ end
167
+ if data.include? "subscription_id"
168
+ self.subscription_id = data["subscription_id"]
169
+ end
170
+ if data.include? "plan"
171
+ self.plan = data["plan"]
172
+ end
173
+ if data.include? "plan_id"
174
+ self.plan_id = data["plan_id"]
175
+ end
176
+ if data.include? "type"
177
+ self.type = data["type"]
178
+ end
179
+ if data.include? "name"
180
+ self.name = data["name"]
181
+ end
182
+ if data.include? "amount"
183
+ self.amount = data["amount"]
184
+ end
185
+ if data.include? "quantity"
186
+ self.quantity = data["quantity"]
187
+ end
188
+ if data.include? "metadata"
189
+ self.metadata = data["metadata"]
190
+ end
191
+ if data.include? "sandbox"
192
+ self.sandbox = data["sandbox"]
193
+ end
194
+ if data.include? "created_at"
195
+ self.created_at = data["created_at"]
196
+ end
197
+
198
+ self
199
+ end
200
+
201
+ # Prefills the object with the data passed as parameters
202
+ # Params:
203
+ # +data+:: +Hash+ of data
204
+ def prefill(data)
205
+ if data.nil?
206
+ return self
207
+ end
208
+ self.id = data.fetch(:id, self.id)
209
+ self.project = data.fetch(:project, self.project)
210
+ self.project_id = data.fetch(:project_id, self.project_id)
211
+ self.subscription = data.fetch(:subscription, self.subscription)
212
+ self.subscription_id = data.fetch(:subscription_id, self.subscription_id)
213
+ self.plan = data.fetch(:plan, self.plan)
214
+ self.plan_id = data.fetch(:plan_id, self.plan_id)
215
+ self.type = data.fetch(:type, self.type)
216
+ self.name = data.fetch(:name, self.name)
217
+ self.amount = data.fetch(:amount, self.amount)
218
+ self.quantity = data.fetch(:quantity, self.quantity)
219
+ self.metadata = data.fetch(:metadata, self.metadata)
220
+ self.sandbox = data.fetch(:sandbox, self.sandbox)
221
+ self.created_at = data.fetch(:created_at, self.created_at)
222
+
223
+ self
224
+ end
225
+
226
+ # Apply a new addon to the given subscription ID.
227
+ # Params:
228
+ # +subscription_id+:: ID of the subscription
229
+ # +options+:: +Hash+ of options
230
+ def apply(subscription_id, options = {})
231
+ self.prefill(options)
232
+
233
+ request = Request.new(@client)
234
+ path = "/subscriptions/" + CGI.escape(subscription_id) + "/addons"
235
+ data = {
236
+ "plan_id" => @plan_id,
237
+ "type" => @type,
238
+ "name" => @name,
239
+ "amount" => @amount,
240
+ "quantity" => @quantity,
241
+ "metadata" => @metadata,
242
+ "prorate" => options.fetch(:prorate, nil),
243
+ "proration_date" => options.fetch(:proration_date, nil),
244
+ "preview" => options.fetch(:preview, nil)
245
+ }
246
+
247
+ response = Response.new(request.post(path, data, options))
248
+ return_values = Array.new
249
+
250
+ body = response.body
251
+ body = body["addon"]
252
+
253
+
254
+ return_values.push(self.fill_with_data(body))
255
+
256
+
257
+
258
+ return_values[0]
259
+ end
260
+
261
+ # Find a subscription's addon by its ID.
262
+ # Params:
263
+ # +subscription_id+:: ID of the subscription on which the addon was applied
264
+ # +addon_id+:: ID of the addon
265
+ # +options+:: +Hash+ of options
266
+ def find(subscription_id, addon_id, options = {})
267
+ self.prefill(options)
268
+
269
+ request = Request.new(@client)
270
+ path = "/subscriptions/" + CGI.escape(subscription_id) + "/addons/" + CGI.escape(addon_id) + ""
271
+ data = {
272
+
273
+ }
274
+
275
+ response = Response.new(request.get(path, data, options))
276
+ return_values = Array.new
277
+
278
+ body = response.body
279
+ body = body["addon"]
280
+
281
+
282
+ obj = Addon.new(@client)
283
+ return_values.push(obj.fill_with_data(body))
284
+
285
+
286
+
287
+ return_values[0]
288
+ end
289
+
290
+ # Save the updated addon attributes.
291
+ # Params:
292
+ # +options+:: +Hash+ of options
293
+ def save(options = {})
294
+ self.prefill(options)
295
+
296
+ request = Request.new(@client)
297
+ path = "/subscriptions/" + CGI.escape(@subscription_id) + "/addons/" + CGI.escape(@id) + ""
298
+ data = {
299
+ "plan_id" => @plan_id,
300
+ "type" => @type,
301
+ "name" => @name,
302
+ "amount" => @amount,
303
+ "quantity" => @quantity,
304
+ "metadata" => @metadata,
305
+ "prorate" => options.fetch(:prorate, nil),
306
+ "proration_date" => options.fetch(:proration_date, nil),
307
+ "preview" => options.fetch(:preview, nil),
308
+ "increment_quantity_by" => options.fetch(:increment_quantity_by, nil)
309
+ }
310
+
311
+ response = Response.new(request.put(path, data, options))
312
+ return_values = Array.new
313
+
314
+ body = response.body
315
+ body = body["addon"]
316
+
317
+
318
+ return_values.push(self.fill_with_data(body))
319
+
320
+
321
+
322
+ return_values[0]
323
+ end
324
+
325
+ # Remove an addon applied to a subscription.
326
+ # Params:
327
+ # +subscription_id+:: ID of the subscription on which the addon was applied
328
+ # +addon_id+:: ID of the addon
329
+ # +options+:: +Hash+ of options
330
+ def remove(subscription_id, addon_id, options = {})
331
+ self.prefill(options)
332
+
333
+ request = Request.new(@client)
334
+ path = "/subscriptions/" + CGI.escape(subscription_id) + "/addons/" + CGI.escape(addon_id) + ""
335
+ data = {
336
+ "prorate" => options.fetch(:prorate, nil),
337
+ "proration_date" => options.fetch(:proration_date, nil),
338
+ "preview" => options.fetch(:preview, nil)
339
+ }
340
+
341
+ response = Response.new(request.delete(path, data, options))
342
+ return_values = Array.new
343
+
344
+ return_values.push(response.success)
345
+
346
+
347
+ return_values[0]
348
+ end
349
+
350
+
351
+ end
352
+ end