beyonic 0.0.5 → 0.0.6

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: 2543be42f8f3e7282da056bde9037420fd9a59fb
4
- data.tar.gz: 71b844dc32544b320a665056df07c8137c3951e8
3
+ metadata.gz: ba045d758cffada3c03e193db926d0dea30d631d
4
+ data.tar.gz: 54f8895825b1829a8d59d5e151a33fa63d55a3b1
5
5
  SHA512:
6
- metadata.gz: 50f48a500f701ad5b3a74af28c261255bd849a7dd60632b821b9347738f874fe463f48fe05cf909512e71c8028e16b93971eb42603cc80ef4e1c3fb3b18560be
7
- data.tar.gz: c01c0d84ba6287fc7f191cd64ae7095ad5f4efb042dc90c2346dcf717a30a28c8291668d3b258b033e31b41ec86b32a55e61cc8235f565febafbdc8ec24e16dd
6
+ metadata.gz: 1b771536ffab97f8f710fb4f82ffa1f811adf7166f08c1fafa17bb5b0a5f1d4907cfc947d5363eda554c4f163b937276dc15be1f5f97b2854709cf45c105d91c
7
+ data.tar.gz: 982184ebb5d88973824a916d7477fcbdb1cf9a2e616381b87f125c5123a8da598c58b62c242fa1a7f2d305a477fb2b50318e2989c72a18ace3a3565a1b1f7ba9
data/README.md CHANGED
@@ -22,3 +22,5 @@ And then execute:
22
22
  ## Usage
23
23
 
24
24
  Please visit http://support.beyonic.com/api for usage documentation
25
+
26
+ [![Gem Version](https://badge.fury.io/rb/beyonic.svg)](http://badge.fury.io/rb/beyonic)
@@ -32,3 +32,4 @@ require "beyonic/version"
32
32
  require "beyonic/abstract_api"
33
33
  require "beyonic/payment"
34
34
  require "beyonic/webhook"
35
+ require "beyonic/collection"
@@ -15,8 +15,13 @@ module Beyonic::AbstractApi
15
15
  raise ApiError.new(Oj.load(e.response.body))
16
16
  end
17
17
 
18
- def list
19
- resp = RestClient.get(@endpoint_url, headers)
18
+ def list(payload = {})
19
+ # Turn payload into query parameters
20
+ require "addressable/uri"
21
+ uri = Addressable::URI.new
22
+ uri.query_values = payload
23
+
24
+ resp = RestClient.get(@endpoint_url + '?' + uri.query, headers)
20
25
  Oj.load(resp).map { |obj_attrs| self.new(obj_attrs)}
21
26
  end
22
27
 
@@ -0,0 +1,5 @@
1
+ require 'ostruct'
2
+ class Beyonic::Collection < OpenStruct
3
+ include Beyonic::AbstractApi
4
+ set_endpoint_resource "collections"
5
+ end
@@ -1,6 +1,5 @@
1
1
  require 'ostruct'
2
2
  class Beyonic::Payment < OpenStruct
3
-
4
3
  include Beyonic::AbstractApi
5
4
  set_endpoint_resource "payments"
6
5
  end
@@ -1,3 +1,3 @@
1
1
  module Beyonic
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beyonic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg German
@@ -9,118 +9,132 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-03 00:00:00.000000000 Z
12
+ date: 2015-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: oj
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '2.11'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '2.11'
42
+ - !ruby/object:Gem::Dependency
43
+ name: addressable
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
33
47
  - !ruby/object:Gem::Version
34
48
  version: '0'
35
49
  type: :runtime
36
50
  prerelease: false
37
51
  version_requirements: !ruby/object:Gem::Requirement
38
52
  requirements:
39
- - - '>='
53
+ - - ">="
40
54
  - !ruby/object:Gem::Version
41
55
  version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: bundler
44
58
  requirement: !ruby/object:Gem::Requirement
45
59
  requirements:
46
- - - ~>
60
+ - - "~>"
47
61
  - !ruby/object:Gem::Version
48
62
  version: '1.7'
49
63
  type: :development
50
64
  prerelease: false
51
65
  version_requirements: !ruby/object:Gem::Requirement
52
66
  requirements:
53
- - - ~>
67
+ - - "~>"
54
68
  - !ruby/object:Gem::Version
55
69
  version: '1.7'
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: rake
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
- - - ~>
74
+ - - "~>"
61
75
  - !ruby/object:Gem::Version
62
76
  version: '10.0'
63
77
  type: :development
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
- - - ~>
81
+ - - "~>"
68
82
  - !ruby/object:Gem::Version
69
83
  version: '10.0'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: rspec
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
- - - '>='
88
+ - - ">="
75
89
  - !ruby/object:Gem::Version
76
90
  version: '0'
77
91
  type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
- - - '>='
95
+ - - ">="
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: rspec-collection_matchers
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
- - - '>='
102
+ - - ">="
89
103
  - !ruby/object:Gem::Version
90
104
  version: '0'
91
105
  type: :development
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
- - - '>='
109
+ - - ">="
96
110
  - !ruby/object:Gem::Version
97
111
  version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: webmock
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
- - - '>='
116
+ - - ">="
103
117
  - !ruby/object:Gem::Version
104
118
  version: '0'
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
- - - '>='
123
+ - - ">="
110
124
  - !ruby/object:Gem::Version
111
125
  version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: simplecov
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
- - - '>='
130
+ - - ">="
117
131
  - !ruby/object:Gem::Version
118
132
  version: '0'
119
133
  type: :development
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
- - - '>='
137
+ - - ">="
124
138
  - !ruby/object:Gem::Version
125
139
  version: '0'
126
140
  description: 'Beyonic.com makes enterprise payments to mobile easy. Details: http://beyonic.com'
@@ -131,37 +145,13 @@ executables: []
131
145
  extensions: []
132
146
  extra_rdoc_files: []
133
147
  files:
134
- - .gitignore
135
- - .rspec
136
- - Gemfile
137
- - LICENSE.txt
138
148
  - README.md
139
- - Rakefile
140
- - beyonic.gemspec
141
149
  - lib/beyonic.rb
142
150
  - lib/beyonic/abstract_api.rb
151
+ - lib/beyonic/collection.rb
143
152
  - lib/beyonic/payment.rb
144
153
  - lib/beyonic/version.rb
145
154
  - lib/beyonic/webhook.rb
146
- - spec/beyonic/payment_spec.rb
147
- - spec/beyonic/webhook_spec.rb
148
- - spec/examples/invalid_token_error.json
149
- - spec/examples/no_permissions_error.json
150
- - spec/examples/payments/create_invalid_response.json
151
- - spec/examples/payments/create_response.json
152
- - spec/examples/payments/get_response.json
153
- - spec/examples/payments/list_response.json
154
- - spec/examples/webhooks/create_invalid_response.json
155
- - spec/examples/webhooks/create_response.json
156
- - spec/examples/webhooks/get_response.json
157
- - spec/examples/webhooks/list_response.json
158
- - spec/examples/webhooks/payments/create_invalid_response.json
159
- - spec/examples/webhooks/payments/create_response.json
160
- - spec/examples/webhooks/payments/get_response.json
161
- - spec/examples/webhooks/payments/list_response.json
162
- - spec/examples/webhooks/update_invalid_response.json
163
- - spec/examples/webhooks/update_response.json
164
- - spec/spec_helper.rb
165
155
  homepage: http://support.beyonic.com/api/
166
156
  licenses:
167
157
  - MIT
@@ -172,37 +162,18 @@ require_paths:
172
162
  - lib
173
163
  required_ruby_version: !ruby/object:Gem::Requirement
174
164
  requirements:
175
- - - '>='
165
+ - - ">="
176
166
  - !ruby/object:Gem::Version
177
167
  version: '0'
178
168
  required_rubygems_version: !ruby/object:Gem::Requirement
179
169
  requirements:
180
- - - '>='
170
+ - - ">="
181
171
  - !ruby/object:Gem::Version
182
172
  version: '0'
183
173
  requirements: []
184
174
  rubyforge_project:
185
- rubygems_version: 2.0.14
175
+ rubygems_version: 2.4.3
186
176
  signing_key:
187
177
  specification_version: 4
188
178
  summary: Ruby library for the beyonic.com api
189
- test_files:
190
- - spec/beyonic/payment_spec.rb
191
- - spec/beyonic/webhook_spec.rb
192
- - spec/examples/invalid_token_error.json
193
- - spec/examples/no_permissions_error.json
194
- - spec/examples/payments/create_invalid_response.json
195
- - spec/examples/payments/create_response.json
196
- - spec/examples/payments/get_response.json
197
- - spec/examples/payments/list_response.json
198
- - spec/examples/webhooks/create_invalid_response.json
199
- - spec/examples/webhooks/create_response.json
200
- - spec/examples/webhooks/get_response.json
201
- - spec/examples/webhooks/list_response.json
202
- - spec/examples/webhooks/payments/create_invalid_response.json
203
- - spec/examples/webhooks/payments/create_response.json
204
- - spec/examples/webhooks/payments/get_response.json
205
- - spec/examples/webhooks/payments/list_response.json
206
- - spec/examples/webhooks/update_invalid_response.json
207
- - spec/examples/webhooks/update_response.json
208
- - spec/spec_helper.rb
179
+ test_files: []
data/.gitignore DELETED
@@ -1,14 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in beyonic.gemspec
4
- gemspec
@@ -1,22 +0,0 @@
1
- Copyright (c) 2014 Oleg German
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
@@ -1,30 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'beyonic/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "beyonic"
8
- spec.version = Beyonic::VERSION
9
- spec.authors = ['Oleg German', 'Luke Kyohere']
10
- spec.email = ['oleg.german@gmail.com', 'luke@beyonic.com']
11
- spec.summary = %q{Ruby library for the beyonic.com api}
12
- spec.description = %q{Beyonic.com makes enterprise payments to mobile easy. Details: http://beyonic.com}
13
- spec.homepage = "http://support.beyonic.com/api/"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_runtime_dependency "rest-client"
22
- spec.add_runtime_dependency "oj"
23
-
24
- spec.add_development_dependency "bundler", "~> 1.7"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec"
27
- spec.add_development_dependency "rspec-collection_matchers"
28
- spec.add_development_dependency "webmock"
29
- spec.add_development_dependency "simplecov"
30
- end
@@ -1,223 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Beyonic::Payment do
4
- describe ".crate" do
5
- let(:payload) {
6
- {
7
- phonenumber: "+256773712831",
8
- amount: "100.2",
9
- currency: "UGX",
10
- description: "Per diem payment",
11
- payment_type: "money",
12
- callback_url: "https://my.website/payments/callback",
13
- metadata: "{'id': '1234', 'name': 'Lucy'}"
14
- }
15
- }
16
-
17
- subject {
18
- Beyonic.api_key = "my-authorization-token"
19
- Beyonic::Payment.create(payload)
20
- }
21
-
22
- context 'Success response' do
23
- before {
24
- stub_request(:post, "https://staging.beyonic.com/api/payments").to_return(
25
- body: File.new('spec/examples/payments/create_response.json'))
26
- }
27
-
28
- it {
29
- is_expected.to have_requested(:post, "https://staging.beyonic.com/api/payments").with(
30
- headers: {"Authorization" => "Token my-authorization-token", "Beyonic-Version" => "v1"}
31
- )
32
- }
33
- it { is_expected.to be_an(Beyonic::Payment) }
34
-
35
- it { is_expected.to have_attributes(id: 3607, state: 'new') }
36
- end
37
-
38
- context 'Bad request' do
39
- before {
40
- stub_request(:post, "https://staging.beyonic.com/api/payments").to_return(
41
- body: File.new('spec/examples/payments/create_invalid_response.json'),
42
- status: 400
43
- )
44
- }
45
-
46
- subject {
47
- -> {
48
- Beyonic.api_key = "my-authorization-token"
49
- Beyonic::Payment.create(payload)
50
- }
51
- }
52
- it {
53
- is_expected.to raise_error(Beyonic::AbstractApi::ApiError)
54
- }
55
- end
56
-
57
- context 'Unauthorized' do
58
- before {
59
- stub_request(:post, "https://staging.beyonic.com/api/payments").to_return(
60
- body: File.new('spec/examples/invalid_token_error.json'),
61
- status: 401
62
- )
63
- }
64
-
65
- subject {
66
- -> {
67
- Beyonic.api_key = "my-authorization-token"
68
- Beyonic::Payment.create(payload)
69
- }
70
- }
71
- it {
72
- is_expected.to raise_error
73
- }
74
- end
75
-
76
- end
77
-
78
- describe ".list" do
79
- subject {
80
- Beyonic.api_key = "my-authorization-token"
81
- Beyonic::Payment.list
82
- }
83
-
84
- context 'Success response' do
85
- before {
86
- stub_request(:get, "https://staging.beyonic.com/api/payments").to_return(
87
- body: File.new('spec/examples/payments/list_response.json'))
88
- }
89
-
90
- it {
91
- is_expected.to have_requested(:get, "https://staging.beyonic.com/api/payments").with(
92
- headers: {"Authorization" => "Token my-authorization-token", "Beyonic-Version" => "v1"}
93
- )
94
- }
95
- it { is_expected.to be_an(Array) }
96
-
97
- it { is_expected.to all(be_an(Beyonic::Payment)) }
98
- end
99
-
100
- context 'Unauthorized' do
101
- before {
102
- stub_request(:get, "https://staging.beyonic.com/api/payments").to_return(
103
- body: File.new('spec/examples/invalid_token_error.json'),
104
- status: 401
105
- )
106
- }
107
-
108
- subject {
109
- -> {
110
- Beyonic.api_key = "my-authorization-token"
111
- Beyonic::Payment.list
112
- }
113
- }
114
- it {
115
- is_expected.to raise_error
116
- }
117
- end
118
- end
119
-
120
- describe ".get" do
121
- subject {
122
- Beyonic.api_key = "my-authorization-token"
123
- Beyonic::Payment.get(23)
124
- }
125
-
126
- context 'Success response' do
127
- before {
128
- stub_request(:get, "https://staging.beyonic.com/api/payments/23").to_return(
129
- body: File.new('spec/examples/payments/get_response.json'))
130
- }
131
-
132
- it {
133
- is_expected.to have_requested(:get, "https://staging.beyonic.com/api/payments/23").with(
134
- headers: {"Authorization" => "Token my-authorization-token", "Beyonic-Version" => "v1"}
135
- )
136
- }
137
- it { is_expected.to be_an(Beyonic::Payment) }
138
-
139
- it { is_expected.to have_attributes(id: 23, state: 'processed_with_errors') }
140
- end
141
-
142
- context 'Unauthorized' do
143
- before {
144
- stub_request(:get, "https://staging.beyonic.com/api/payments/23").to_return(
145
- body: File.new('spec/examples/invalid_token_error.json'),
146
- status: 401
147
- )
148
- }
149
-
150
- subject {
151
- -> {
152
- Beyonic.api_key = "my-authorization-token"
153
- Beyonic::Payment.get(23)
154
- }
155
- }
156
- it {
157
- is_expected.to raise_error
158
- }
159
- end
160
-
161
- context 'Unauthorized' do
162
- before {
163
- stub_request(:get, "https://staging.beyonic.com/api/payments/666").to_return(
164
- body: File.new('spec/examples/no_permissions_error.json'),
165
- status: 403
166
- )
167
- }
168
-
169
- subject {
170
- -> {
171
- Beyonic.api_key = "my-authorization-token"
172
- Beyonic::Payment.get(666)
173
- }
174
- }
175
- it {
176
- is_expected.to raise_error
177
- }
178
- end
179
- end
180
-
181
- describe "#save" do
182
- context 'new object' do
183
- subject { Beyonic::Payment }
184
- let(:payload) {
185
- {
186
- phonenumber: "+256773712831",
187
- amount: "100.2",
188
- currency: "UGX",
189
- description: "Per diem payment",
190
- payment_type: "money",
191
- callback_url: "https://my.website/payments/callback",
192
- metadata: "{'id': '1234', 'name': 'Lucy'}"
193
- }
194
- }
195
-
196
- before {
197
- allow(subject).to receive(:create)
198
- subject.new(payload).save
199
- }
200
-
201
- it {
202
- is_expected.to have_received(:create).with(payload)
203
- }
204
- end
205
-
206
- context 'loaded object' do
207
- subject { Beyonic::Payment }
208
- before {
209
- stub_request(:get, "https://staging.beyonic.com/api/payments/23").to_return(
210
- body: File.new('spec/examples/payments/get_response.json'))
211
- allow(subject).to receive(:update)
212
-
213
- temp = subject.get(23)
214
- temp.description = "foo"
215
- temp.save
216
- }
217
-
218
- it {
219
- is_expected.to have_received(:update).with(23, hash_including(description: "foo"))
220
- }
221
- end
222
- end
223
- end