paymill 0.2.2 → 0.3.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.
- data/.travis.yml +5 -0
- data/README.md +1 -1
- data/lib/paymill.rb +25 -8
- data/lib/paymill/base.rb +7 -0
- data/lib/paymill/operations/all.rb +4 -0
- data/lib/paymill/operations/create.rb +4 -1
- data/lib/paymill/operations/delete.rb +4 -1
- data/lib/paymill/operations/find.rb +5 -1
- data/lib/paymill/operations/update.rb +3 -0
- data/lib/paymill/subscription.rb +2 -1
- data/lib/paymill/version.rb +1 -1
- data/spec/paymill/subscription_spec.rb +4 -4
- metadata +5 -4
data/.travis.yml
ADDED
data/README.md
CHANGED
data/lib/paymill.rb
CHANGED
@@ -4,20 +4,20 @@ require "json"
|
|
4
4
|
require "paymill/version"
|
5
5
|
|
6
6
|
module Paymill
|
7
|
-
API_BASE = "api.paymill.
|
7
|
+
API_BASE = "api.paymill.com"
|
8
8
|
API_VERSION = "v2"
|
9
9
|
|
10
10
|
@@api_key = nil
|
11
11
|
|
12
|
-
autoload :Base,
|
13
|
-
autoload :Client,
|
14
|
-
autoload :Offer,
|
15
|
-
autoload :Payment,
|
12
|
+
autoload :Base, "paymill/base"
|
13
|
+
autoload :Client, "paymill/client"
|
14
|
+
autoload :Offer, "paymill/offer"
|
15
|
+
autoload :Payment, "paymill/payment"
|
16
16
|
autoload :Preauthorization, "paymill/preauthorization"
|
17
17
|
autoload :Refund, "paymill/refund"
|
18
|
-
autoload :Subscription,
|
19
|
-
autoload :Transaction,
|
20
|
-
autoload :Webhook,
|
18
|
+
autoload :Subscription, "paymill/subscription"
|
19
|
+
autoload :Transaction, "paymill/transaction"
|
20
|
+
autoload :Webhook, "paymill/webhook"
|
21
21
|
|
22
22
|
module Operations
|
23
23
|
autoload :All, "paymill/operations/all"
|
@@ -34,14 +34,26 @@ module Paymill
|
|
34
34
|
class APIError < PaymillError; end
|
35
35
|
|
36
36
|
class << self
|
37
|
+
# Returns the set api key
|
38
|
+
#
|
39
|
+
# @return [String] The api key
|
37
40
|
def api_key
|
38
41
|
@@api_key
|
39
42
|
end
|
40
43
|
|
44
|
+
# Sets the api key
|
45
|
+
#
|
46
|
+
# @param [String] api_key The api key
|
41
47
|
def api_key=(api_key)
|
42
48
|
@@api_key = api_key
|
43
49
|
end
|
44
50
|
|
51
|
+
# Makes a request against the Paymill API
|
52
|
+
#
|
53
|
+
# @param [Symbol] http_method The http method to use, must be one of :get, :post, :put and :delete
|
54
|
+
# @param [String] api_url The API url to use
|
55
|
+
# @param [Hash] data The data to send, e.g. used when creating new objects.
|
56
|
+
# @return [Array] The parsed JSON response.
|
45
57
|
def request(http_method, api_url, data)
|
46
58
|
raise AuthenticationError if api_key.nil?
|
47
59
|
|
@@ -79,6 +91,11 @@ module Paymill
|
|
79
91
|
data
|
80
92
|
end
|
81
93
|
|
94
|
+
# Builds and encodes a URI using given path and params.
|
95
|
+
#
|
96
|
+
# @param [String] path The path to use
|
97
|
+
# @param [Array] params The params to use
|
98
|
+
# @return [String] The built URI.
|
82
99
|
def path_with_params(path, params)
|
83
100
|
unless params.empty?
|
84
101
|
encoded_params = URI.encode_www_form(params)
|
data/lib/paymill/base.rb
CHANGED
@@ -6,17 +6,24 @@ module Paymill
|
|
6
6
|
|
7
7
|
attr_accessor :created_at, :updated_at
|
8
8
|
|
9
|
+
# Initializes the object using the given attributes
|
10
|
+
#
|
11
|
+
# @param [Hash] attributes The attributes to use for initialization
|
9
12
|
def initialize(attributes = {})
|
10
13
|
set_attributes(attributes)
|
11
14
|
parse_timestamps
|
12
15
|
end
|
13
16
|
|
17
|
+
# Sets the attributes
|
18
|
+
#
|
19
|
+
# @param [Hash] attributes The attributes to initialize
|
14
20
|
def set_attributes(attributes)
|
15
21
|
attributes.each_pair do |key, value|
|
16
22
|
instance_variable_set("@#{key}", value)
|
17
23
|
end
|
18
24
|
end
|
19
25
|
|
26
|
+
# Parses UNIX timestamps and creates Time objects.
|
20
27
|
def parse_timestamps
|
21
28
|
@created_at = Time.at(created_at) if created_at
|
22
29
|
@updated_at = Time.at(updated_at) if updated_at
|
@@ -2,6 +2,10 @@ module Paymill
|
|
2
2
|
module Operations
|
3
3
|
module All
|
4
4
|
module ClassMethods
|
5
|
+
# Retrieves all available objects from the Paymill API
|
6
|
+
#
|
7
|
+
# @param [Hash] options Options to pass to the API
|
8
|
+
# @return [Array] The available objects
|
5
9
|
def all(options = {})
|
6
10
|
response = Paymill.request(:get, "#{self.name.split("::").last.downcase}s/", options)
|
7
11
|
results = []
|
@@ -2,6 +2,9 @@ module Paymill
|
|
2
2
|
module Operations
|
3
3
|
module Create
|
4
4
|
module ClassMethods
|
5
|
+
# Creates a new object
|
6
|
+
#
|
7
|
+
# @param [Hash] attributes The attributes of the created object
|
5
8
|
def create(attributes)
|
6
9
|
response = Paymill.request(:post, "#{self.name.split("::").last.downcase}s", attributes)
|
7
10
|
self.new(response["data"])
|
@@ -13,4 +16,4 @@ module Paymill
|
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
16
|
-
end
|
19
|
+
end
|
@@ -2,6 +2,9 @@ module Paymill
|
|
2
2
|
module Operations
|
3
3
|
module Delete
|
4
4
|
module ClassMethods
|
5
|
+
# Deletes the given object
|
6
|
+
#
|
7
|
+
# @param [Integer] id The id of the object that gets deleted
|
5
8
|
def delete(id)
|
6
9
|
response = Paymill.request(:delete, "#{self.name.split("::").last.downcase}s/#{id}", {})
|
7
10
|
true
|
@@ -13,4 +16,4 @@ module Paymill
|
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
16
|
-
end
|
19
|
+
end
|
@@ -2,6 +2,10 @@ module Paymill
|
|
2
2
|
module Operations
|
3
3
|
module Find
|
4
4
|
module ClassMethods
|
5
|
+
# Finds a given object
|
6
|
+
#
|
7
|
+
# @param [Integer] id The id of the object that should be found
|
8
|
+
# @return [Paymill::Base] The found object
|
5
9
|
def find(id)
|
6
10
|
response = Paymill.request(:get, "#{self.name.split("::").last.downcase}s/#{id}", {})
|
7
11
|
self.new(response["data"])
|
@@ -13,4 +17,4 @@ module Paymill
|
|
13
17
|
end
|
14
18
|
end
|
15
19
|
end
|
16
|
-
end
|
20
|
+
end
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module Paymill
|
2
2
|
module Operations
|
3
3
|
module Update
|
4
|
+
# Updates a object
|
5
|
+
#
|
6
|
+
# @param [Hash] attributes The attributes that should be updated
|
4
7
|
def update_attributes(attributes)
|
5
8
|
response = Paymill.request(:put, "#{self.class.name.split("::").last.downcase}s/#{id}", attributes)
|
6
9
|
set_attributes(response["data"])
|
data/lib/paymill/subscription.rb
CHANGED
@@ -3,8 +3,9 @@ module Paymill
|
|
3
3
|
include Paymill::Operations::Delete
|
4
4
|
include Paymill::Operations::Update
|
5
5
|
|
6
|
-
attr_accessor :id, :
|
6
|
+
attr_accessor :id, :offer, :livemode, :cancel_at_period_end, :canceled_at, :client, :trial_start, :trial_end
|
7
7
|
|
8
|
+
# Parses UNIX timestamps and creates Time objects
|
8
9
|
def parse_timestamps
|
9
10
|
super
|
10
11
|
@canceled_at = Time.at(canceled_at) if canceled_at
|
data/lib/paymill/version.rb
CHANGED
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Paymill::Subscription do
|
4
4
|
let(:valid_attributes) do
|
5
5
|
{
|
6
|
-
|
6
|
+
offer: {
|
7
7
|
name: "Nerd special",
|
8
8
|
amount: 123,
|
9
9
|
interval: "week"
|
@@ -24,9 +24,9 @@ describe Paymill::Subscription do
|
|
24
24
|
|
25
25
|
describe "#initialize" do
|
26
26
|
it "initializes all attributes correctly" do
|
27
|
-
subscription.
|
28
|
-
subscription.
|
29
|
-
subscription.
|
27
|
+
subscription.offer[:name].should eql("Nerd special")
|
28
|
+
subscription.offer[:amount].should eql(123)
|
29
|
+
subscription.offer[:interval].should eql("week")
|
30
30
|
subscription.livemode.should be_false
|
31
31
|
subscription.cancel_at_period_end.should be_false
|
32
32
|
subscription.client[:email].should eql("stefan.sprenger@dkd.de")
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -52,6 +52,7 @@ extra_rdoc_files: []
|
|
52
52
|
files:
|
53
53
|
- .gitignore
|
54
54
|
- .rspec
|
55
|
+
- .travis.yml
|
55
56
|
- Gemfile
|
56
57
|
- LICENSE
|
57
58
|
- README.md
|
@@ -99,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
100
|
version: '0'
|
100
101
|
segments:
|
101
102
|
- 0
|
102
|
-
hash:
|
103
|
+
hash: 957344793951118701
|
103
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
105
|
none: false
|
105
106
|
requirements:
|
@@ -108,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
109
|
version: '0'
|
109
110
|
segments:
|
110
111
|
- 0
|
111
|
-
hash:
|
112
|
+
hash: 957344793951118701
|
112
113
|
requirements: []
|
113
114
|
rubyforge_project:
|
114
115
|
rubygems_version: 1.8.19
|