paymill 0.2.0 → 0.2.1
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.
- data/.gitignore +2 -1
- data/Gemfile +1 -0
- data/README.md +6 -0
- data/lib/paymill/operations/all.rb +3 -3
- data/lib/paymill/transaction.rb +2 -1
- data/lib/paymill/version.rb +1 -1
- data/lib/paymill/webhook.rb +8 -0
- data/lib/paymill.rb +15 -9
- data/spec/paymill/transaction_spec.rb +9 -0
- data/spec/paymill/webhook_spec.rb +70 -0
- data/spec/paymill_spec.rb +18 -1
- data/spec/spec_helper.rb +6 -5
- metadata +11 -8
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -41,6 +41,12 @@ operation:
|
|
41
41
|
|
42
42
|
Paymill::Client.all
|
43
43
|
|
44
|
+
To sort and filter collection lists of objects, use the `all` method
|
45
|
+
with an options hash. For example to find the most recent transactions
|
46
|
+
belonging to a client you can use the following code:
|
47
|
+
|
48
|
+
Paymill::Transaction.all(client: "<client_id>", order: "created_at_desc")
|
49
|
+
|
44
50
|
Please note that Transactions and Payments cannot be updated.
|
45
51
|
|
46
52
|
Requirements
|
@@ -2,8 +2,8 @@ module Paymill
|
|
2
2
|
module Operations
|
3
3
|
module All
|
4
4
|
module ClassMethods
|
5
|
-
def all
|
6
|
-
response = Paymill.request(:get, "#{self.name.split("::").last.downcase}s/",
|
5
|
+
def all(options = {})
|
6
|
+
response = Paymill.request(:get, "#{self.name.split("::").last.downcase}s/", options)
|
7
7
|
results = []
|
8
8
|
response["data"].each do |obj|
|
9
9
|
results << self.new(obj)
|
@@ -17,4 +17,4 @@ module Paymill
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
-
end
|
20
|
+
end
|
data/lib/paymill/transaction.rb
CHANGED
data/lib/paymill/version.rb
CHANGED
data/lib/paymill.rb
CHANGED
@@ -15,6 +15,7 @@ module Paymill
|
|
15
15
|
autoload :Payment, "paymill/payment"
|
16
16
|
autoload :Subscription, "paymill/subscription"
|
17
17
|
autoload :Transaction, "paymill/transaction"
|
18
|
+
autoload :Webhook, "paymill/webhook"
|
18
19
|
|
19
20
|
module Operations
|
20
21
|
autoload :All, "paymill/operations/all"
|
@@ -49,15 +50,15 @@ module Paymill
|
|
49
50
|
https.start do |connection|
|
50
51
|
url = "/#{API_VERSION}/#{api_url}"
|
51
52
|
https_request = case http_method
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
53
|
+
when :post
|
54
|
+
Net::HTTP::Post.new(url)
|
55
|
+
when :put
|
56
|
+
Net::HTTP::Put.new(url)
|
57
|
+
when :delete
|
58
|
+
Net::HTTP::Delete.new(url)
|
59
|
+
else
|
60
|
+
Net::HTTP::Get.new(path_with_params(url, data))
|
61
|
+
end
|
61
62
|
https_request.basic_auth(api_key, "")
|
62
63
|
https_request.set_form_data(data) if [:post, :put].include? http_method
|
63
64
|
@response = https.request(https_request)
|
@@ -70,5 +71,10 @@ module Paymill
|
|
70
71
|
|
71
72
|
data
|
72
73
|
end
|
74
|
+
|
75
|
+
def path_with_params(path, params)
|
76
|
+
encoded_params = URI.encode_www_form(params)
|
77
|
+
[path, encoded_params].join("?")
|
78
|
+
end
|
73
79
|
end
|
74
80
|
end
|
@@ -8,6 +8,7 @@ describe Paymill::Transaction do
|
|
8
8
|
status: "pending",
|
9
9
|
description: "Test transaction.",
|
10
10
|
livemode: false,
|
11
|
+
response_code: 20000,
|
11
12
|
payment: {
|
12
13
|
card_type: "visa",
|
13
14
|
country: "germany"
|
@@ -26,6 +27,7 @@ describe Paymill::Transaction do
|
|
26
27
|
transaction.status.should eql("pending")
|
27
28
|
transaction.description.should eql("Test transaction.")
|
28
29
|
transaction.livemode.should eql(false)
|
30
|
+
transaction.response_code.should eql(20000)
|
29
31
|
transaction.payment[:card_type].should eql("visa")
|
30
32
|
transaction.payment[:country].should eql("germany")
|
31
33
|
transaction.client.should eql("client_a013c")
|
@@ -47,6 +49,13 @@ describe Paymill::Transaction do
|
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
52
|
+
describe ".all with options" do
|
53
|
+
it "makes a new GET request using the correct API endpoint to receive all transactions" do
|
54
|
+
Paymill.should_receive(:request).with(:get, "transactions/", { client: "client_id" }).and_return("data" => {})
|
55
|
+
Paymill::Transaction.all(client: "client_id")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
50
59
|
describe ".create" do
|
51
60
|
it "makes a new POST request using the correct API endpoint" do
|
52
61
|
Paymill.should_receive(:request).with(:post, "transactions", valid_attributes).and_return("data" => {})
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Paymill::Webhook do
|
4
|
+
let(:valid_attributes) do
|
5
|
+
{
|
6
|
+
url: "<your-webhook-url>",
|
7
|
+
livemode:false,
|
8
|
+
event_types:["transaction.succeeded","transaction.failed"],
|
9
|
+
created_at:1360368749,
|
10
|
+
updated_at:1360368749
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
let (:webhook) do
|
15
|
+
Paymill::Webhook.new(valid_attributes)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "#initialize" do
|
19
|
+
it "initializes all attributes correctly" do
|
20
|
+
webhook.url.should eql("<your-webhook-url>")
|
21
|
+
webhook.livemode.should eql(false)
|
22
|
+
webhook.event_types.should eql(["transaction.succeeded","transaction.failed"])
|
23
|
+
webhook.created_at.should eql(1360368749)
|
24
|
+
webhook.updated_at.should eql(1360368749)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe ".find" do
|
29
|
+
it "makes a new GET request using the correct API endpoint to receive a specific webhook" do
|
30
|
+
Paymill.should_receive(:request).with(:get, "webhooks/123", {}).and_return("data" => {})
|
31
|
+
Paymill::Webhook.find("123")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe ".all" do
|
36
|
+
it "makes a new GET request using the correct API endpoint to receive all webhooks" do
|
37
|
+
Paymill.should_receive(:request).with(:get, "webhooks/", {}).and_return("data" => {})
|
38
|
+
Paymill::Webhook.all
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe ".create" do
|
43
|
+
it "makes a new POST request using the correct API endpoint" do
|
44
|
+
Paymill.should_receive(:request).with(:post, "webhooks", valid_attributes).and_return("data" => {})
|
45
|
+
Paymill::Webhook.create(valid_attributes)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe ".delete" do
|
50
|
+
it "makes a new DELETE request using the correct API endpoint" do
|
51
|
+
Paymill.should_receive(:request).with(:delete, "webhooks/123", {}).and_return(true)
|
52
|
+
Paymill::Webhook.delete("123")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#update_attributes" do
|
57
|
+
it "makes a new PUT request using the correct API endpoint" do
|
58
|
+
changed_attributes = {:url => "<new-webhook-url>"}
|
59
|
+
webhook.id = 'hook_123'
|
60
|
+
Paymill.should_receive(:request).with(:put, "webhooks/hook_123", changed_attributes).and_return("data" => changed_attributes)
|
61
|
+
webhook.update_attributes(changed_attributes)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should set the returned attributes on the instance" do
|
65
|
+
Paymill.should_receive(:request).and_return("data" => {:url => "<new-webhook-url>"})
|
66
|
+
webhook.update_attributes({})
|
67
|
+
webhook.url.should eql("<new-webhook-url>")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/spec/paymill_spec.rb
CHANGED
@@ -7,5 +7,22 @@ describe Paymill do
|
|
7
7
|
expect { Paymill.request(:get, "clients", {}) }.to raise_error(Paymill::AuthenticationError)
|
8
8
|
end
|
9
9
|
end
|
10
|
+
|
11
|
+
context "with an invalid api key" do
|
12
|
+
before(:each) do
|
13
|
+
WebMock.stub_request(:any, /#{Paymill::API_BASE}/).to_return(:body => "{}")
|
14
|
+
Paymill.api_key = "your-api-key"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "attempts to get a url with one param" do
|
18
|
+
Paymill.request(:get, "transactions", { param_name: "param_value" })
|
19
|
+
WebMock.should have_requested(:get, "https://#{Paymill::api_key}:@#{Paymill::API_BASE}/#{Paymill::API_VERSION}/transactions?param_name=param_value")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "attempts to get a url with more than one param" do
|
23
|
+
Paymill.request(:get, "transactions", { client: "client_id", order: "created_at_desc" })
|
24
|
+
WebMock.should have_requested(:get, "https://#{Paymill::api_key}:@#{Paymill::API_BASE}/#{Paymill::API_VERSION}/transactions?client=client_id&order=created_at_desc")
|
25
|
+
end
|
26
|
+
end
|
10
27
|
end
|
11
|
-
end
|
28
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__),
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
|
+
require "paymill"
|
4
|
+
require "rspec"
|
5
|
+
require "rspec/autorun"
|
6
|
+
require "webmock/rspec"
|
6
7
|
|
7
8
|
RSpec.configure do |config|
|
8
|
-
end
|
9
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paymill
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153450240 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153450240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153464400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153464400
|
36
36
|
description: API wrapper for Paymill.
|
37
37
|
email:
|
38
38
|
- stefan.sprenger@dkd.de
|
@@ -60,12 +60,14 @@ files:
|
|
60
60
|
- lib/paymill/subscription.rb
|
61
61
|
- lib/paymill/transaction.rb
|
62
62
|
- lib/paymill/version.rb
|
63
|
+
- lib/paymill/webhook.rb
|
63
64
|
- paymill.gemspec
|
64
65
|
- spec/paymill/client_spec.rb
|
65
66
|
- spec/paymill/offer_spec.rb
|
66
67
|
- spec/paymill/payment_spec.rb
|
67
68
|
- spec/paymill/subscription_spec.rb
|
68
69
|
- spec/paymill/transaction_spec.rb
|
70
|
+
- spec/paymill/webhook_spec.rb
|
69
71
|
- spec/paymill_spec.rb
|
70
72
|
- spec/spec_helper.rb
|
71
73
|
homepage: https://github.com/dkd/paymill-ruby
|
@@ -82,7 +84,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
84
|
version: '0'
|
83
85
|
segments:
|
84
86
|
- 0
|
85
|
-
hash:
|
87
|
+
hash: 3327817462008033572
|
86
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
89
|
none: false
|
88
90
|
requirements:
|
@@ -91,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
93
|
version: '0'
|
92
94
|
segments:
|
93
95
|
- 0
|
94
|
-
hash:
|
96
|
+
hash: 3327817462008033572
|
95
97
|
requirements: []
|
96
98
|
rubyforge_project:
|
97
99
|
rubygems_version: 1.8.10
|
@@ -104,5 +106,6 @@ test_files:
|
|
104
106
|
- spec/paymill/payment_spec.rb
|
105
107
|
- spec/paymill/subscription_spec.rb
|
106
108
|
- spec/paymill/transaction_spec.rb
|
109
|
+
- spec/paymill/webhook_spec.rb
|
107
110
|
- spec/paymill_spec.rb
|
108
111
|
- spec/spec_helper.rb
|