beyonic 0.0.5 → 0.0.6

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: 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