omise 0.4.0 → 0.5.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 +4 -4
- data/CHANGELOG.md +9 -0
- data/bin/console +9 -0
- data/bin/rake +17 -0
- data/lib/omise/all.rb +3 -0
- data/lib/omise/attributes.rb +12 -3
- data/lib/omise/card_list.rb +1 -6
- data/lib/omise/charge.rb +5 -0
- data/lib/omise/charge_list.rb +10 -0
- data/lib/omise/customer.rb +12 -2
- data/lib/omise/dispute.rb +10 -0
- data/lib/omise/document.rb +15 -0
- data/lib/omise/document_list.rb +15 -0
- data/lib/omise/error.rb +3 -5
- data/lib/omise/link.rb +37 -0
- data/lib/omise/list.rb +53 -2
- data/lib/omise/recipient.rb +5 -0
- data/lib/omise/refund.rb +4 -0
- data/lib/omise/refund_list.rb +0 -5
- data/lib/omise/resource.rb +27 -13
- data/lib/omise/search.rb +9 -0
- data/lib/omise/search_scope.rb +59 -0
- data/lib/omise/testing/resource.rb +1 -1
- data/lib/omise/transfer.rb +4 -0
- data/lib/omise/util.rb +44 -1
- data/lib/omise/version.rb +1 -1
- data/omise.gemspec +2 -1
- data/test/fixtures/api.omise.co/charges-get-limit-20-offset-0.json +59 -0
- data/test/fixtures/api.omise.co/charges-get-limit-20-offset-20.json +59 -0
- data/test/fixtures/api.omise.co/disputes/dspt_test_5089off452g5m5te7xs/documents-get.json +19 -0
- data/test/fixtures/api.omise.co/disputes/dspt_test_5089off452g5m5te7xs/documents-post.json +7 -0
- data/test/fixtures/api.omise.co/disputes/dspt_test_5089off452g5m5te7xs/documents/docu_test_55869onwfm2g3bsw8d8-delete.json +6 -0
- data/test/fixtures/api.omise.co/disputes/dspt_test_5089off452g5m5te7xs/documents/docu_test_55869onwfm2g3bsw8d8-get.json +7 -0
- data/test/fixtures/api.omise.co/links-get.json +94 -0
- data/test/fixtures/api.omise.co/links-post.json +82 -0
- data/test/fixtures/api.omise.co/links/link_test_55pcclmznvrv9lc7r9s-get.json +82 -0
- data/test/fixtures/api.omise.co/search-get-scope-charge.json +62 -0
- data/test/omise/test_attributes.rb +79 -0
- data/test/omise/test_charge.rb +5 -0
- data/test/omise/test_customer.rb +11 -0
- data/test/omise/test_dispute.rb +9 -0
- data/test/omise/test_document.rb +33 -0
- data/test/omise/test_link.rb +36 -0
- data/test/omise/test_list.rb +101 -0
- data/test/omise/test_recipient.rb +5 -0
- data/test/omise/test_resource.rb +2 -1
- data/test/omise/test_search.rb +10 -0
- data/test/omise/test_search_scope.rb +138 -0
- data/test/omise/test_transfer.rb +1 -1
- data/test/omise/test_util.rb +65 -0
- data/test/support.rb +2 -2
- metadata +59 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb0747d2916db26b8867f729d2fc45ec8c0ae298
|
4
|
+
data.tar.gz: 6f32be4761236faaca1495948d8bd4abe33581c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f0cdda6e658f79be9a7056e2f49d5a634cb8cb74664b2e54753bce1d36ff8c6e3120e5c4f69536dac1ed4fb9d0124516e2c8ba838a50a0351beaa16ea1458d6
|
7
|
+
data.tar.gz: 6fbba84db39bfe3efbf8085b82c2c32931d913745b972299e8d4560a86abbab9f02c82cab48e70f4dfbaa878e18274b0c58e88bf1254d1a9069782c6981eeed3
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,15 @@
|
|
2
2
|
|
3
3
|
An [unreleased] version is not available on rubygems and is subject to changes and must not be considered final. Elements of unreleased list may be edited or removed at any time.
|
4
4
|
|
5
|
+
## [0.5.0] 2016-11-26
|
6
|
+
|
7
|
+
- [Added] Add search object and filtering api
|
8
|
+
- [Added] Add support for document uploading
|
9
|
+
- [Added] Add link API
|
10
|
+
- [Added] Add tests for attributes
|
11
|
+
- [Added] Add charge method on customer
|
12
|
+
- [Added] Add pagination on list
|
13
|
+
|
5
14
|
## [0.4.0] 2016-06-01
|
6
15
|
|
7
16
|
- [Added] Add charge reversal method (@zentetsukenz)
|
data/bin/console
ADDED
data/bin/rake
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
#
|
4
|
+
# This file was generated by Bundler.
|
5
|
+
#
|
6
|
+
# The application 'rake' is installed as part of a gem, and
|
7
|
+
# this file is here to facilitate running it.
|
8
|
+
#
|
9
|
+
|
10
|
+
require "pathname"
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
12
|
+
Pathname.new(__FILE__).realpath)
|
13
|
+
|
14
|
+
require "rubygems"
|
15
|
+
require "bundler/setup"
|
16
|
+
|
17
|
+
load Gem.bin_path("rake", "rake")
|
data/lib/omise/all.rb
CHANGED
@@ -4,9 +4,12 @@ require "omise/card"
|
|
4
4
|
require "omise/charge"
|
5
5
|
require "omise/customer"
|
6
6
|
require "omise/dispute"
|
7
|
+
require "omise/document"
|
7
8
|
require "omise/event"
|
9
|
+
require "omise/link"
|
8
10
|
require "omise/recipient"
|
9
11
|
require "omise/refund"
|
12
|
+
require "omise/search"
|
10
13
|
require "omise/token"
|
11
14
|
require "omise/transaction"
|
12
15
|
require "omise/transfer"
|
data/lib/omise/attributes.rb
CHANGED
@@ -2,9 +2,10 @@ require "omise/util"
|
|
2
2
|
|
3
3
|
module Omise
|
4
4
|
module Attributes
|
5
|
-
def initialize(attributes = {})
|
5
|
+
def initialize(attributes = {}, options = {})
|
6
|
+
@attributes = attributes
|
7
|
+
@options = options
|
6
8
|
@expanded_attributes = {}
|
7
|
-
@attributes = attributes
|
8
9
|
end
|
9
10
|
|
10
11
|
def attributes
|
@@ -62,7 +63,15 @@ module Omise
|
|
62
63
|
end
|
63
64
|
|
64
65
|
def list_attribute(klass, key)
|
65
|
-
klass.new(
|
66
|
+
klass.new(@attributes[key], parent: self)
|
67
|
+
end
|
68
|
+
|
69
|
+
def list_nested_resource(klass, key, options = {})
|
70
|
+
if @attributes.key?(key) && options.empty?
|
71
|
+
return list_attribute(klass, key)
|
72
|
+
end
|
73
|
+
|
74
|
+
klass.new(nested_resource(key, options).get, parent: self)
|
66
75
|
end
|
67
76
|
|
68
77
|
def expand_attribute(object, key, options = {})
|
data/lib/omise/card_list.rb
CHANGED
@@ -4,18 +4,13 @@ require "omise/token"
|
|
4
4
|
|
5
5
|
module Omise
|
6
6
|
class CardList < List
|
7
|
-
def initialize(customer, attributes = {})
|
8
|
-
super(attributes)
|
9
|
-
@customer = customer
|
10
|
-
end
|
11
|
-
|
12
7
|
def retrieve(id, attributes = {})
|
13
8
|
Card.new self.class.resource(location(id), attributes).get(attributes)
|
14
9
|
end
|
15
10
|
|
16
11
|
def create(attributes = {})
|
17
12
|
token = Token.create(card: attributes)
|
18
|
-
|
13
|
+
parent.update(card: token.id)
|
19
14
|
retrieve(token.card.id)
|
20
15
|
end
|
21
16
|
end
|
data/lib/omise/charge.rb
CHANGED
@@ -3,12 +3,17 @@ require "omise/list"
|
|
3
3
|
require "omise/customer"
|
4
4
|
require "omise/dispute"
|
5
5
|
require "omise/refund_list"
|
6
|
+
require "omise/search_scope"
|
6
7
|
require "omise/transaction"
|
7
8
|
|
8
9
|
module Omise
|
9
10
|
class Charge < OmiseObject
|
10
11
|
self.endpoint = "/charges"
|
11
12
|
|
13
|
+
def self.search
|
14
|
+
SearchScope.new(:charge)
|
15
|
+
end
|
16
|
+
|
12
17
|
def self.retrieve(id, attributes = {})
|
13
18
|
new resource(location(id), attributes).get(attributes)
|
14
19
|
end
|
data/lib/omise/customer.rb
CHANGED
@@ -1,11 +1,17 @@
|
|
1
1
|
require "omise/object"
|
2
|
-
require "omise/list"
|
3
2
|
require "omise/card_list"
|
3
|
+
require "omise/charge"
|
4
|
+
require "omise/list"
|
5
|
+
require "omise/search_scope"
|
4
6
|
|
5
7
|
module Omise
|
6
8
|
class Customer < OmiseObject
|
7
9
|
self.endpoint = "/customers"
|
8
10
|
|
11
|
+
def self.search
|
12
|
+
SearchScope.new(:customer)
|
13
|
+
end
|
14
|
+
|
9
15
|
def self.retrieve(id = nil, attributes = {})
|
10
16
|
new resource(location(id), attributes).get(attributes)
|
11
17
|
end
|
@@ -30,6 +36,10 @@ module Omise
|
|
30
36
|
assign_attributes resource(attributes).delete
|
31
37
|
end
|
32
38
|
|
39
|
+
def charge(attributes = {})
|
40
|
+
Charge.create(attributes.merge(customer: id))
|
41
|
+
end
|
42
|
+
|
33
43
|
def default_card(options = {})
|
34
44
|
expand_attribute cards, "default_card", options
|
35
45
|
end
|
@@ -39,7 +49,7 @@ module Omise
|
|
39
49
|
list_attribute CardList, "cards"
|
40
50
|
else
|
41
51
|
response = collection.resource(location("cards")).get(options)
|
42
|
-
CardList.new(
|
52
|
+
CardList.new(response, parent: self)
|
43
53
|
end
|
44
54
|
end
|
45
55
|
end
|
data/lib/omise/dispute.rb
CHANGED
@@ -1,11 +1,17 @@
|
|
1
1
|
require "omise/object"
|
2
2
|
require "omise/charge"
|
3
|
+
require "omise/document_list"
|
3
4
|
require "omise/list"
|
5
|
+
require "omise/search_scope"
|
4
6
|
|
5
7
|
module Omise
|
6
8
|
class Dispute < OmiseObject
|
7
9
|
self.endpoint = "/disputes"
|
8
10
|
|
11
|
+
def self.search
|
12
|
+
SearchScope.new(:dispute)
|
13
|
+
end
|
14
|
+
|
9
15
|
def self.list(attributes = {})
|
10
16
|
status = attributes.delete(:status)
|
11
17
|
List.new resource(location(status), attributes).get(attributes)
|
@@ -26,5 +32,9 @@ module Omise
|
|
26
32
|
def charge(options = {})
|
27
33
|
expand_attribute Charge, "charge", options
|
28
34
|
end
|
35
|
+
|
36
|
+
def documents(options = {})
|
37
|
+
list_nested_resource DocumentList, "documents", options
|
38
|
+
end
|
29
39
|
end
|
30
40
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
|
3
|
+
module Omise
|
4
|
+
class Document < OmiseObject
|
5
|
+
self.endpoint = "/documents"
|
6
|
+
|
7
|
+
def reload(attributes = {})
|
8
|
+
assign_attributes resource(attributes).get(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def destroy(attributes = {})
|
12
|
+
assign_attributes resource(attributes).delete
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "omise/document"
|
2
|
+
require "omise/list"
|
3
|
+
|
4
|
+
module Omise
|
5
|
+
class DocumentList < List
|
6
|
+
def retrieve(id, attributes = {})
|
7
|
+
Document.new self.class.resource(location(id), attributes).get(attributes)
|
8
|
+
end
|
9
|
+
|
10
|
+
def upload(file)
|
11
|
+
attributes = { file: file }
|
12
|
+
Document.new self.class.resource(location, attributes).post(attributes)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/omise/error.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
module Omise
|
2
2
|
class Error < StandardError
|
3
|
-
def initialize(attributes
|
3
|
+
def initialize(attributes)
|
4
4
|
@code = attributes["code"]
|
5
|
-
|
5
|
+
super("#{attributes["message"]} (#{@code})")
|
6
6
|
end
|
7
7
|
|
8
|
-
|
9
|
-
"#{@message} (#{@code})"
|
10
|
-
end
|
8
|
+
attr_reader :code
|
11
9
|
end
|
12
10
|
end
|
data/lib/omise/link.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
require "omise/charge_list"
|
3
|
+
|
4
|
+
module Omise
|
5
|
+
class Link < OmiseObject
|
6
|
+
self.endpoint = "/links"
|
7
|
+
|
8
|
+
def self.search
|
9
|
+
SearchScope.new(:link)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.retrieve(id, attributes = {})
|
13
|
+
new resource(location(id), attributes).get(attributes)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.list(attributes = {})
|
17
|
+
List.new resource(location, attributes).get(attributes)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.create(attributes = {})
|
21
|
+
new resource(location, attributes).post(attributes)
|
22
|
+
end
|
23
|
+
|
24
|
+
def reload(attributes = {})
|
25
|
+
assign_attributes resource(attributes).get(attributes)
|
26
|
+
end
|
27
|
+
|
28
|
+
def charges(options = {})
|
29
|
+
if options.empty?
|
30
|
+
list_attribute ChargeList, "charges"
|
31
|
+
else
|
32
|
+
response = collection.resource(location("charges")).get(options)
|
33
|
+
ChargeList.new(self, response)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/lib/omise/list.rb
CHANGED
@@ -5,8 +5,8 @@ module Omise
|
|
5
5
|
class List < OmiseObject
|
6
6
|
include Enumerable
|
7
7
|
|
8
|
-
def initialize(attributes = {})
|
9
|
-
super(attributes)
|
8
|
+
def initialize(attributes = {}, options = {})
|
9
|
+
super(attributes, options)
|
10
10
|
setup_data
|
11
11
|
end
|
12
12
|
|
@@ -16,6 +16,38 @@ module Omise
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def parent
|
20
|
+
@options[:parent]
|
21
|
+
end
|
22
|
+
|
23
|
+
def first_page?
|
24
|
+
offset == 0
|
25
|
+
end
|
26
|
+
|
27
|
+
def last_page?
|
28
|
+
offset + limit >= total
|
29
|
+
end
|
30
|
+
|
31
|
+
def page
|
32
|
+
1 + (offset / limit)
|
33
|
+
end
|
34
|
+
|
35
|
+
def total_pages
|
36
|
+
(total.to_f / limit).ceil
|
37
|
+
end
|
38
|
+
|
39
|
+
def next_page
|
40
|
+
self.class.new(@attributes, @options).send(:next_page!)
|
41
|
+
end
|
42
|
+
|
43
|
+
def previous_page
|
44
|
+
self.class.new(@attributes, @options).send(:previous_page!)
|
45
|
+
end
|
46
|
+
|
47
|
+
def jump_to_page(page)
|
48
|
+
self.class.new(@attributes, @options).send(:jump_to_page!, page)
|
49
|
+
end
|
50
|
+
|
19
51
|
def each(*args, &block)
|
20
52
|
to_a.each(*args, &block)
|
21
53
|
end
|
@@ -30,6 +62,25 @@ module Omise
|
|
30
62
|
|
31
63
|
private
|
32
64
|
|
65
|
+
def jump_to_page!(page)
|
66
|
+
new_offset = ((page - 1) * limit)
|
67
|
+
return nil if new_offset >= total
|
68
|
+
reload(offset: new_offset, limit: limit)
|
69
|
+
self
|
70
|
+
end
|
71
|
+
|
72
|
+
def next_page!
|
73
|
+
return nil if (offset + limit) >= total
|
74
|
+
reload(offset: offset + limit, limit: limit)
|
75
|
+
self
|
76
|
+
end
|
77
|
+
|
78
|
+
def previous_page!
|
79
|
+
return nil if (offset - limit) < 0
|
80
|
+
reload(offset: offset - limit, limit: limit)
|
81
|
+
self
|
82
|
+
end
|
83
|
+
|
33
84
|
def setup_data
|
34
85
|
@data = @attributes["data"].map { |o| Omise::Util.typecast(o) }
|
35
86
|
end
|
data/lib/omise/recipient.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
require "omise/object"
|
2
2
|
require "omise/bank_account"
|
3
|
+
require "omise/search_scope"
|
3
4
|
|
4
5
|
module Omise
|
5
6
|
class Recipient < OmiseObject
|
6
7
|
self.endpoint = "/recipients"
|
7
8
|
|
9
|
+
def self.search
|
10
|
+
SearchScope.new(:recipient)
|
11
|
+
end
|
12
|
+
|
8
13
|
def self.retrieve(id, attributes = {})
|
9
14
|
new resource(location(id), attributes).get(attributes)
|
10
15
|
end
|
data/lib/omise/refund.rb
CHANGED
data/lib/omise/refund_list.rb
CHANGED
@@ -3,11 +3,6 @@ require "omise/refund"
|
|
3
3
|
|
4
4
|
module Omise
|
5
5
|
class RefundList < List
|
6
|
-
def initialize(charge, attributes = {})
|
7
|
-
super(attributes)
|
8
|
-
@charge = charge
|
9
|
-
end
|
10
|
-
|
11
6
|
def create(attributes = {})
|
12
7
|
Refund.new self.class.resource(location, attributes).post(attributes)
|
13
8
|
end
|
data/lib/omise/resource.rb
CHANGED
@@ -12,26 +12,26 @@ module Omise
|
|
12
12
|
class Resource
|
13
13
|
CA_BUNDLE_PATH = File.expand_path("../../../data/ca_certificates.pem", __FILE__)
|
14
14
|
DEFAULT_HEADERS = {
|
15
|
-
user_agent: "OmiseRuby/#{Omise::VERSION} Ruby/#{RUBY_VERSION}"
|
15
|
+
user_agent: "OmiseRuby/#{Omise::VERSION} Ruby/#{RUBY_VERSION}",
|
16
16
|
}
|
17
17
|
|
18
18
|
def initialize(url, path, key)
|
19
|
-
@uri
|
19
|
+
@uri = prepare_uri(url, path)
|
20
20
|
@headers = prepare_headers
|
21
|
-
@key
|
21
|
+
@key = key
|
22
22
|
|
23
|
-
|
24
|
-
user: key,
|
25
|
-
verify_ssl: OpenSSL::SSL::VERIFY_PEER,
|
26
|
-
ssl_ca_file: CA_BUNDLE_PATH,
|
27
|
-
headers: @headers,
|
28
|
-
})
|
23
|
+
set_resource
|
29
24
|
end
|
30
25
|
|
31
26
|
attr_reader :uri, :headers, :key
|
32
27
|
|
33
28
|
def get(attributes = {})
|
34
|
-
|
29
|
+
if attributes.any?
|
30
|
+
@uri.query = Omise::Util.generate_query(attributes)
|
31
|
+
set_resource
|
32
|
+
end
|
33
|
+
|
34
|
+
@resource.get { |r| Omise::Util.load_response(r) }
|
35
35
|
end
|
36
36
|
|
37
37
|
def patch(attributes = {})
|
@@ -48,10 +48,24 @@ module Omise
|
|
48
48
|
|
49
49
|
private
|
50
50
|
|
51
|
+
def set_resource
|
52
|
+
@resource = RestClient::Resource.new(@uri.to_s, {
|
53
|
+
user: @key,
|
54
|
+
verify_ssl: OpenSSL::SSL::VERIFY_PEER,
|
55
|
+
ssl_ca_file: CA_BUNDLE_PATH,
|
56
|
+
headers: @headers,
|
57
|
+
})
|
58
|
+
end
|
59
|
+
|
51
60
|
def prepare_uri(url, path)
|
52
|
-
|
53
|
-
|
54
|
-
|
61
|
+
URI.parse(url).tap do |uri|
|
62
|
+
path = URI.parse(path)
|
63
|
+
query = path.query
|
64
|
+
|
65
|
+
path.query = nil
|
66
|
+
uri.path = [uri.path, path.to_s].join
|
67
|
+
uri.query = query
|
68
|
+
end
|
55
69
|
end
|
56
70
|
|
57
71
|
def prepare_headers
|