quickbooks-payments 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - '2.1.6'
4
+ - rbx
5
+ script: bundle exec rspec
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ # A sample Gemfile
2
+ source 'https://rubygems.org'
3
+
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,102 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ quickbooks-payments (0.0.7)
5
+ oauth (~> 0.4)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.3.8)
11
+ ast (2.1.0)
12
+ astrolabe (1.3.1)
13
+ parser (~> 2.2)
14
+ awesome_print (1.6.1)
15
+ coderay (1.1.0)
16
+ crack (0.4.2)
17
+ safe_yaml (~> 1.0.0)
18
+ diff-lcs (1.2.5)
19
+ ffi (1.9.10)
20
+ formatador (0.2.5)
21
+ guard (2.12.8)
22
+ formatador (>= 0.2.4)
23
+ listen (>= 2.7, <= 4.0)
24
+ lumberjack (~> 1.0)
25
+ nenv (~> 0.1)
26
+ notiffany (~> 0.0)
27
+ pry (>= 0.9.12)
28
+ shellany (~> 0.0)
29
+ thor (>= 0.18.1)
30
+ guard-compat (1.2.1)
31
+ guard-rspec (4.6.0)
32
+ guard (~> 2.1)
33
+ guard-compat (~> 1.1)
34
+ rspec (>= 2.99.0, < 4.0)
35
+ listen (3.0.1)
36
+ rb-fsevent (>= 0.9.3)
37
+ rb-inotify (>= 0.9)
38
+ lumberjack (1.0.9)
39
+ method_source (0.8.2)
40
+ nenv (0.2.0)
41
+ notiffany (0.0.6)
42
+ nenv (~> 0.1)
43
+ shellany (~> 0.0)
44
+ oauth (0.4.7)
45
+ parser (2.2.2.6)
46
+ ast (>= 1.1, < 3.0)
47
+ powerpack (0.1.1)
48
+ pry (0.10.1)
49
+ coderay (~> 1.1.0)
50
+ method_source (~> 0.8.1)
51
+ slop (~> 3.4)
52
+ rainbow (2.0.0)
53
+ rake (10.4.2)
54
+ rb-fsevent (0.9.5)
55
+ rb-inotify (0.9.5)
56
+ ffi (>= 0.5.0)
57
+ rspec (3.3.0)
58
+ rspec-core (~> 3.3.0)
59
+ rspec-expectations (~> 3.3.0)
60
+ rspec-mocks (~> 3.3.0)
61
+ rspec-core (3.3.1)
62
+ rspec-support (~> 3.3.0)
63
+ rspec-expectations (3.3.0)
64
+ diff-lcs (>= 1.2.0, < 2.0)
65
+ rspec-support (~> 3.3.0)
66
+ rspec-its (1.2.0)
67
+ rspec-core (>= 3.0.0)
68
+ rspec-expectations (>= 3.0.0)
69
+ rspec-mocks (3.3.1)
70
+ diff-lcs (>= 1.2.0, < 2.0)
71
+ rspec-support (~> 3.3.0)
72
+ rspec-support (3.3.0)
73
+ rubocop (0.33.0)
74
+ astrolabe (~> 1.3)
75
+ parser (>= 2.2.2.5, < 3.0)
76
+ powerpack (~> 0.1)
77
+ rainbow (>= 1.99.1, < 3.0)
78
+ ruby-progressbar (~> 1.4)
79
+ ruby-progressbar (1.7.5)
80
+ safe_yaml (1.0.4)
81
+ shellany (0.0.1)
82
+ slop (3.6.0)
83
+ terminal-notifier (1.6.2)
84
+ thor (0.19.1)
85
+ webmock (1.21.0)
86
+ addressable (>= 2.3.6)
87
+ crack (>= 0.3.2)
88
+
89
+ PLATFORMS
90
+ ruby
91
+
92
+ DEPENDENCIES
93
+ awesome_print (~> 1)
94
+ bundler (~> 1.8)
95
+ guard-rspec (~> 4)
96
+ quickbooks-payments!
97
+ rake (~> 10.0)
98
+ rspec (~> 3)
99
+ rspec-its (~> 1)
100
+ rubocop (~> 0.33)
101
+ terminal-notifier (~> 1)
102
+ webmock (~> 1)
data/Guardfile ADDED
@@ -0,0 +1,70 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ # Note: The cmd option is now required due to the increasing number of ways
19
+ # rspec may be run, below are examples of the most common uses.
20
+ # * bundler: 'bundle exec rspec'
21
+ # * bundler binstubs: 'bin/rspec'
22
+ # * spring: 'bin/rspec' (This will use spring if running and you have
23
+ # installed the spring binstubs per the docs)
24
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
25
+ # * 'just' rspec: 'rspec'
26
+
27
+ guard :rspec, cmd: 'bundle exec rspec', failed_mode: :keep do
28
+ require 'guard/rspec/dsl'
29
+ dsl = Guard::RSpec::Dsl.new(self)
30
+
31
+ # Feel free to open issues for suggestions and improvements
32
+
33
+ # RSpec files
34
+ rspec = dsl.rspec
35
+ watch(rspec.spec_helper) { rspec.spec_dir }
36
+ watch(rspec.spec_support) { rspec.spec_dir }
37
+ watch(rspec.spec_files)
38
+
39
+ # Ruby files
40
+ ruby = dsl.ruby
41
+ dsl.watch_spec_files_for(ruby.lib_files)
42
+
43
+ # Rails files
44
+ rails = dsl.rails(view_extensions: %w(erb haml slim))
45
+ dsl.watch_spec_files_for(rails.app_files)
46
+ dsl.watch_spec_files_for(rails.views)
47
+
48
+ watch(rails.controllers) do |m|
49
+ [
50
+ rspec.spec.("routing/#{m[1]}_routing"),
51
+ rspec.spec.("controllers/#{m[1]}_controller"),
52
+ rspec.spec.("acceptance/#{m[1]}")
53
+ ]
54
+ end
55
+
56
+ # Rails config changes
57
+ watch(rails.spec_helper) { rspec.spec_dir }
58
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
59
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
60
+
61
+ # Capybara features specs
62
+ watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") }
63
+ watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") }
64
+
65
+ # Turnip features and steps
66
+ watch(%r{^spec/acceptance/(.+)\.feature$})
67
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
68
+ Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance'
69
+ end
70
+ end
data/README.md ADDED
@@ -0,0 +1,8 @@
1
+ # quickbooks-payments
2
+
3
+ [![Build Status](https://travis-ci.org/danielma/quickbooks-payments.svg?branch=master)](https://travis-ci.org/danielma/quickbooks-payments)
4
+ [![Documentation Coverage](https://inch-ci.org/github/danielma/quickbooks-payments.svg?branch=master)](https://inch-ci.org/github/danielma/quickbooks-payments.svg?branch=master)
5
+
6
+ Ruby interface for the Intuit Quickbooks payments API
7
+
8
+ <https://developer.intuit.com/docs/api/payments>
@@ -0,0 +1,25 @@
1
+ module Quickbooks
2
+ module Payments
3
+ # Basic JSON backed model
4
+ class BasicModel
5
+ attr_accessor :json
6
+
7
+ def initialize(json = {})
8
+ self.json = json
9
+
10
+ json.each do |key, value|
11
+ setter = "#{key}="
12
+ send(setter, value) if respond_to?(setter)
13
+ end
14
+ end
15
+
16
+ # Getters
17
+
18
+ def to_json
19
+ instance_variables.each_with_object({}) do |variable, sum|
20
+ sum[variable[1..-1]] = instance_variable_get variable
21
+ end.to_json
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,86 @@
1
+ require 'securerandom'
2
+
3
+ module Quickbooks
4
+ module Payments
5
+ # Represents a charge
6
+ #
7
+ # Create a charge by using `Charge.create()`
8
+ class Charge < BasicModel
9
+ @root_url = '/quickbooks/v4/payments/charges'
10
+
11
+ attr_accessor :status, :amount, :currency, :token, :id, :auth_code,
12
+ :request_id
13
+ attr_reader :created_at
14
+
15
+ alias_method :authCode=, :auth_code=
16
+
17
+ # Statuses
18
+ class Statuses
19
+ AUTHORIZED = 'AUTHORIZED'
20
+ CAPTURED = 'CAPTURED'
21
+ DECLINED = 'DECLINED'
22
+ CANCELLED = 'CANCELLED'
23
+ SETTLED = 'SETTLED'
24
+ REFUNEDED = 'REFUNDED'
25
+ end
26
+
27
+ class << self
28
+ def create(options = {})
29
+ options = validate_options options
30
+
31
+ request_id = SecureRandom.uuid
32
+
33
+ response = Quickbooks::Payments::Request.post(
34
+ @root_url,
35
+ options,
36
+ 'Request-Id' => request_id)
37
+
38
+ new response.merge request_id: request_id
39
+ end
40
+
41
+ private
42
+
43
+ def validate_options(options = {})
44
+ options = options.symbolize_keys
45
+
46
+ ensure_required_options options
47
+ verify_allowed_options options
48
+
49
+ options
50
+ end
51
+
52
+ def ensure_required_options(options)
53
+ fail NoTokenError if options[:token].nil?
54
+ fail NoCurrencyError if options[:currency].nil?
55
+ fail NoAmountError if options[:amount].nil?
56
+ end
57
+
58
+ def allowed_options
59
+ @allowed_options ||= %w(token amount currency cardOnFile card context
60
+ capture description)
61
+ .map { |v| [v.to_sym, true] }
62
+ .to_h
63
+ end
64
+
65
+ def verify_allowed_options(options)
66
+ options.keys.each do |k|
67
+ allowed_options.key?(k) ||
68
+ fail(ArgumentError.new, "Unsupported option #{k}")
69
+ end
70
+ end
71
+ end
72
+
73
+ # Setters
74
+
75
+ def created_at=(string_or_time)
76
+ @created_at = if string_or_time.is_a?(Time)
77
+ string_or_time
78
+ else
79
+ Time.parse(string_or_time)
80
+ end
81
+ end
82
+
83
+ alias_method :created=, :created_at=
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,7 @@
1
+ module Quickbooks::Payments
2
+ class NoAccessTokenError < RuntimeError; end
3
+
4
+ class NoTokenError < ArgumentError; end
5
+ class NoCurrencyError < ArgumentError; end
6
+ class NoAmountError < ArgumentError; end
7
+ end
@@ -0,0 +1,69 @@
1
+ module Quickbooks
2
+ module Payments
3
+ # Create Requests
4
+ class Request
5
+ class << self
6
+ %w(get delete head).each do |meth|
7
+ define_method meth do |endpoint, headers = {}|
8
+ request meth, endpoint, headers
9
+ end
10
+ end
11
+
12
+ %w(post put).each do |body_meth|
13
+ define_method body_meth do |endpoint, body = '', headers = {}|
14
+ request_with_body body_meth, endpoint, body, headers
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def root
21
+ if Quickbooks::Payments.sandbox_mode
22
+ 'https://sandbox.api.intuit.com'
23
+ else
24
+ 'https://api.intuit.com'
25
+ end
26
+ end
27
+
28
+ def get_url(relative_url = '')
29
+ "#{root}#{relative_url}"
30
+ end
31
+
32
+ def ensure_access_token(method)
33
+ @access_token = Quickbooks::Payments.access_token
34
+
35
+ fail NoAccessTokenError unless @access_token.respond_to?(method)
36
+ end
37
+
38
+ def request(method, endpoint, headers = {})
39
+ ensure_access_token method
40
+
41
+ parse_json @access_token.public_send(method, get_url(endpoint),
42
+ default_headers.merge(headers))
43
+ end
44
+
45
+ def request_with_body(method, endpoint, body = '', headers = {})
46
+ ensure_access_token method
47
+
48
+ body = body.to_json unless body.respond_to?(:to_str)
49
+
50
+ parse_json @access_token.public_send(method, get_url(endpoint), body,
51
+ default_headers.merge(headers))
52
+ end
53
+
54
+ def parse_json(response)
55
+ JSON.parse response.body
56
+ rescue
57
+ { error: 'JSON_UNPARSEABLE', body: response.body, response: response }
58
+ end
59
+
60
+ def default_headers
61
+ {
62
+ 'Content-Type' => 'application/json',
63
+ 'Accept' => 'application/json'
64
+ }
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,7 @@
1
+ class Hash
2
+ def symbolize_keys
3
+ each_with_object({}) do |(k, v), memo|
4
+ memo[k.to_sym] = v
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module Quickbooks
2
+ module Payments
3
+ VERSION = '0.0.7'
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ require 'oauth'
2
+ require 'json'
3
+ require 'time'
4
+
5
+ module Quickbooks; end
6
+
7
+ require_relative 'quickbooks-payments/utils'
8
+ require_relative 'quickbooks-payments/errors'
9
+ require_relative 'quickbooks-payments/basic_model'
10
+ require_relative 'quickbooks-payments/charge'
11
+ require_relative 'quickbooks-payments/request'
12
+
13
+ module Quickbooks
14
+ module Payments
15
+ class << self
16
+ attr_accessor :access_token
17
+ attr_writer :sandbox_mode
18
+
19
+ def sandbox_mode
20
+ @sandbox_mode || false
21
+ end
22
+ end
23
+ end
24
+ end
data/oauth_flow.rb ADDED
@@ -0,0 +1,35 @@
1
+ # rubocop:disable all
2
+
3
+ require 'oauth'
4
+ require 'awesome_print'
5
+
6
+ credentials_txt = File.read('./CREDENTIALS')
7
+
8
+ credentials = {}
9
+
10
+ credentials_txt.split.each do |line|
11
+ key, value = line.split('=')
12
+ credentials[key] = value
13
+ end
14
+
15
+ consumer_key = credentials['CONSUMER_KEY']
16
+ consumer_secret = credentials['CONSUMER_SECRET']
17
+
18
+ consumer = OAuth::Consumer.new consumer_key, consumer_secret,
19
+ site: 'https://oauth.intuit.com',
20
+ request_token_path: '/oauth/v1/get_request_token',
21
+ authorize_url: 'https://appcenter.intuit.com/Connect/Begin',
22
+ access_token_path: '/oauth/v1/get_access_token'
23
+
24
+ request_token = consumer.get_request_token(oauth_callback: 'http://anyurliwant.dev/yeahdude/')
25
+ ap "https://appcenter.intuit.com/Connect/Begin?oauth_token=#{request_token.token}"
26
+
27
+ ap 'give me verifier'
28
+ verifier = gets.chomp
29
+
30
+ at = request_token.get_access_token oauth_verifier: verifier
31
+
32
+ ap 'token'
33
+ ap at.token
34
+ ap 'secret'
35
+ ap at.secret
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'quickbooks-payments/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'quickbooks-payments'
8
+ spec.version = Quickbooks::Payments::VERSION
9
+ spec.authors = ['Daniel Ma']
10
+ spec.email = ['drailskid@yahoo.com']
11
+
12
+ spec.summary = 'Quickbooks Payments for Ruby'
13
+ spec.description = 'Ruby Gem to use the Quickbooks Payments REST API'
14
+ spec.homepage = 'https://github.com/danielma/quickbooks-payments'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ .reject { |f| f.match(%r{^(test|spec|features)/}) }
19
+
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_development_dependency 'bundler', '~> 1.8'
25
+ spec.add_development_dependency 'rspec', '~> 3'
26
+ spec.add_development_dependency 'guard-rspec', '~> 4'
27
+ spec.add_development_dependency 'terminal-notifier', '~> 1'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'awesome_print', '~> 1'
30
+ spec.add_development_dependency 'webmock', '~> 1'
31
+ spec.add_development_dependency 'rspec-its', '~> 1'
32
+ spec.add_development_dependency 'rubocop', '~> 0.33'
33
+
34
+ spec.add_dependency 'oauth', '~> 0.4'
35
+ end
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: quickbooks-payments
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Ma
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: guard-rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: terminal-notifier
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: awesome_print
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-its
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.33'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.33'
139
+ - !ruby/object:Gem::Dependency
140
+ name: oauth
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.4'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.4'
153
+ description: Ruby Gem to use the Quickbooks Payments REST API
154
+ email:
155
+ - drailskid@yahoo.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - ".gitignore"
161
+ - ".hound.yml"
162
+ - ".rspec"
163
+ - ".rubocop.yml"
164
+ - ".travis.yml"
165
+ - Gemfile
166
+ - Gemfile.lock
167
+ - Guardfile
168
+ - README.md
169
+ - lib/quickbooks-payments.rb
170
+ - lib/quickbooks-payments/basic_model.rb
171
+ - lib/quickbooks-payments/charge.rb
172
+ - lib/quickbooks-payments/errors.rb
173
+ - lib/quickbooks-payments/request.rb
174
+ - lib/quickbooks-payments/utils.rb
175
+ - lib/quickbooks-payments/version.rb
176
+ - oauth_flow.rb
177
+ - quickbooks-payments.gemspec
178
+ homepage: https://github.com/danielma/quickbooks-payments
179
+ licenses:
180
+ - MIT
181
+ metadata: {}
182
+ post_install_message:
183
+ rdoc_options: []
184
+ require_paths:
185
+ - lib
186
+ required_ruby_version: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: '0'
191
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ requirements: []
197
+ rubyforge_project:
198
+ rubygems_version: 2.2.2
199
+ signing_key:
200
+ specification_version: 4
201
+ summary: Quickbooks Payments for Ruby
202
+ test_files: []