payson_api 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.
data/Gemfile CHANGED
@@ -2,8 +2,6 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'httpclient'
6
-
7
5
  group :test, :development do
8
6
  gem 'guard-test'
9
7
  gem 'rake'
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Christopher Svensson
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,4 +1,4 @@
1
- require 'httpclient'
1
+ require 'net/https'
2
2
 
3
3
  module PaysonAPI
4
4
  class Client
@@ -8,12 +8,6 @@ module PaysonAPI
8
8
  Response.new(response.body)
9
9
  end
10
10
 
11
- def self.payment_details(token)
12
- action = '/%s/%s/' % [PAYSON_API_VERSION, PAYSON_API_PAYMENT_DETAILS_ACTION]
13
- response = post(PAYSON_API_ENDPOINT + action, { :token => token })
14
- Response.new(response.body)
15
- end
16
-
17
11
  private
18
12
 
19
13
  def self.post(url, data)
@@ -22,7 +16,22 @@ module PaysonAPI
22
16
  'PAYSON-SECURITY-PASSWORD' => PaysonAPI.config.api_password,
23
17
  'Content-Type' => 'application/x-www-form-urlencoded'
24
18
  }
25
- HTTPClient.post(url, :body => data, :header => headers)
19
+ uri = URI.parse(url)
20
+ http = Net::HTTP.new(uri.host, uri.port)
21
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
22
+ http.use_ssl = uri.scheme == 'https'
23
+ req = Net::HTTP::Post.new(uri.path)
24
+ req.body = hash_to_params(data)
25
+ headers.each do |name, value|
26
+ req[name] = value
27
+ end
28
+ http.request(req)
29
+ end
30
+
31
+ def self.hash_to_params(hash)
32
+ out = ""
33
+ hash.each { |k, v| out << "#{k}=#{v}&" }
34
+ out.chop
26
35
  end
27
36
  end
28
37
  end
@@ -1,3 +1,3 @@
1
1
  module PaysonAPI
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/payson_api.gemspec CHANGED
@@ -11,11 +11,13 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "https://github.com/stoffus/payson_api"
12
12
  s.summary = %q{Client for Payson API}
13
13
  s.description = %q{Client that enables access to the Payson payment gateway API.}
14
+ s.license = 'MIT'
14
15
 
15
16
  s.files = `git ls-files`.split("\n")
16
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
19
  s.require_paths = ["lib"]
19
20
 
20
- s.add_dependency 'httpclient'
21
+ s.add_development_dependency 'rake'
22
+ s.add_development_dependency 'guard-test'
21
23
  end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require 'test_helper'
5
+ require 'payson_api'
6
+
7
+ class PayDataTest < Test::Unit::TestCase
8
+ include TestHelper
9
+ ORDER = YAML.load_file('test/fixtures/order.yml')
10
+
11
+ def test_request_and_fail_gracefully
12
+ sender = PaysonAPI::Sender.new(
13
+ ORDER[:sender][:email],
14
+ ORDER[:sender][:first_name],
15
+ ORDER[:sender][:last_name]
16
+ )
17
+
18
+ receivers = []
19
+ ORDER[:receivers].each do |receiver|
20
+ receivers << PaysonAPI::Receiver.new(
21
+ receiver[:email],
22
+ receiver[:amount]
23
+ )
24
+ end
25
+
26
+ pay_data = PaysonAPI::PayData.new(
27
+ ORDER[:return_url],
28
+ ORDER[:cancel_url],
29
+ ORDER[:ipn_url],
30
+ ORDER[:memo],
31
+ sender,
32
+ receivers
33
+ )
34
+
35
+ response = PaysonAPI::Client.pay(pay_data)
36
+
37
+ # This should fail due to bad credentials
38
+ assert_equal 'FAILURE', response.envelope['ack']
39
+ end
40
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: payson_api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 5
10
- version: 0.0.5
8
+ - 6
9
+ version: 0.0.6
11
10
  platform: ruby
12
11
  authors:
13
12
  - Christopher Svensson
@@ -15,22 +14,33 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2012-07-25 00:00:00 Z
17
+ date: 2012-07-25 00:00:00 +02:00
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: httpclient
21
+ name: rake
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
24
  requirements:
26
25
  - - ">="
27
26
  - !ruby/object:Gem::Version
28
- hash: 3
29
27
  segments:
30
28
  - 0
31
29
  version: "0"
32
- type: :runtime
30
+ type: :development
33
31
  version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: guard-test
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :development
43
+ version_requirements: *id002
34
44
  description: Client that enables access to the Payson payment gateway API.
35
45
  email:
36
46
  - stoffus@stoffus.com
@@ -45,6 +55,7 @@ files:
45
55
  - .travis.yml
46
56
  - Gemfile
47
57
  - Guardfile
58
+ - MIT-LICENSE
48
59
  - README.rdoc
49
60
  - Rakefile
50
61
  - lib/payson_api.rb
@@ -63,37 +74,35 @@ files:
63
74
  - test/fixtures/order.yml
64
75
  - test/integration/config_test.rb
65
76
  - test/integration/pay_data_test.rb
77
+ - test/integration/request_test.rb
66
78
  - test/test_helper.rb
79
+ has_rdoc: true
67
80
  homepage: https://github.com/stoffus/payson_api
68
- licenses: []
69
-
81
+ licenses:
82
+ - MIT
70
83
  post_install_message:
71
84
  rdoc_options: []
72
85
 
73
86
  require_paths:
74
87
  - lib
75
88
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
89
  requirements:
78
90
  - - ">="
79
91
  - !ruby/object:Gem::Version
80
- hash: 3
81
92
  segments:
82
93
  - 0
83
94
  version: "0"
84
95
  required_rubygems_version: !ruby/object:Gem::Requirement
85
- none: false
86
96
  requirements:
87
97
  - - ">="
88
98
  - !ruby/object:Gem::Version
89
- hash: 3
90
99
  segments:
91
100
  - 0
92
101
  version: "0"
93
102
  requirements: []
94
103
 
95
104
  rubyforge_project:
96
- rubygems_version: 1.8.15
105
+ rubygems_version: 1.3.6
97
106
  signing_key:
98
107
  specification_version: 3
99
108
  summary: Client for Payson API
@@ -102,4 +111,5 @@ test_files:
102
111
  - test/fixtures/order.yml
103
112
  - test/integration/config_test.rb
104
113
  - test/integration/pay_data_test.rb
114
+ - test/integration/request_test.rb
105
115
  - test/test_helper.rb