gateway_signup 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'gateway_signup'
3
+ s.version = '0.1.0'
4
+ s.date = '2014-01-28'
5
+ s.summary = "Spreedly Gateway Registration Field Lookup"
6
+ s.description = "Small library for reading a config and returning the fields required to register a specific gateway with Spreedly"
7
+ s.authors = ["Glen Holcomb"]
8
+ s.email = 'dev@atpay.com'
9
+ s.files = `git ls-files`.split($/)
10
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
11
+ s.homepage = "https://github.com/atpay/gateway_signup"
12
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
13
+ s.add_runtime_dependency 'sqlite3'
14
+ end
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/Gemfile ADDED
@@ -0,0 +1 @@
1
+ gem 'sqlite3'
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 @Pay
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ gateway_signup
2
+ ==============
@@ -0,0 +1,18 @@
1
+ module GatewaySignup
2
+ class ConfigEngine
3
+ class << self
4
+ def source(type, options)
5
+ case type
6
+ when :yaml
7
+ require File.dirname(File.absolute_path __FILE__) + '/engines/yaml'
8
+ Engines::Yaml.new(options)
9
+ when :sqlite
10
+ require File.dirname(File.absolute_path __FILE__) + '/engines/sqlite'
11
+ Engines::Sqlite.new(options)
12
+ else
13
+ raise "Bad Source Type: #{type}"
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,89 @@
1
+ module GatewaySignup
2
+ module Engines
3
+ require 'sqlite3'
4
+
5
+ class Sqlite
6
+ def initialize(args)
7
+ @db = Sqlite3::Database.new args[:db]
8
+ end
9
+
10
+ def setup_db(force)
11
+ force ? force_create : soft_create
12
+ end
13
+
14
+ def gateways
15
+ results = []
16
+
17
+ @db.execute("select * from gateways") do |row|
18
+ results << row[:name]
19
+ end
20
+
21
+ results
22
+ end
23
+
24
+ def details(gateway)
25
+
26
+ end
27
+
28
+ def fields_for(gateway)
29
+ id = @db.execute "select id from gateways where name = ?", gateway
30
+
31
+ @db.execute <<-SQL
32
+ select * from fields
33
+ left outer join gateways_fields
34
+ on gateways_fields.field_id = fields.id
35
+ where gateways_fields.gateway_id = ?;
36
+ SQL
37
+ end
38
+
39
+
40
+ private
41
+
42
+ def force_create
43
+ drop_tables
44
+
45
+ create_gateway_table
46
+ create_field_table
47
+ create_gateway_field_table
48
+ end
49
+
50
+ def soft_create
51
+
52
+ end
53
+
54
+ def create_gateway_table
55
+ @db.ecexute <<-SQL
56
+ create table if not exists gateways (
57
+ id integer_primary_key,
58
+ name varchar(255),
59
+ country varchar(255),
60
+ display_name varchar(255)
61
+ );
62
+ SQL
63
+ end
64
+
65
+ def create_field_table
66
+ @db.execute <<-SQL
67
+ create table if not exists fields (
68
+ id integer_primary_key,
69
+ type varchar(255),
70
+ val varchar(255)
71
+ );
72
+ SQL
73
+ end
74
+
75
+ def create_gateway_field_table
76
+ @db.execute <<-SQL
77
+ create table if not exists gateways_fields (
78
+ gateway_id int,
79
+ field_id int
80
+ );
81
+ SQL
82
+ end
83
+
84
+ def drop_tables
85
+ @db.execute
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,27 @@
1
+ module GatewaySignup
2
+ module Engines
3
+ require 'yaml'
4
+
5
+ class Yaml
6
+ def initialize(file)
7
+ @gw_data = YAML.load_file file
8
+ end
9
+
10
+ def fields_for(gateway)
11
+ @gw_data[gateway.to_sym][:fields]
12
+ end
13
+
14
+ def gateways
15
+ @gw_data.keys
16
+ end
17
+
18
+ def details(gateway)
19
+ @gw_data[gateway.to_sym]
20
+ end
21
+
22
+ def for_country(country)
23
+ gateways.select { |gw| @gw_data[gw][:countries].include? country }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module GatewaySignup
2
+ class Registry
3
+ def initialize(args)
4
+ @config = ConfigEngine.source args[:format], args[:location]
5
+ end
6
+
7
+ def setup_sqlite(force)
8
+ @config.setup_db force
9
+ end
10
+
11
+ def gateways
12
+ @config.gateways
13
+ end
14
+
15
+ def fields_for(gateway)
16
+ @config.fields_for gateway
17
+ end
18
+
19
+ def details(gateway)
20
+ @config.details gateway
21
+ end
22
+
23
+ def for_country(country)
24
+ @config.for_country country
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,4 @@
1
+ require File.dirname(File.absolute_path __FILE__) + '/gateway_signup/registry'
2
+ require File.dirname(File.absolute_path __FILE__) + '/gateway_signup/config_engine'
3
+
4
+ module GatewaySignup; end
@@ -0,0 +1,149 @@
1
+ :authorize_net:
2
+ :display_name: Authorize.Net
3
+ :country: US
4
+ :fields:
5
+
6
+ :balanced:
7
+ :display_name: Balanced
8
+ :country: US
9
+ :fields:
10
+
11
+ :bean_stream:
12
+ :display_name: BeanStream
13
+ :country: US
14
+ :fields:
15
+
16
+ :blue_pay:
17
+ :display_name: BluePay
18
+ :country: US
19
+ :fields:
20
+
21
+ :brain_tree:
22
+ :display_name: BrainTree
23
+ :country: US
24
+ :fields:
25
+
26
+ :cyber_source:
27
+ :display_name: CyberSource
28
+ :country: US
29
+ :fields:
30
+
31
+ :dwolla:
32
+ :display_name: Dwolla
33
+ :country: US
34
+ :fields:
35
+
36
+ :elavon:
37
+ :display_name: Elavon
38
+ :country: US
39
+ :fields:
40
+
41
+ :first_data_e4:
42
+ :display_name: First Data e4
43
+ :country: US
44
+ :fields:
45
+
46
+ :first_data_global_gateway:
47
+ :display_name: First Data Global Gateway
48
+ :country: US
49
+ :fields:
50
+
51
+ :jet_pay:
52
+ :display_name: JetPay
53
+ :country: US
54
+ :fields:
55
+
56
+ :litle:
57
+ :display_name: Litle
58
+ :country: US
59
+ :fields:
60
+
61
+ :merchant_e_solutions:
62
+ :display_name: Merchant e-Solutions
63
+ :country: US
64
+ :fields:
65
+
66
+ :mercury:
67
+ :display_name: Mercury
68
+ :country: US
69
+ :fields:
70
+
71
+ :net_billing:
72
+ :display_name: NETbilling
73
+ :country: US
74
+ :fields:
75
+
76
+ :nmi:
77
+ :display_name: NMI
78
+ :country: US
79
+ :fields:
80
+
81
+ :paymentech_orbital_gateway:
82
+ :display_name: Paymentech Orbital Gateway
83
+ :country: US
84
+ :fields:
85
+
86
+ :payflow_pro:
87
+ :display_name: Payflow Pro
88
+ :country: US
89
+ :fields:
90
+
91
+ :payment_express:
92
+ :display_name: Payment Express
93
+ :country: US
94
+ :fields:
95
+
96
+ :pay_pal:
97
+ :display_name: PayPal
98
+ :country: US
99
+ :fields:
100
+
101
+ :quick_books_merchant_services:
102
+ :display_name: QuickBooks Merchant Services
103
+ :country: US
104
+ :fields:
105
+
106
+ :quantum:
107
+ :display_name: Quantum
108
+ :country: US
109
+ :fields:
110
+
111
+ :sage_payment_solutions:
112
+ :display_name: Sage Payment Solutions
113
+ :country: US
114
+ :fields:
115
+
116
+ :secure_net:
117
+ :display_name: SecureNet
118
+ :country: US
119
+ :fields:
120
+
121
+ :stripe:
122
+ :display_name: Stripe
123
+ :country: US
124
+ :fields:
125
+
126
+ :spreedly_test:
127
+ :display_name: Spreedly Test
128
+ :country: US
129
+ :fields:
130
+
131
+ :trans_first:
132
+ :display_name: TransFirst
133
+ :country: US
134
+ :fields:
135
+
136
+ :trust_commerce:
137
+ :display_name: TrustCommerce
138
+ :country: US
139
+ :fields:
140
+
141
+ :usa_epay:
142
+ :display_name: USA ePay
143
+ :country: US
144
+ :fields:
145
+
146
+ :world_pay:
147
+ :display_name: WorldPay
148
+ :country: US
149
+ :fields:
@@ -0,0 +1,8 @@
1
+ :firstdata:
2
+ :fields:
3
+ -
4
+ - input
5
+ - name
6
+ -
7
+ - input
8
+ - address
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gateway_signup
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Glen Holcomb
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sqlite3
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Small library for reading a config and returning the fields required
31
+ to register a specific gateway with Spreedly
32
+ email: dev@atpay.com
33
+ executables: []
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - .gateway_signup.gemspec
38
+ - .gitignore
39
+ - Gemfile
40
+ - LICENSE
41
+ - README.md
42
+ - lib/gateway_signup.rb
43
+ - lib/gateway_signup/config_engine.rb
44
+ - lib/gateway_signup/engines/sqlite.rb
45
+ - lib/gateway_signup/engines/yaml.rb
46
+ - lib/gateway_signup/registry.rb
47
+ - spec/support/gateways.yml
48
+ - spec/support/gw.yml
49
+ homepage: https://github.com/atpay/gateway_signup
50
+ licenses: []
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 1.8.23
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: Spreedly Gateway Registration Field Lookup
73
+ test_files:
74
+ - spec/support/gateways.yml
75
+ - spec/support/gw.yml