activewepay 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yzk2OThkM2Y4YmQzOTM4YTJjYzM0NmRiY2QzMGM0YzhhYjczNmRmYw==
4
+ NjI3ZWM3YjBiZjUyZDFjZWRhOTlkMjNmOTk5NTk0ZmU3NTNhZmU5ZA==
5
5
  data.tar.gz: !binary |-
6
- ZmI0OTY1MzEyZjNmOGEzYWQwZWI0N2U2MGE1NTgzYjQ0MmZkNjZlZA==
6
+ MjNjYmZiMGRmZDg0NjMwNzQ4ZTFjMmU0MWUxZDU2NDk2Mzg3N2NmZg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NGQ5NjIxZjA3NzUyMTRmNTQxYjVmODAxMWZlMWU2OTdmNDJkZjYwMTJhZDc4
10
- NjFlMDkyYzJlNTNkYmYwNmNkZTc2ZGYxYmU5N2QxNTBhZTAwNmE4ZjdhMjYx
11
- YjcyNThjYWMwZWNhMGVkODMzMmI1OTczNmEyODk1ZTk5ZmQ1MmQ=
9
+ MmI1MzliNjIzNGJiOWYxNWZhMWQwMmNjZjViNzlmZjM3MjNjZjE4NjhmYWU0
10
+ ZjhhMzQxYTVkNTZmOWJiZTQxMzZiYjhlNzU1M2RlMzhjOTUxZjI5NDQwYzhm
11
+ Y2VhMDg4NWY1NzNiOTdjNzEzZWRjYTQyZDUxODVhYTQ5MDE5OWM=
12
12
  data.tar.gz: !binary |-
13
- M2NiMTYyOWIxYTM3NjI1Yzc1NjdkZWFiNWMwOWMxZGRlNjU1MmRhN2E5ZWZm
14
- YmQyZjA4NDVhOTVjMmMyNzQ2Nzk3ZjEwMTJmMzJhNGM3MzI3NTMxNGZiNjQw
15
- MTkwMzg0ZGMyYzQzMjQ4ODQ3ODA1OTEwNjNhZjNiZjBjZjZkYzg=
13
+ Zjk2MjBkM2Q4MGQ1MjQwYjI0NDE2ZTkxYTlhZjg5YWU0ZmYzZTA4YWYyNzIz
14
+ NmM2MzI3NmY2YTJkOGE3NjA2OGM2ZTQ2YWU0M2IwODIwZmY2ODk4M2NlYzhk
15
+ MGU4YTRkMjBjMzAxY2I3ZDdkOGRiZDZkMTQwZjEyYjFlNGY2MWU=
@@ -1,3 +1,3 @@
1
1
  module Activewepay
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
data/lib/activewepay.rb CHANGED
@@ -5,13 +5,18 @@ require 'json'
5
5
  require 'net/http'
6
6
  require 'net/https'
7
7
  require 'cgi'
8
+ require 'active_model'
8
9
 
9
10
  module ActiveWepay
10
11
  class Base
11
12
  extend ActiveModel::Translation
12
-
13
- attr_accessor :options, :id, :oauth_token
14
- attr_reader :response, :errors
13
+ extend ActiveModel::Callbacks
14
+ include ActiveModel::Validations
15
+
16
+ validate :validate_response
17
+
18
+ attr_reader :errors, :oauth_token, :id, :amount, :account_id, :redirect_uri, :callback_uri, :response
19
+
15
20
 
16
21
  STAGE_API_ENDPOINT = "https://stage.wepayapi.com/v2"
17
22
  STAGE_UI_ENDPOINT = "https://stage.wepay.com/v2"
@@ -19,9 +24,16 @@ module ActiveWepay
19
24
  PRODUCTION_API_ENDPOINT = "https://wepayapi.com/v2"
20
25
  PRODUCTION_UI_ENDPOINT = "https://www.wepay.com/v2"
21
26
 
22
- def initialize
27
+ def initialize(options)
23
28
  @errors = ActiveModel::Errors.new(self)
24
- @options ||= {}
29
+
30
+ options[:oauth_token] ? @oauth_token = options[:oauth_token] : false
31
+ options[:amount] ? @amount = options[:amount] : false
32
+ options[:account_id] ? @account_id = options[:account_id] : false
33
+ options[:redirect_uri] ? @redirect_uri = options[:redirect_uri] : false
34
+ options[:callback_uri] ? @callback_uri = options[:callback_uri] : false
35
+ options[:id] ? @id = options[:id] : false
36
+ options[:name] ? @name = options[:name] :false
25
37
  end
26
38
 
27
39
  # make a call to the WePay API
@@ -53,15 +65,17 @@ module ActiveWepay
53
65
  # returns JSON response as ruby hash
54
66
  @response = JSON.parse(response.body, :symbolize_names => true)
55
67
 
68
+ self
69
+ end
70
+
71
+ def validate_response
56
72
  if @response[:error]
57
73
  @errors.add(@response[:error].to_sym, @response[:error_description])
58
74
  end
59
-
60
- self
61
75
  end
62
-
76
+
63
77
  def method_missing(method_name, *args, &block)
64
- if @response.keys.include? method_name.to_sym
78
+ if @response and @response.keys.include? method_name.to_sym
65
79
  @response[method_name.to_sym]
66
80
  else
67
81
  super
@@ -70,13 +84,15 @@ module ActiveWepay
70
84
  end
71
85
 
72
86
  class Account < Base
73
- def self.create(oauth_token, name)
74
- @account = self.new
75
- @account.options[:oauth_token] = oauth_token
87
+
88
+ validates_presence_of :oauth_token, :name
89
+
90
+ def self.create(options)
91
+ @account = self.new(options)
76
92
 
77
93
  theme = { name: 'Black and White', primary_color: 'FFFFFF', secondary_color: '000000', background_color: 'FFFFFF', button_color: 'FFFFFF' }
78
- @account.call('/account/create', @account.options[:oauth_token], {
79
- :name => name,
94
+ @account.call('/account/create', @account.oauth_token, {
95
+ :name => @name,
80
96
  :description => 'Automatically generated by Vocalem',
81
97
  :theme_object => theme
82
98
  })
@@ -84,43 +100,50 @@ module ActiveWepay
84
100
  end
85
101
 
86
102
  class Checkout < Base
87
- def self.create(options = {})
88
- @checkout = self.new
89
- @checkout.options = options
90
- @checkout.call('/checkout/create', @checkout.options[:oauth_token], {
91
- account_id: @checkout.options[:account_id],
92
- amount: @checkout.options[:amount],
103
+
104
+ validates_presence_of :oauth_token
105
+
106
+ def self.create(options)
107
+
108
+ @checkout = self.new(options)
109
+ @checkout.call('/checkout/create', @checkout.oauth_token, {
110
+ account_id: @checkout.account_id,
111
+ amount: @checkout.amount,
93
112
  short_description: 'Payment',
94
113
  type: 'DONATION',
95
114
  mode: 'iframe',
96
- app_fee: @checkout.options[:amount] * 0.021,
97
- redirect_uri: @checkout.options[:redirect_uri],
98
- callback_uri: @checkout.options[:callback_uri]
115
+ app_fee: @checkout.amount * 0.021,
116
+ redirect_uri: @checkout.redirect_uri,
117
+ callback_uri: @checkout.callback_uri
99
118
  })
100
119
  end
101
120
 
102
- def self.find(id, oauth_token)
103
- @checkout = self.new
104
- @checkout.id = id
105
- @checkout.options[:oauth_token] = oauth_token
121
+ def self.find(options)
122
+ @checkout = self.new(options)
106
123
  @checkout.information
107
124
  end
108
125
 
109
126
  def information
110
- call('/checkout/', @options[:oauth_token], {
127
+ validates_presence_of :id
128
+
129
+ call('/checkout/', @oauth_token, {
111
130
  checkout_id: @id
112
131
  })
113
132
  end
114
133
 
115
134
  def cancel
116
- self.call('/checkout/cancel/', @options[:oauth_token], {
135
+ validates_presence_of :id
136
+
137
+ self.call('/checkout/cancel/', @oauth_token, {
117
138
  checkout_id: @id,
118
139
  cancel_reason: 'Refund'
119
140
  })
120
141
  end
121
142
 
122
143
  def refund
123
- call('/checkout/refund', @options[:oauth_token], {
144
+ validates_presence_of :id
145
+
146
+ call('/checkout/refund', @oauth_token, {
124
147
  checkout_id: @id,
125
148
  refund_reason: 'Refunded'
126
149
  })
@@ -128,51 +151,55 @@ module ActiveWepay
128
151
  end
129
152
 
130
153
  class Preapproval < Base
131
- attr_accessor :options, :id
154
+
155
+ validates_presence_of :oauth_token
132
156
 
133
- def self.create(options = {})
134
- @recurring = self.new
135
- @recurring.options = options
136
- @recurring.call('/preapproval/create', @recurring.options[:oauth_token], {
157
+ def self.create(options)
158
+
159
+ validates_presence_of :account_id, :amount, :redirect_uri, :callback_uri
160
+
161
+ @recurring = self.new(options)
162
+ @recurring.call('/preapproval/create', @recurring.oauth_token, {
137
163
  short_description: 'Vocalem plan change',
138
- account_id: @recurring.options[:account_id],
139
- amount: @recurring.options[:amount],
164
+ account_id: @recurring.account_id,
165
+ amount: @recurring.amount,
140
166
  period: 'monthly',
141
- redirect_uri: @recurring.options[:redirect_uri],
142
- callback_uri: @recurring.options[:callback_uri],
167
+ redirect_uri: @recurring.redirect_uri,
168
+ callback_uri: @recurring.callback_uri,
143
169
  auto_recur: true,
144
170
  mode: 'iframe'
145
- })
171
+ })
146
172
  end
147
173
 
148
- def self.find(id, oauth_token)
149
- @recurring = self.new
150
- @recurring.options[:oauth_token] = oauth_token
151
- @recurring.id = id
174
+ def self.find(options)
175
+ validates_presence_of :id
176
+
177
+ @recurring = self.new(options)
152
178
 
153
- @recurring.call('/preapproval/', @recurring.options[:oauth_token], {
179
+ @recurring.call('/preapproval/', @recurring.oauth_token, {
154
180
  preapproval_id: id
155
- })
181
+ })
156
182
  end
157
183
 
158
184
  def cancel
159
-
160
- call('/preapproval/cancel', @options[:oauth_token], {
185
+ validates_presence_of :id
186
+
187
+ call('/preapproval/cancel', @oauth_token, {
161
188
  preapproval_id: @id
162
189
  })
163
190
  end
164
191
  end
165
192
 
166
193
  class Withdrawal < Base
167
- attr_accessor :options, :id, :oauth_token
168
194
 
169
- def self.create(options = {})
170
- @withdrawal = self.new
171
- @withdrawal.options = options
195
+ validates_presence_of :oauth_token, :account_id, :redirect_uri
196
+
197
+ def self.create(options)
198
+ @withdrawal = self.new(options)
172
199
 
173
- @withdrawal.call('/withdrawal/create', @withdrawal.options[:oauth_token], {
174
- account_id: @withdrawal.options[:account_id],
175
- redirect_uri: @withdrawal.options[:redirect_uri],
200
+ @withdrawal.call('/withdrawal/create', @withdrawal.oauth_token, {
201
+ account_id: @withdrawal.account_id,
202
+ redirect_uri: @withdrawal.redirect_uri,
176
203
  mode: 'iframe'
177
204
  })
178
205
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activewepay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Asher Cohen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-05 00:00:00.000000000 Z
11
+ date: 2013-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel