pin_up 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f9ffcac24398303acbeb6416a70c9200c8cdff9e
4
- data.tar.gz: 062f3f0f744ecb48df0ded390e74ff8dd4619793
3
+ metadata.gz: 0e0ca480c8f39469c1101c64b1454a0eca7ed396
4
+ data.tar.gz: 8363e988eacbbc751d6b6fe7a76e9962c3e2b74a
5
5
  SHA512:
6
- metadata.gz: 8f0254e79d0470beb7649502833127a09c98e25d8bf8d3510a3ce94722661438e063e157ee47f1ae03ad14f4ee78928c3a09566e7f85af1a615d7243cd75a970
7
- data.tar.gz: eb7cd2b3b08073904710a62c5a2e51ef5fb24a8db99a1be36746bb6bed7ee95d52a9381b6cdb2e968b8020ed640aff0e1dc495ac85520f34775d12e3709d42e9
6
+ metadata.gz: 68445fd60ad8acbdba20b948dc5d5ed2a8f4dd94f614665c166f33170847385f495de6be0e618c12f89437f49e72ffe429b029e5f81b6c3a82711226b941b97c
7
+ data.tar.gz: c272c8d0eb4cdce4ab0596b5b25e650613e468bc19d5b19608e0310b0944df6de31b71e0c84e937eb00db635b13ca0416a7bf8d7bdafc4947f138a269eae234b
data/.travis.yml CHANGED
@@ -1,8 +1,5 @@
1
1
  ---
2
- env:
3
- global:
4
- secure: |-
5
- Z7eqtE7oQVsmz2iw45MULCsk9Ff028nsPHJjX04GskTCeqhn2AgeFbNEjB7d
6
- 1mlrJDZyRggBW2ENK6Kti7p196hB1WfH52SYl9dZSLABWDW9oIKo46HjymNP
7
- J9RERcoevctKkRGUCvyx0kvX1uN4iI56OJPXFAsYA+w0zAm/1/c=
8
2
  script: bundle exec rspec spec
3
+ language: ruby
4
+ rvm:
5
+ - 2.1.5
data/Gemfile CHANGED
@@ -5,12 +5,11 @@ gem "httparty", ">= 0.11.0"
5
5
  group :development do
6
6
  gem "shoulda", "~> 3.5"
7
7
  gem "rdoc", "~> 3.12"
8
- gem "rspec", "~> 2.13"
8
+ gem "rspec" #, "~> 2.13"
9
9
  gem "jeweler", "~> 1.8.4"
10
10
  gem "simplecov", "~> 0.7.1"
11
11
  gem "webmock", "~> 1.12.3"
12
12
  gem "vcr", "~> 2.5.0"
13
- gem "guard-rspec", "~> 3.0.2"
13
+ gem "guard-rspec" #, "~> 3.0.2"
14
14
  gem "terminal-notifier-guard", "~> 1.5.3"
15
- gem "capybara", "~> 2.1.0"
16
15
  end
data/Gemfile.lock CHANGED
@@ -1,35 +1,25 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activesupport (4.0.3)
5
- i18n (~> 0.6, >= 0.6.4)
6
- minitest (~> 4.2)
7
- multi_json (~> 1.3)
8
- thread_safe (~> 0.1)
9
- tzinfo (~> 0.3.37)
10
- addressable (2.3.5)
11
- atomic (1.1.15)
4
+ activesupport (4.2.1)
5
+ i18n (~> 0.7)
6
+ json (~> 1.7, >= 1.7.7)
7
+ minitest (~> 5.1)
8
+ thread_safe (~> 0.3, >= 0.3.4)
9
+ tzinfo (~> 1.1)
10
+ addressable (2.3.8)
12
11
  builder (3.2.2)
13
- capybara (2.1.0)
14
- mime-types (>= 1.16)
15
- nokogiri (>= 1.3.3)
16
- rack (>= 1.0.0)
17
- rack-test (>= 0.5.4)
18
- xpath (~> 2.0)
19
- celluloid (0.15.2)
20
- timers (~> 1.1.0)
21
- celluloid-io (0.15.0)
22
- celluloid (>= 0.15.0)
23
- nio4r (>= 0.5.0)
12
+ celluloid (0.16.0)
13
+ timers (~> 4.0.0)
24
14
  coderay (1.1.0)
25
15
  crack (0.4.2)
26
16
  safe_yaml (~> 1.0.0)
27
17
  diff-lcs (1.2.5)
28
18
  faraday (0.8.9)
29
19
  multipart-post (~> 1.2.0)
30
- ffi (1.9.3)
31
- formatador (0.2.4)
32
- git (1.2.6)
20
+ ffi (1.9.8)
21
+ formatador (0.2.5)
22
+ git (1.2.9.1)
33
23
  github_api (0.10.1)
34
24
  addressable
35
25
  faraday (~> 0.8.1)
@@ -37,21 +27,27 @@ GEM
37
27
  multi_json (~> 1.4)
38
28
  nokogiri (~> 1.5.2)
39
29
  oauth2
40
- guard (2.5.1)
30
+ guard (2.12.5)
41
31
  formatador (>= 0.2.4)
42
- listen (~> 2.6)
32
+ listen (~> 2.7)
43
33
  lumberjack (~> 1.0)
34
+ nenv (~> 0.1)
35
+ notiffany (~> 0.0)
44
36
  pry (>= 0.9.12)
37
+ shellany (~> 0.0)
45
38
  thor (>= 0.18.1)
46
- guard-rspec (3.0.3)
47
- guard (>= 1.8)
48
- rspec (~> 2.13)
49
- hashie (2.0.5)
50
- highline (1.6.21)
51
- httparty (0.13.0)
39
+ guard-compat (1.2.1)
40
+ guard-rspec (4.5.2)
41
+ guard (~> 2.1)
42
+ guard-compat (~> 1.1)
43
+ rspec (>= 2.99.0, < 4.0)
44
+ hashie (3.4.2)
45
+ highline (1.7.2)
46
+ hitimes (1.2.2)
47
+ httparty (0.13.5)
52
48
  json (~> 1.8)
53
49
  multi_xml (>= 0.5.2)
54
- i18n (0.6.9)
50
+ i18n (0.7.0)
55
51
  jeweler (1.8.8)
56
52
  builder
57
53
  bundler (~> 1.0)
@@ -61,87 +57,92 @@ GEM
61
57
  nokogiri (= 1.5.10)
62
58
  rake
63
59
  rdoc
64
- json (1.8.1)
65
- jwt (0.1.11)
66
- multi_json (>= 1.5)
67
- listen (2.7.0)
68
- celluloid (>= 0.15.2)
69
- celluloid-io (>= 0.15.0)
60
+ json (1.8.3)
61
+ jwt (1.5.0)
62
+ listen (2.10.0)
63
+ celluloid (~> 0.16.0)
70
64
  rb-fsevent (>= 0.9.3)
71
65
  rb-inotify (>= 0.9)
72
- lumberjack (1.0.4)
66
+ lumberjack (1.0.9)
73
67
  method_source (0.8.2)
74
- mime-types (2.1)
75
- minitest (4.7.5)
76
- multi_json (1.9.0)
68
+ minitest (5.7.0)
69
+ multi_json (1.11.0)
77
70
  multi_xml (0.5.5)
78
71
  multipart-post (1.2.0)
79
- nio4r (1.0.0)
72
+ nenv (0.2.0)
80
73
  nokogiri (1.5.10)
81
- oauth2 (0.9.3)
74
+ notiffany (0.0.6)
75
+ nenv (~> 0.1)
76
+ shellany (~> 0.0)
77
+ oauth2 (1.0.0)
82
78
  faraday (>= 0.8, < 0.10)
83
- jwt (~> 0.1.8)
79
+ jwt (~> 1.0)
84
80
  multi_json (~> 1.3)
85
81
  multi_xml (~> 0.5)
86
82
  rack (~> 1.2)
87
- pry (0.9.12.6)
88
- coderay (~> 1.0)
89
- method_source (~> 0.8)
83
+ pry (0.10.1)
84
+ coderay (~> 1.1.0)
85
+ method_source (~> 0.8.1)
90
86
  slop (~> 3.4)
91
- rack (1.5.2)
92
- rack-test (0.6.2)
93
- rack (>= 1.0)
94
- rake (10.1.1)
95
- rb-fsevent (0.9.4)
96
- rb-inotify (0.9.3)
87
+ rack (1.6.1)
88
+ rake (10.4.2)
89
+ rb-fsevent (0.9.5)
90
+ rb-inotify (0.9.5)
97
91
  ffi (>= 0.5.0)
98
92
  rdoc (3.12.2)
99
93
  json (~> 1.4)
100
- rspec (2.14.1)
101
- rspec-core (~> 2.14.0)
102
- rspec-expectations (~> 2.14.0)
103
- rspec-mocks (~> 2.14.0)
104
- rspec-core (2.14.8)
105
- rspec-expectations (2.14.5)
106
- diff-lcs (>= 1.1.3, < 2.0)
107
- rspec-mocks (2.14.6)
108
- safe_yaml (1.0.1)
94
+ rspec (3.2.0)
95
+ rspec-core (~> 3.2.0)
96
+ rspec-expectations (~> 3.2.0)
97
+ rspec-mocks (~> 3.2.0)
98
+ rspec-core (3.2.3)
99
+ rspec-support (~> 3.2.0)
100
+ rspec-expectations (3.2.1)
101
+ diff-lcs (>= 1.2.0, < 2.0)
102
+ rspec-support (~> 3.2.0)
103
+ rspec-mocks (3.2.1)
104
+ diff-lcs (>= 1.2.0, < 2.0)
105
+ rspec-support (~> 3.2.0)
106
+ rspec-support (3.2.2)
107
+ safe_yaml (1.0.4)
108
+ shellany (0.0.1)
109
109
  shoulda (3.5.0)
110
110
  shoulda-context (~> 1.0, >= 1.0.1)
111
111
  shoulda-matchers (>= 1.4.1, < 3.0)
112
- shoulda-context (1.1.6)
113
- shoulda-matchers (2.5.0)
112
+ shoulda-context (1.2.1)
113
+ shoulda-matchers (2.8.0)
114
114
  activesupport (>= 3.0.0)
115
115
  simplecov (0.7.1)
116
116
  multi_json (~> 1.0)
117
117
  simplecov-html (~> 0.7.1)
118
118
  simplecov-html (0.7.1)
119
- slop (3.4.7)
119
+ slop (3.6.0)
120
120
  terminal-notifier-guard (1.5.3)
121
- thor (0.18.1)
122
- thread_safe (0.2.0)
123
- atomic (>= 1.1.7, < 2)
124
- timers (1.1.0)
125
- tzinfo (0.3.39)
121
+ thor (0.19.1)
122
+ thread_safe (0.3.5)
123
+ timers (4.0.1)
124
+ hitimes
125
+ tzinfo (1.2.2)
126
+ thread_safe (~> 0.1)
126
127
  vcr (2.5.0)
127
128
  webmock (1.12.3)
128
129
  addressable (>= 2.2.7)
129
130
  crack (>= 0.3.2)
130
- xpath (2.0.0)
131
- nokogiri (~> 1.3)
132
131
 
133
132
  PLATFORMS
134
133
  ruby
135
134
 
136
135
  DEPENDENCIES
137
- capybara (~> 2.1.0)
138
- guard-rspec (~> 3.0.2)
136
+ guard-rspec
139
137
  httparty (>= 0.11.0)
140
138
  jeweler (~> 1.8.4)
141
139
  rdoc (~> 3.12)
142
- rspec (~> 2.13)
140
+ rspec
143
141
  shoulda (~> 3.5)
144
142
  simplecov (~> 0.7.1)
145
143
  terminal-notifier-guard (~> 1.5.3)
146
144
  vcr (~> 2.5.0)
147
145
  webmock (~> 1.12.3)
146
+
147
+ BUNDLED WITH
148
+ 1.10.3
data/Guardfile CHANGED
@@ -1,45 +1,53 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
- guard :rspec do
4
- watch(%r{^spec/.+_spec\.rb$})
5
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
6
- watch('spec/spec_helper.rb') { "spec" }
7
-
8
- # Rails example
9
- watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
10
- watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
11
- watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
12
- watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
13
- watch('config/routes.rb') { "spec/routing" }
14
- watch('app/controllers/application_controller.rb') { "spec/controllers" }
1
+ # Note: The cmd option is now required due to the increasing number of ways
2
+ # rspec may be run, below are examples of the most common uses.
3
+ # * bundler: 'bundle exec rspec'
4
+ # * bundler binstubs: 'bin/rspec'
5
+ # * spring: 'bin/rspec' (This will use spring if running and you have
6
+ # installed the spring binstubs per the docs)
7
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
8
+ # * 'just' rspec: 'rspec'
9
+
10
+ guard :rspec, cmd: "bundle exec rspec" do
11
+ require "guard/rspec/dsl"
12
+ dsl = Guard::RSpec::Dsl.new(self)
13
+
14
+ # Feel free to open issues for suggestions and improvements
15
+
16
+ # RSpec files
17
+ rspec = dsl.rspec
18
+ watch(rspec.spec_helper) { rspec.spec_dir }
19
+ watch(rspec.spec_support) { rspec.spec_dir }
20
+ watch(rspec.spec_files)
21
+
22
+ # Ruby files
23
+ ruby = dsl.ruby
24
+ dsl.watch_spec_files_for(ruby.lib_files)
25
+
26
+ # Rails files
27
+ rails = dsl.rails(view_extensions: %w(erb haml slim))
28
+ dsl.watch_spec_files_for(rails.app_files)
29
+ dsl.watch_spec_files_for(rails.views)
30
+
31
+ watch(rails.controllers) do |m|
32
+ [
33
+ rspec.spec.("routing/#{m[1]}_routing"),
34
+ rspec.spec.("controllers/#{m[1]}_controller"),
35
+ rspec.spec.("acceptance/#{m[1]}")
36
+ ]
37
+ end
38
+
39
+ # Rails config changes
40
+ watch(rails.spec_helper) { rspec.spec_dir }
41
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
42
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
15
43
 
16
44
  # Capybara features specs
17
- watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
45
+ watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") }
46
+ watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") }
18
47
 
19
48
  # Turnip features and steps
20
49
  watch(%r{^spec/acceptance/(.+)\.feature$})
21
- watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
50
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
51
+ Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
52
+ end
22
53
  end
23
-
24
-
25
- guard :rspec do
26
- watch(%r{^spec/.+_spec\.rb$})
27
- watch(%r{^lib/pin_up/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
28
- watch('spec/spec_helper.rb') { "spec" }
29
-
30
- # Rails example
31
- watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
32
- watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
33
- watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
34
- watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
35
- watch('config/routes.rb') { "spec/routing" }
36
- watch('app/controllers/application_controller.rb') { "spec/controllers" }
37
-
38
- # Capybara features specs
39
- watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
40
-
41
- # Turnip features and steps
42
- watch(%r{^spec/acceptance/(.+)\.feature$})
43
- watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
44
- end
45
-
data/README.md CHANGED
@@ -123,6 +123,30 @@ If passing a hash of details, it must be the full list of details of the credit
123
123
  card = Pin::Card.create(card_details)
124
124
  Pin::Customer.create('email@example.com',card['token'])
125
125
 
126
+ ##### List cards for a customer
127
+
128
+ token = 'customer_token'
129
+ Pin::Customer.cards(token)
130
+
131
+ ##### Create a card for a customer (this does not replace their primary card)
132
+
133
+ customer_token = 'customer_token'
134
+ card = { number: '5520000000000000', expiry_month: '12', expiry_year: '2018', cvc: '123', name: 'Roland TestRobot', address_line1: '123 Fake Road', address_line2: '', address_city: 'Melbourne', address_postcode: '1223', address_state: 'Vic', address_country: 'AU' }
135
+ Pin::Customer.create_card(customer_token, card)
136
+
137
+ You can also use a card token rather than a card hash
138
+
139
+ customer_token = 'customer_token'
140
+ card_token = 'card_token'
141
+ Pin::Customer.create_card(customer_token, card_token)
142
+
143
+ ##### Delete a card given a customer and a token
144
+ This method will raise an exception if attempting to remove the user's primary card
145
+
146
+ customer_token = 'customer_token'
147
+ card_token = 'card_token'
148
+ Pin::Customer.delete_card(customer_token, card_token)
149
+
126
150
  ## Refunds
127
151
 
128
152
  ##### Find A Refund
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -0,0 +1,15 @@
1
+ module Pin
2
+ ##
3
+ # This class models Pin's Balance API
4
+ class Balance < Base
5
+ ##
6
+ # Returns the current balance of your Pin Payments account.
7
+ # Transfers can only be made using the funds in the available balance.
8
+ # The pending amount will become available after the 7 day settlement schedule on your charges.
9
+ #
10
+ # https://pin.net.au/docs/api/balance
11
+ def self.get
12
+ build_response(make_request(:get, { url: 'balance' }))
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module Pin
2
+ ##
3
+ # This class models Pin's Bank Accounts API
4
+ class BankAccounts < Base
5
+ ##
6
+ # Creates a bank account token and returns its details.
7
+ #
8
+ # The bank account API allows you to securely store bank account details in exchange for a bank account token.
9
+ # This token can then be used to create a recipient using the recipients API.
10
+ #
11
+ # A bank account token can only be used once to create a recipient.
12
+ # The token automatically expires after 1 month if it hasn’t been used.
13
+ #
14
+ # https://pin.net.au/docs/api/bank-accounts
15
+ def self.create(options)
16
+ build_response(make_request(:post, { url: 'bank_accounts', options: options }))
17
+ end
18
+ end
19
+ end
data/lib/pin_up/base.rb CHANGED
@@ -47,6 +47,8 @@ module Pin
47
47
  def self.build_response(response)
48
48
  if response.code >= 400
49
49
  Pin::PinError.handle_error(response.code, response.parsed_response)
50
+ elsif response.code == 204
51
+ response
50
52
  else
51
53
  response.parsed_response['response']
52
54
  end
data/lib/pin_up/client.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  module Pin
2
2
  class Client
3
3
  def initialize(method, args, base_url, auth)
4
- @method = method
5
- @args = args
6
- @base_url = base_url
7
- @auth = auth
4
+ @method = method
5
+ @args = args
6
+ @base_url = base_url
7
+ @auth = auth
8
8
  end
9
9
 
10
10
  ##
@@ -19,4 +19,4 @@ module Pin
19
19
  end
20
20
  end
21
21
  end
22
- end
22
+ end
@@ -65,5 +65,44 @@ module Pin
65
65
  make_request(:get, {url: "customers/#{token}/charges?page=#{page}" }), pagination
66
66
  )
67
67
  end
68
+
69
+ ##
70
+ # Get a list of cards for a customer
71
+ # args: token (String), page (Fixnum), pagination (Boolean)
72
+ # returns: a collection of cards objects
73
+ #
74
+ # if pagination is passed, access the response hash with [:response]
75
+ # and the pagination hash with [:pagination]
76
+ #
77
+ # https://pin.net.au/docs/api/customers#get-customers-cards
78
+ def self.cards(token, page = nil, pagination = false)
79
+ build_collection_response(
80
+ make_request(:get, {url: "customers/#{token}/cards?page=#{page}" }), pagination
81
+ )
82
+ end
83
+
84
+ ##
85
+ # Create a card for customer given a card OR a card_token
86
+ # args: customer_token (String), card (Hash) or (String) see docs.
87
+ # returns: a card object
88
+ # https://pin.net.au/docs/api/customers#post-customers-cards
89
+ def self.create_card(token, card)
90
+ options = if card.respond_to?(:to_hash)
91
+ card
92
+ else
93
+ { card_token: card }
94
+ end
95
+
96
+ build_response(make_request(:post, {url: "customers/#{token}/cards", options: options} ))
97
+ end
98
+
99
+ ##
100
+ # Deletes a card for customer given a card_token
101
+ # args: customer_token (String), card_token (String)
102
+ # returns: a card object
103
+ # https://pin.net.au/docs/api/customers#delete-customers-card
104
+ def self.delete_card(token, card_token)
105
+ build_response(make_request(:delete, {url: "customers/#{token}/cards/#{card_token}"} ))
106
+ end
68
107
  end
69
108
  end
@@ -15,7 +15,12 @@ module Pin
15
15
  def self.handle_error(http_status, response)
16
16
  case http_status
17
17
  when 400
18
- fail(Pin::ChargeError, "#{response['error']}: #{response['error_description']}. Charge token: #{response['charge_token']}")
18
+ case response['error']
19
+ when 'cannot_delete_primary_card'
20
+ fail(Pin::InvalidResource, response['error_description'])
21
+ else
22
+ fail(Pin::ChargeError, "#{response['error']}: #{response['error_description']}. Charge token: #{response['charge_token']}")
23
+ end
19
24
  when 402
20
25
  fail(Pin::InsufficientPinBalance, "#{response['error_description']}")
21
26
  when 404
@@ -0,0 +1,50 @@
1
+ module Pin
2
+ ##
3
+ # This class models Pin's Recipient API
4
+ class Recipient < Base
5
+ ##
6
+ # Creates a new recipient and returns its details.
7
+ # https://pin.net.au/docs/api/recipients#post-recipients
8
+ # args: options (Hash)
9
+ # returns: recipient (Hash)
10
+ def self.create(options)
11
+ build_response(make_request(:post, { url: 'recipients', options: options }))
12
+ end
13
+
14
+ ##
15
+ # Lists all recipients for your account
16
+ # args: page (Fixnum), pagination (Boolean)
17
+ # returns: a collection of recipients
18
+ #
19
+ # if pagination is passed, access the response hash with [:response]
20
+ # and the pagination hash with [:pagination]
21
+ #
22
+ # https://pin.net.au/docs/api/recipients#get-recipients
23
+ def self.all(page = nil, pagination = false)
24
+ build_collection_response(make_request(:get, {url: "recipients?page=#{page}" } ), pagination)
25
+ end
26
+
27
+ ##
28
+ # Find a recipient for your account given a token
29
+ # args: token (String)
30
+ # returns: a recipient
31
+ # https://pin.net.au/docs/api/recipients#get-recipient
32
+ def self.find(token)
33
+ build_response(make_request(:get, {url: "recipients/#{token}" } ))
34
+ end
35
+
36
+ ##
37
+ # Update a recipient for your account given a token
38
+ # and any of: email, name, bank_account (hash)
39
+ # args: token (String), options (Hash)
40
+ # returns: a recipient
41
+ # https://pin.net.au/docs/api/recipients#put-recipient
42
+ def self.update(token, options = {})
43
+ build_response(make_request(:put, { url: "recipients/#{token}", options: options }))
44
+ end
45
+
46
+ def self.transfers(token, pagination = false)
47
+ build_collection_response(make_request(:get, { url: "recipients/#{token}/transfers" } ), pagination)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,43 @@
1
+ module Pin
2
+ ##
3
+ # This class models Pin's Transfers API
4
+ class Transfer < Base
5
+ ##
6
+ # Creates a new transfer and returns its details.
7
+ # https://pin.net.au/docs/api/transfers#post-transfers
8
+ # args: options (Hash)
9
+ def self.create(options)
10
+ build_response(make_request(:post, { url: 'transfers', options: options }))
11
+ end
12
+
13
+ ##
14
+ # Returns a paginated list of all transfers.
15
+ # page: page (Fixnum), pagination (Boolean)
16
+ #
17
+ # if pagination is passed, access the response hash with [:response]
18
+ # and the pagination hash with [:pagination]
19
+ #
20
+ # https://pin.net.au/docs/api/transfers#get-transfers
21
+ def self.all(page = nil, pagination = false)
22
+ build_collection_response(make_request(:get, {url: "transfers?page=#{page}" } ), pagination)
23
+ end
24
+
25
+ ##
26
+ # Returns the details of a transfer.
27
+ # args: token (String)
28
+ # returns: a transfer
29
+ # https://pin.net.au/docs/api/transfers#get-transfer
30
+ def self.find(token)
31
+ build_response(make_request(:get, {url: "transfers/#{token}" } ))
32
+ end
33
+
34
+ ##
35
+ # Returns the line items associated with transfer.
36
+ # args: token (String), page (Fixnum), pagination (Boolean)
37
+ #
38
+ # https://pin.net.au/docs/api/transfers#get-transfer-line-items
39
+ def self.line_items(token, page = nil, pagination = false)
40
+ build_collection_response(make_request(:get, {url: "transfers/#{token}/line_items?page=#{page}" } ), pagination)
41
+ end
42
+ end
43
+ end
data/lib/pin_up.rb CHANGED
@@ -2,11 +2,16 @@ require 'httparty'
2
2
  require 'json'
3
3
 
4
4
  require 'pin_up/base'
5
+
6
+ require 'pin_up/balance'
7
+ require 'pin_up/bank_accounts'
5
8
  require 'pin_up/card'
6
9
  require 'pin_up/charge'
7
10
  require 'pin_up/client'
8
11
  require 'pin_up/customer'
12
+ require 'pin_up/recipient'
9
13
  require 'pin_up/refund'
10
14
  require 'pin_up/retrying_client'
15
+ require 'pin_up/transfer'
11
16
 
12
17
  require 'pin_up/pin_errors'