alpha_card 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -2
- data/LICENSE +1 -1
- data/README.md +9 -7
- data/alpha_card.gemspec +2 -2
- data/lib/alpha_card.rb +2 -2
- data/lib/alpha_card/alpha_card_response.rb +1 -1
- data/lib/alpha_card/objects/sale.rb +1 -1
- data/lib/alpha_card/version.rb +1 -1
- data/spec/alpha_card/alpha_card_spec.rb +11 -0
- data/spec/spec_helper.rb +2 -0
- metadata +6 -7
- data/lib/alpha_card/utils.rb +0 -83
- data/spec/alpha_card/alpha_card_utils_spec.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d71d35569f21cf510852e3c35f8df41399983e8a
|
4
|
+
data.tar.gz: a2266edd9c1e5df53788121264173053615c0931
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 417ac49bc0b7a982f56d7fbc16d684b616c807e88d1adf37a0d2ab7aba3920608f678aa7eb4d59f7fdb50a2b8a2c52a94ae8660443a50dc0ace98d1e8833ae14
|
7
|
+
data.tar.gz: cebcd84f04b491a4d0bb7ad199572d89a4efb74c0e075867037ed6d2a7c5539aa2d74dc5d5ea939fa13197ba5eaa0a45a05e34413d051db0ddef854a25bd6daa
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# Ruby lib for creating payments with Alpha Card Services
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/alpha_card.svg)](http://badge.fury.io/rb/alpha_card)
|
3
|
-
[![Dependency Status](https://gemnasium.com/
|
4
|
-
[![Code Climate](https://codeclimate.com/github/
|
5
|
-
[![Coverage Status](https://coveralls.io/repos/
|
6
|
-
[![Build Status](https://travis-ci.org/
|
7
|
-
[![Inline docs](http://inch-ci.org/github/
|
3
|
+
[![Dependency Status](https://gemnasium.com/nbulaj/alpha_card.svg)](https://gemnasium.com/nbulaj/alpha_card)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/nbulaj/alpha_card/badges/gpa.svg)](https://codeclimate.com/github/nbulaj/alpha_card)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/nbulaj/alpha_card/badge.svg)](https://coveralls.io/r/nbulaj/alpha_card)
|
6
|
+
[![Build Status](https://travis-ci.org/nbulaj/alpha_card.svg?branch=master)](https://travis-ci.org/nbulaj/alpha_card)
|
7
|
+
[![Inline docs](http://inch-ci.org/github/nbulaj/alpha_card.png?branch=master)](http://inch-ci.org/github/nbulaj/alpha_card)
|
8
|
+
[![License](http://img.shields.io/badge/license-MIT-brightgreen.svg)](#license)
|
8
9
|
|
9
10
|
This gem can help your Ruby or Ruby on Rails application to integrate with Alpha Card Service, Inc.
|
10
11
|
|
@@ -231,6 +232,7 @@ To contribute:
|
|
231
232
|
|
232
233
|
Thanks.
|
233
234
|
|
234
|
-
##
|
235
|
+
## License
|
235
236
|
|
236
|
-
|
237
|
+
Alpha Card gem is released under the [MIT License](http://www.opensource.org/licenses/MIT).
|
238
|
+
Copyright (c) 2014-2015 Nikita Bulaj (bulajnikita@gmail.com).
|
data/alpha_card.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'alpha_card/version'
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = 'alpha_card'
|
7
7
|
gem.version = AlphaCard::VERSION
|
8
|
-
gem.date = '
|
8
|
+
gem.date = '2015-04-27'
|
9
9
|
gem.summary = 'Alpha Card Services API for Ruby'
|
10
10
|
gem.description = 'Gem for creating sales with Alpha Card Services'
|
11
11
|
gem.authors = ['Nikita Bulaj']
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.required_ruby_version = '>= 1.9.3'
|
18
18
|
|
19
19
|
gem.add_dependency 'virtus', '~> 1.0'
|
20
|
-
gem.add_dependency '
|
20
|
+
gem.add_dependency 'rest-client', '~> 1.8'
|
21
21
|
|
22
22
|
gem.add_development_dependency 'rspec', '~> 3'
|
23
23
|
end
|
data/lib/alpha_card.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding:utf-8
|
2
2
|
require 'yaml'
|
3
3
|
require 'virtus'
|
4
|
-
require '
|
4
|
+
require 'rest-client'
|
5
|
+
require 'rack/utils'
|
5
6
|
|
6
7
|
# Version
|
7
8
|
require 'alpha_card/version'
|
8
9
|
|
9
|
-
require 'alpha_card/utils'
|
10
10
|
require 'alpha_card/alpha_card_object'
|
11
11
|
require 'alpha_card/alpha_card_response'
|
12
12
|
|
@@ -28,7 +28,7 @@ module AlphaCard
|
|
28
28
|
#
|
29
29
|
# #=> #<AlphaCard::AlphaCardResponse:0x00000003f2b568 @data={"response"=>"1", "responsetext"=>"Test"}>
|
30
30
|
def initialize(response_body)
|
31
|
-
@data =
|
31
|
+
@data = Rack::Utils.parse_query(response_body)
|
32
32
|
end
|
33
33
|
|
34
34
|
##
|
@@ -41,7 +41,7 @@ module AlphaCard
|
|
41
41
|
# #=> true
|
42
42
|
def create(order, account)
|
43
43
|
[:ccexp, :ccnumber, :amount].each do |attr|
|
44
|
-
fail Exception, "No #{attr} information provided" if self[attr].nil? || self[attr].empty?
|
44
|
+
fail Exception, "No #{attr} information provided!" if self[attr].nil? || self[attr].empty?
|
45
45
|
end
|
46
46
|
|
47
47
|
params = filled_attributes || {}
|
data/lib/alpha_card/version.rb
CHANGED
@@ -110,5 +110,16 @@ describe AlphaCard do
|
|
110
110
|
expect(e.message).to include('Unexpected error communicating with Alpha Card Gateway')
|
111
111
|
end
|
112
112
|
end
|
113
|
+
|
114
|
+
context 'With request exception' do
|
115
|
+
let!(:sale) { AlphaCard::Sale.new({ccexp: card_exp, ccnumber: '4111111111111111', amount: '5.00'}) }
|
116
|
+
|
117
|
+
it 'should handle an error' do
|
118
|
+
AlphaCard.api_base = 'https://google.com' # todo: some other service
|
119
|
+
expect { sale.create(order, account) }.to raise_error(AlphaCard::APIConnectionError)
|
120
|
+
|
121
|
+
AlphaCard.api_base = 'https://secure.alphacardgateway.com/api/transact.php'
|
122
|
+
end
|
123
|
+
end
|
113
124
|
end
|
114
125
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alpha_card
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Bulaj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rest-client
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,12 +77,10 @@ files:
|
|
77
77
|
- lib/alpha_card/objects/order.rb
|
78
78
|
- lib/alpha_card/objects/sale.rb
|
79
79
|
- lib/alpha_card/objects/shipping.rb
|
80
|
-
- lib/alpha_card/utils.rb
|
81
80
|
- lib/alpha_card/version.rb
|
82
81
|
- spec/alpha_card/alpha_card_account_spec.rb
|
83
82
|
- spec/alpha_card/alpha_card_response_spec.rb
|
84
83
|
- spec/alpha_card/alpha_card_spec.rb
|
85
|
-
- spec/alpha_card/alpha_card_utils_spec.rb
|
86
84
|
- spec/spec_helper.rb
|
87
85
|
homepage: http://github.com/nbulaj/alpha_card
|
88
86
|
licenses:
|
@@ -109,3 +107,4 @@ signing_key:
|
|
109
107
|
specification_version: 4
|
110
108
|
summary: Alpha Card Services API for Ruby
|
111
109
|
test_files: []
|
110
|
+
has_rdoc:
|
data/lib/alpha_card/utils.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
module AlphaCard
|
2
|
-
##
|
3
|
-
# Some stolen methods to clear library dependencies.
|
4
|
-
class Utils
|
5
|
-
##
|
6
|
-
# This one is from the rack gem. It is useful for
|
7
|
-
# parsing of Alpha Card Gateway response body.
|
8
|
-
# @see https://github.com/rack/rack rack gem GitHub
|
9
|
-
class << self
|
10
|
-
##
|
11
|
-
# Default separators for the query string.
|
12
|
-
DEFAULT_SEP = /[&;] */n
|
13
|
-
|
14
|
-
##
|
15
|
-
# Unescapes a URI escaped string with +encoding+. +encoding+ will be the
|
16
|
-
# target encoding of the string returned, and it defaults to UTF-8
|
17
|
-
#
|
18
|
-
# @param [String] s
|
19
|
-
# String to unescape.
|
20
|
-
#
|
21
|
-
# @param [Encoding] encoding
|
22
|
-
# Type of <code>Encoding</code>.
|
23
|
-
#
|
24
|
-
# @return [String] URI encoded string
|
25
|
-
#
|
26
|
-
# @raise [ArgumentError] if invalid Encoding is passed
|
27
|
-
#
|
28
|
-
# @example
|
29
|
-
#
|
30
|
-
# unescape('Test%20str')
|
31
|
-
# #=> "Test str"
|
32
|
-
#
|
33
|
-
# unescape('Test%20str', Encoding::WINDOWS_31J)
|
34
|
-
# #=> "Test str"
|
35
|
-
def unescape(s, encoding = Encoding::UTF_8)
|
36
|
-
URI.decode_www_form_component(s, encoding)
|
37
|
-
end
|
38
|
-
|
39
|
-
##
|
40
|
-
# Parse query string to a <code>Hash</code> by breaking it up
|
41
|
-
# at the '&' and ';' characters.
|
42
|
-
#
|
43
|
-
# @param [String] query
|
44
|
-
# query string
|
45
|
-
# @param [String] d
|
46
|
-
# delimiter for the params
|
47
|
-
# @yieldparam unescaper
|
48
|
-
# method, that will unescape the param value
|
49
|
-
#
|
50
|
-
# @return [Hash] query
|
51
|
-
#
|
52
|
-
# @example
|
53
|
-
#
|
54
|
-
# query = AlphaCard::Utils.parse_query("param1=value1¶ms2=")
|
55
|
-
# #=> {"param1"=>"value1", "params2"=>""}
|
56
|
-
#
|
57
|
-
# query = AlphaCard::Utils.parse_query("cars[]=Saab&cars[]=Audi")
|
58
|
-
# #=> {"cars[]"=>["Saab", "Audi"]}
|
59
|
-
def parse_query(query, d = nil, &unescaper)
|
60
|
-
unescaper ||= method(:unescape)
|
61
|
-
|
62
|
-
params = {}
|
63
|
-
|
64
|
-
(query || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p|
|
65
|
-
next if p.empty?
|
66
|
-
k, v = p.split('=', 2).map(&unescaper)
|
67
|
-
|
68
|
-
if cur = params[k]
|
69
|
-
if cur.class == Array
|
70
|
-
params[k] << v
|
71
|
-
else
|
72
|
-
params[k] = [cur, v]
|
73
|
-
end
|
74
|
-
else
|
75
|
-
params[k] = v
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
params
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
#encoding: utf-8
|
2
|
-
require "spec_helper"
|
3
|
-
|
4
|
-
describe AlphaCard::Utils do
|
5
|
-
it 'parse query strings correctly' do
|
6
|
-
expect(AlphaCard::Utils.parse_query("foo=bar")).to eq("foo" => "bar")
|
7
|
-
expect(AlphaCard::Utils.parse_query('cars[]=Saab&cars[]=Audi')).to eq({'cars[]' => ['Saab', 'Audi']})
|
8
|
-
expect(AlphaCard::Utils.parse_query("foo=bar&foo=quux")).to eq("foo" => ["bar", "quux"])
|
9
|
-
expect(AlphaCard::Utils.parse_query("foo=1&bar=2")).to eq("foo" => "1", "bar" => "2")
|
10
|
-
expect(AlphaCard::Utils.parse_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F")).to eq("my weird field" => "q1!2\"'w$5&7/z8)?")
|
11
|
-
expect(AlphaCard::Utils.parse_query("foo%3Dbaz=bar")).to eq("foo=baz" => "bar")
|
12
|
-
expect(AlphaCard::Utils.parse_query("=")).to eq("" => "")
|
13
|
-
expect(AlphaCard::Utils.parse_query("=value")).to eq("" => "value")
|
14
|
-
expect(AlphaCard::Utils.parse_query("key=")).to eq("key" => "")
|
15
|
-
expect(AlphaCard::Utils.parse_query("&key&")).to eq("key" => nil)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'unescape the characters correctly' do
|
19
|
-
expect(AlphaCard::Utils.unescape('%E9%9F%93', Encoding::UTF_8)).to eq('韓')
|
20
|
-
expect(AlphaCard::Utils.unescape("fo%3Co%3Ebar")).to eq("fo<o>bar")
|
21
|
-
expect(AlphaCard::Utils.unescape("a+space")).to eq("a space")
|
22
|
-
expect(AlphaCard::Utils.unescape("a%20space")).to eq("a space")
|
23
|
-
expect(AlphaCard::Utils.unescape("q1%212%22%27w%245%267%2Fz8%29%3F%5C")).to eq("q1!2\"'w$5&7/z8)?\\")
|
24
|
-
end
|
25
|
-
end
|