microbilt 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 88ce267b37e49604936cd217768fc20c04abd3cb
4
+ data.tar.gz: f0ad3812cfc5ffa60b6424c98992de6e0db3b449
5
+ SHA512:
6
+ metadata.gz: 21f54754661b7ff834109fb1522f6ac77a4b40ffb503fd6ee85355f083d45fc44f873de84a647cf37ffb44dae8375d5479c8f822312deb406278205112debe52
7
+ data.tar.gz: 0dc52c3f1d23a97cef84baf42740b7d3dfa255106c65a89f2363b40920286f0c2e5732043a3cda61c2a5a6941ff3eb28fb0abaf5fd0f2ace0cea2f6c858206ff
@@ -0,0 +1,19 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
13
+ /spec/reports
14
+
15
+ .env.test
16
+ .env.development
17
+ .env.production
18
+
19
+ .byebug_history
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.0
5
+ before_install: gem install bundler -v 1.14.6
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in microbilt.gemspec
4
+ gemspec
@@ -0,0 +1,26 @@
1
+ guard :rspec, cmd: "bundle exec rspec" do
2
+ require "guard/rspec/dsl"
3
+ dsl = Guard::RSpec::Dsl.new(self)
4
+
5
+ # Feel free to open issues for suggestions and improvements
6
+
7
+ # RSpec files
8
+ rspec = dsl.rspec
9
+ watch(rspec.spec_helper) { rspec.spec_dir }
10
+ watch(rspec.spec_support) { rspec.spec_dir }
11
+ watch(rspec.spec_files)
12
+
13
+ # Ruby files
14
+ ruby = dsl.ruby
15
+ dsl.watch_spec_files_for(ruby.lib_files)
16
+ end
17
+
18
+ if `uname` =~ /Darwin/
19
+ if !!system("lsof -i:23053", out: '/dev/null')
20
+ puts "Growl notifications enabled"
21
+ notification :gntp, app_name: "", activate: 'com.googlecode.iTerm2'
22
+ else
23
+ puts "Native macOS notifications enabled"
24
+ notification :terminal_notifier, app_name: "", activate: 'com.googlecode.iTerm2' if `uname` =~ /Darwin/
25
+ end
26
+ end
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Carl Mercier
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all 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,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,8 @@
1
+ # Microbilt
2
+
3
+ A simple library to interact with the Microbilt IBV web service.
4
+
5
+ ## License
6
+
7
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
8
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "microbilt"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,20 @@
1
+ require 'microbilt/version'
2
+ require 'microbilt/customer'
3
+ require 'microbilt/requests'
4
+
5
+ module Microbilt
6
+ autoload :Configuration, 'microbilt/configuration'
7
+
8
+ class << self
9
+ attr_writer :configuration
10
+ end
11
+
12
+ def self.configure
13
+ self.configuration ||= Configuration.new
14
+ yield(configuration)
15
+ end
16
+
17
+ def self.configuration
18
+ @configuration ||= Configuration.new
19
+ end
20
+ end
@@ -0,0 +1,40 @@
1
+ module Microbilt
2
+ class Configuration
3
+ PROD_SERVER_URL = 'https://creditserver.microbilt.com'
4
+ TEST_SERVER_URL = 'https://sdkstage.microbilt.com'
5
+
6
+ CREATE_FORM_URI = '/WebServices/IBV/Home/CreateForm'
7
+ GET_DATA_URI = '/WebServices/IBV/Home/GetData'
8
+ GET_HTML_DATA_URI = '/WebServices/gethtml/gethtml.aspx'
9
+ ADD_CUSTOMER_URI = '/WebServices/IBV/Home/AddCustomer'
10
+
11
+ CONTENT_TYPE = 'application/x-www-form-urlencoded'
12
+
13
+ attr_accessor :client_id, :client_password, :format, :server
14
+
15
+ def initialize
16
+ @format = :json
17
+ @server = :test
18
+ end
19
+
20
+ def to_params
21
+ validate_credentials!
22
+
23
+ {
24
+ 'MemberId' => client_id,
25
+ 'MemberPwd' => client_password
26
+ }
27
+ end
28
+
29
+ def server_url
30
+ server == :production ? PROD_SERVER_URL : TEST_SERVER_URL
31
+ end
32
+
33
+ protected
34
+
35
+ def validate_credentials!
36
+ raise ArgumentError.new("Invalid Client ID: #{client_id}") if client_id.to_s.empty?
37
+ raise ArgumentError.new("Invalid Client Password: #{client_password}") if client_id.to_s.empty?
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,104 @@
1
+ module Microbilt
2
+ class Customer
3
+
4
+ attr_accessor :first_name, :last_name, :sin, :date_of_birth, :address1, :address2,
5
+ :city, :state, :zip_code, :country, :home_phone, :mobile_phone,
6
+ :work_phone, :email, :bank_transit, :bank_account, :direct_deposit_amount,
7
+ :account_type, :direct_deposit_pay_cycle, :completion_email
8
+
9
+ VALID_ACCOUNT_TYPES = { checking: 100, savings: 101, cd: 102, money_market: 103,
10
+ credit_card: 200, line_of_credit: 201,
11
+ taxable_investment: 300, tax_deferred_investment: 301,
12
+ mortgage: 400, loan: 401,
13
+ annuity: 500, whole_life: 501,
14
+ rewards: 600, email: 650, biller: 675,
15
+ term_insurance: 701, asset: 908, liability: 955, other: 999
16
+ }
17
+
18
+ def initialize(options = nil)
19
+ options.keys.each do |k|
20
+ self.send("#{k}=", options[k])
21
+ end if options
22
+ end
23
+
24
+ def to_params
25
+ {
26
+ 'Customer.FirstName' => first_name,
27
+ 'Customer.LastName' => last_name,
28
+ 'Customer.SSN' => sin,
29
+ 'Customer.DOB' => formatted_date(date_of_birth),
30
+ 'Customer.Address' => formatted_address,
31
+ 'Customer.City' => city,
32
+ 'Customer.State' => state,
33
+ 'Customer.ZIP' => zip_code,
34
+ 'Customer.Country' => formatted_country,
35
+ 'Customer.Phone' => home_phone,
36
+ 'Customer.WorkPhone' => work_phone,
37
+ 'Customer.CellPhone' => mobile_phone,
38
+ 'Customer.Email' => email,
39
+ 'Customer.ABAnumber' => bank_transit,
40
+ 'Customer.AccountNumber' => bank_account,
41
+ 'Customer.DirectDepositAmount' => direct_deposit_amount,
42
+ 'Customer.DirectDepositPayCycle' => formatted_direct_deposit_pay_cycle,
43
+ 'Customer.CompletionEmail' => completion_email,
44
+ 'Customer.AccountType' => formatted_account_type
45
+ }
46
+ end
47
+
48
+ private
49
+
50
+ def formatted_date(d)
51
+ d.strftime('%m%d%Y')
52
+ end
53
+
54
+ def formatted_address
55
+ address = address1
56
+ address += "\n" + address2 unless address2.to_s.empty?
57
+ address
58
+ end
59
+
60
+ def microbilt_address(loan_application)
61
+ address = loan_application.address1
62
+ address += "\n" + loan_application.address2 if loan_application.address2.present?
63
+ address
64
+ end
65
+
66
+ def formatted_country
67
+ case country.upcase
68
+ when 'CA'
69
+ 'CAN'
70
+ when 'US'
71
+ 'USA'
72
+ else
73
+ raise ArgumentError.new "Unknown country '#{country}'"
74
+ end
75
+ end
76
+
77
+ def formatted_direct_deposit_pay_cycle
78
+ case direct_deposit_pay_cycle.to_s
79
+ when 'weekly'
80
+ 'Every week'
81
+ when 'biweekly'
82
+ 'Every other week'
83
+ when 'twicemonthly'
84
+ 'Two times a month'
85
+ when 'monthly'
86
+ 'Once a month'
87
+ else
88
+ direct_deposit_pay_cycle.to_s
89
+ end
90
+ end
91
+
92
+ def formatted_account_type
93
+ account_type_code = VALID_ACCOUNT_TYPES[account_type]
94
+
95
+ if !account_type_code.nil?
96
+ account_type_code
97
+ elsif !account_type.nil?
98
+ raise ArgumentError.new "Invalid account type: #{account_type}"
99
+ else
100
+ nil
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,8 @@
1
+ module Microbilt
2
+ module Requests
3
+ end
4
+ end
5
+
6
+ require 'microbilt/requests/helpers'
7
+ require 'microbilt/requests/create_form'
8
+
@@ -0,0 +1,118 @@
1
+ module Microbilt
2
+ module Requests
3
+ class CreateForm
4
+ include Microbilt::Requests::Helpers
5
+
6
+ attr_accessor :callback_url, :final_url
7
+ attr_reader :contact_by, :do_not_request_phones, :callback_type
8
+
9
+ def initialize(options = nil)
10
+ options.keys.each do |k|
11
+ self.send("#{k}=", options[k])
12
+ end if options
13
+
14
+ do_not_request_phones = false if do_not_request_phones.nil?
15
+ end
16
+
17
+ def to_params
18
+ {
19
+ 'CallbackUrl' => callback_url,
20
+ 'CallbackType' => callback_type.to_s,
21
+ 'FinalURL' => final_url,
22
+ 'ContactBy' => contact_by.to_s.upcase,
23
+ 'DoNotRequestPhones' => do_not_request_phones.to_s
24
+ }
25
+ end
26
+
27
+ def call(customer)
28
+ response = http_connection.post do |req|
29
+ req.url Microbilt::Configuration::CREATE_FORM_URI
30
+ req.headers['Content-Type'] = Microbilt::Configuration::CONTENT_TYPE
31
+ req.params = all_params(customer)
32
+ end
33
+
34
+ handle_response(response)
35
+ end
36
+
37
+ private
38
+
39
+ def handle_response(response)
40
+ output = output_template(response)
41
+
42
+ if output[:status] == :ok
43
+ token = parse_token(response.body)
44
+ output[:token] = token
45
+ output[:add_customer_form_url] = add_customer_url(token)
46
+ output[:get_data_url] = get_data_url(token)
47
+ output[:get_html_data_url] = get_html_data_url(token)
48
+ end
49
+
50
+ output
51
+ end
52
+
53
+ def output_template(response)
54
+ status = response.status.to_i
55
+
56
+ if status.between?(200, 299)
57
+ status = :ok
58
+ elsif status.between?(300, 399)
59
+ status = :redirect
60
+ elsif status.between?(400, 599)
61
+ status = :error
62
+ end
63
+
64
+ {
65
+ success: status == :ok,
66
+ status: status,
67
+ http_response: {
68
+ status: response.status,
69
+ body: response.body
70
+ }
71
+ }
72
+ end
73
+
74
+ def parse_token(response_body)
75
+ response_body.match(/{(.*)}/)[1]
76
+ end
77
+
78
+ def add_customer_url(token)
79
+ "#{Microbilt.configuration.server_url}#{Microbilt::Configuration::ADD_CUSTOMER_URI}?reference=#{token}"
80
+ end
81
+
82
+ def get_data_url(token)
83
+ "#{Microbilt.configuration.server_url}#{Microbilt::Configuration::GET_DATA_URI}?reference=#{token}"
84
+ end
85
+
86
+ def get_html_data_url(token)
87
+ "#{Microbilt.configuration.server_url}#{Microbilt::Configuration::GET_HTML_DATA_URI}?guid=#{token}"
88
+ end
89
+
90
+ def all_params(customer)
91
+ to_params.merge(Microbilt.configuration.to_params).merge(customer.to_params)
92
+ end
93
+
94
+ # Setters
95
+ def contact_by=(value)
96
+ raise ArgumentError.new("Invalid value: #{value}") unless
97
+ %i(sms email both neither).include?(value.to_sym)
98
+
99
+ @contact_by = value.to_sym
100
+ end
101
+
102
+ def do_not_request_phones=(value)
103
+ raise ArgumentError.new("Invalid value: #{value}") unless
104
+ value.is_a?(TrueClass) || value.is_a?(Falseclass)
105
+
106
+ @do_not_request_phones = value
107
+ end
108
+
109
+ def callback_type=(value)
110
+ raise ArgumentError.new("Invalid value: #{value}") unless
111
+ %i(json xml).include?(value.to_sym)
112
+
113
+ @callback_type = value.to_sym
114
+ end
115
+
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,11 @@
1
+ require 'faraday'
2
+
3
+ module Microbilt
4
+ module Requests
5
+ module Helpers
6
+ def http_connection
7
+ Faraday.new(url: Microbilt.configuration.server_url)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Microbilt
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,40 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'microbilt/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "microbilt"
8
+ spec.version = Microbilt::VERSION
9
+ spec.authors = ["Carl Mercier"]
10
+ spec.email = ["foss@carlmercier.com"]
11
+
12
+ spec.summary = %q{Simple library to interface with Microbilt's IBV API}
13
+ spec.description = %q{Simple library to interface with Microbilt's IBV API}
14
+ spec.homepage = "http://www.github.com/cmer/microbilt"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_dependency "faraday", "~> 0.12.0"
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.14"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rspec", "~> 3.0"
29
+ spec.add_development_dependency "simplecov", "~> 0.13"
30
+ spec.add_development_dependency "guard", "~> 2.14"
31
+ spec.add_development_dependency "guard-rspec", "~> 4.7.3"
32
+ spec.add_development_dependency "faker"
33
+ spec.add_development_dependency "factory_girl"
34
+ spec.add_development_dependency "dotenv"
35
+
36
+ if RUBY_PLATFORM =~ /darwin/
37
+ spec.add_development_dependency 'ruby_gntp', "~> 0.3.4"
38
+ spec.add_development_dependency 'terminal-notifier-guard', '~> 1.6.1'
39
+ end
40
+ end
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: microbilt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Carl Mercier
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-04-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.12.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.12.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.14'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.13'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.13'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.14'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.14'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 4.7.3
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 4.7.3
111
+ - !ruby/object:Gem::Dependency
112
+ name: faker
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: factory_girl
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: dotenv
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: ruby_gntp
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.3.4
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.3.4
167
+ - !ruby/object:Gem::Dependency
168
+ name: terminal-notifier-guard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 1.6.1
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 1.6.1
181
+ description: Simple library to interface with Microbilt's IBV API
182
+ email:
183
+ - foss@carlmercier.com
184
+ executables: []
185
+ extensions: []
186
+ extra_rdoc_files: []
187
+ files:
188
+ - ".gitignore"
189
+ - ".rspec"
190
+ - ".travis.yml"
191
+ - Gemfile
192
+ - Guardfile
193
+ - LICENSE.txt
194
+ - README.md
195
+ - Rakefile
196
+ - bin/console
197
+ - bin/setup
198
+ - lib/microbilt.rb
199
+ - lib/microbilt/configuration.rb
200
+ - lib/microbilt/customer.rb
201
+ - lib/microbilt/requests.rb
202
+ - lib/microbilt/requests/create_form.rb
203
+ - lib/microbilt/requests/helpers.rb
204
+ - lib/microbilt/version.rb
205
+ - microbilt.gemspec
206
+ homepage: http://www.github.com/cmer/microbilt
207
+ licenses:
208
+ - MIT
209
+ metadata: {}
210
+ post_install_message:
211
+ rdoc_options: []
212
+ require_paths:
213
+ - lib
214
+ required_ruby_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ requirements: []
225
+ rubyforge_project:
226
+ rubygems_version: 2.6.8
227
+ signing_key:
228
+ specification_version: 4
229
+ summary: Simple library to interface with Microbilt's IBV API
230
+ test_files: []