omise 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|