fattura24 1.0.0

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.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +2 -0
  3. data/Gemfile +8 -0
  4. data/LICENSE +21 -0
  5. data/README.md +186 -0
  6. data/Rakefile +16 -0
  7. data/docs/Fattura24.html +197 -0
  8. data/docs/Fattura24/Api.html +497 -0
  9. data/docs/Fattura24/Api/Response.html +371 -0
  10. data/docs/Fattura24/Configuration.html +176 -0
  11. data/docs/Fattura24/DocumentType.html +133 -0
  12. data/docs/Fattura24/Error.html +104 -0
  13. data/docs/Fattura24/InvalidParams.html +104 -0
  14. data/docs/Fattura24/MissingApiKey.html +157 -0
  15. data/docs/Fattura24/MissingInput.html +104 -0
  16. data/docs/Fattura24/NotSerializable.html +104 -0
  17. data/docs/Fattura24/Utils.html +232 -0
  18. data/docs/README_md.html +273 -0
  19. data/docs/created.rid +10 -0
  20. data/docs/css/fonts.css +167 -0
  21. data/docs/css/rdoc.css +619 -0
  22. data/docs/fonts/Lato-Light.ttf +0 -0
  23. data/docs/fonts/Lato-LightItalic.ttf +0 -0
  24. data/docs/fonts/Lato-Regular.ttf +0 -0
  25. data/docs/fonts/Lato-RegularItalic.ttf +0 -0
  26. data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
  27. data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
  28. data/docs/images/add.png +0 -0
  29. data/docs/images/arrow_up.png +0 -0
  30. data/docs/images/brick.png +0 -0
  31. data/docs/images/brick_link.png +0 -0
  32. data/docs/images/bug.png +0 -0
  33. data/docs/images/bullet_black.png +0 -0
  34. data/docs/images/bullet_toggle_minus.png +0 -0
  35. data/docs/images/bullet_toggle_plus.png +0 -0
  36. data/docs/images/date.png +0 -0
  37. data/docs/images/delete.png +0 -0
  38. data/docs/images/find.png +0 -0
  39. data/docs/images/loadingAnimation.gif +0 -0
  40. data/docs/images/macFFBgHack.png +0 -0
  41. data/docs/images/package.png +0 -0
  42. data/docs/images/page_green.png +0 -0
  43. data/docs/images/page_white_text.png +0 -0
  44. data/docs/images/page_white_width.png +0 -0
  45. data/docs/images/plugin.png +0 -0
  46. data/docs/images/ruby.png +0 -0
  47. data/docs/images/tag_blue.png +0 -0
  48. data/docs/images/tag_green.png +0 -0
  49. data/docs/images/transparent.png +0 -0
  50. data/docs/images/wrench.png +0 -0
  51. data/docs/images/wrench_orange.png +0 -0
  52. data/docs/images/zoom.png +0 -0
  53. data/docs/index.html +283 -0
  54. data/docs/js/darkfish.js +84 -0
  55. data/docs/js/navigation.js +105 -0
  56. data/docs/js/navigation.js.gz +0 -0
  57. data/docs/js/search.js +110 -0
  58. data/docs/js/search_index.js +1 -0
  59. data/docs/js/search_index.js.gz +0 -0
  60. data/docs/js/searcher.js +229 -0
  61. data/docs/js/searcher.js.gz +0 -0
  62. data/docs/table_of_contents.html +216 -0
  63. data/fattura24.gemspec +54 -0
  64. data/lib/fattura24.rb +28 -0
  65. data/lib/fattura24/api/client.rb +160 -0
  66. data/lib/fattura24/api/response.rb +70 -0
  67. data/lib/fattura24/configuration.rb +14 -0
  68. data/lib/fattura24/document_type.rb +15 -0
  69. data/lib/fattura24/errors.rb +20 -0
  70. data/lib/fattura24/utils.rb +38 -0
  71. data/lib/fattura24/version.rb +5 -0
  72. metadata +267 -0
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'fattura24/version'
6
+
7
+ file_regex = /^(
8
+ \.env.example|
9
+ \.dockerignore|
10
+ \.gitignore|
11
+ \.rspec|
12
+ \.rubocop.yml|
13
+ \.ruby-version|
14
+ \.travis.yml|
15
+ \.codeclimate.yml|
16
+ Makefile|
17
+ Dockerfile\.|
18
+ test|
19
+ spec|
20
+ bin
21
+ )/x
22
+
23
+ Gem::Specification.new do |spec|
24
+ spec.name = 'fattura24'
25
+ spec.version = Fattura24::VERSION
26
+ spec.authors = ['Stefano Nada']
27
+ spec.email = ['stefano.nada@gmail.com']
28
+
29
+ spec.summary = 'Ruby wrapper for fattura24 apis'
30
+ spec.description = 'Minimal Ruby 2 wrapper for fattura24 apis.'
31
+ spec.homepage = 'https://github.com/snada/fattura24'
32
+ spec.license = 'MIT'
33
+
34
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
35
+ `git ls-files -z`.split("\x0").reject do |f|
36
+ f.match(file_regex)
37
+ end
38
+ end
39
+
40
+ spec.require_paths = ['lib']
41
+
42
+ spec.add_runtime_dependency 'activesupport', '> 4.2'
43
+ spec.add_runtime_dependency 'builder'
44
+
45
+ spec.add_development_dependency 'bundler', '~> 2.1'
46
+ spec.add_development_dependency 'dotenv', '~> 2.7'
47
+ spec.add_development_dependency 'pry', '~> 0.13'
48
+ spec.add_development_dependency 'rake', '~> 13.0'
49
+ spec.add_development_dependency 'rdoc', '~> 6.1'
50
+ spec.add_development_dependency 'rspec', '~> 3.9'
51
+ spec.add_development_dependency 'rubocop', '~> 0.82'
52
+ spec.add_development_dependency 'simplecov', '~> 0.17.0'
53
+ spec.add_development_dependency 'webmock', '~> 3.8'
54
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/hash'
4
+ require 'active_support/core_ext/string'
5
+
6
+ require 'fattura24/api/client'
7
+ require 'fattura24/api/response'
8
+
9
+ require 'fattura24/configuration'
10
+ require 'fattura24/document_type'
11
+ require 'fattura24/errors'
12
+ require 'fattura24/utils'
13
+ require 'fattura24/version'
14
+
15
+ module Fattura24
16
+ ##
17
+ # Returns current configuration object
18
+ def self.configuration
19
+ @configuration ||= Configuration.new
20
+ end
21
+
22
+ ##
23
+ # Calling this method will yield to a block
24
+ # passing the +configuration+ object as parameter.
25
+ def self.configure
26
+ yield configuration
27
+ end
28
+ end
@@ -0,0 +1,160 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/http'
4
+
5
+ module Fattura24
6
+ module Api
7
+ ##
8
+ # This library uses {fattura24.com}[https://fattura24.com] v0.3 apis.
9
+ # Check their docs {here}[https://www.fattura24.com/api-documentazione/].
10
+ API_HOST = 'https://www.app.fattura24.com/api/v0.3'
11
+
12
+ ##
13
+ # Performs a generic request on the api endpoint using Ruby's
14
+ # {Net::HTTP}[https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html].
15
+ # All the other api methods call this one.
16
+ # Parameter +path+ should always be prepended with '/'.
17
+ # Body will default to an empty hash.
18
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
19
+ def self.request(path, body = {})
20
+ raise Fattura24::MissingApiKey unless Fattura24.configuration.api_key
21
+
22
+ uri = URI.parse("#{API_HOST}#{path}")
23
+ request = Net::HTTP::Post.new(uri)
24
+ request.set_form_data(inject_api_key(body))
25
+
26
+ req_options = { use_ssl: uri.scheme == 'https' }
27
+ response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
28
+ http.request(request)
29
+ end
30
+
31
+ Response.new(response)
32
+ end
33
+
34
+ ##
35
+ # Tests validity of your api key.
36
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
37
+ def self.test_key
38
+ request('/TestKey')
39
+ end
40
+
41
+ # rubocop:disable Naming/AccessorMethodName
42
+
43
+ ##
44
+ # Gets a list of document templates.
45
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
46
+ def self.get_template
47
+ request('/GetTemplate')
48
+ end
49
+
50
+ ##
51
+ # Gets 'piano dei conti'
52
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
53
+ def self.get_pdc
54
+ request('/GetPdc')
55
+ end
56
+
57
+ ##
58
+ # Gets numerator list.
59
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
60
+ def self.get_numerator
61
+ request('/GetNumerator')
62
+ end
63
+
64
+ ##
65
+ # Donwloads a pdf file for an existing document.
66
+ # Requires an existing document id, throws
67
+ # {MissingInput}[rdoc-ref:Fattura24::MissingInput] when passing a nil +id+.
68
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object: refer
69
+ # to it's documentation to detect a binary file and instruction
70
+ # to save it to disk.
71
+ def self.get_file(id)
72
+ raise(Fattura24::MissingInput, 'You need to provide an id') unless id
73
+
74
+ request('/GetFile', { docId: id })
75
+ end
76
+
77
+ ##
78
+ # Gets a list of products.
79
+ # You can pass a Hash containing a +code+ or +category+
80
+ # to filter your existing products by them.
81
+ # Throws a
82
+ # {InvalidParams}[rdoc-ref:Fattura24::InvalidParams] when passing
83
+ # an hash containing unrecognized options.
84
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
85
+ def self.get_product(options = {})
86
+ validate_params(options, %i[code category])
87
+ request('/GetProduct', options)
88
+ end
89
+
90
+ # rubocop:enable Naming/AccessorMethodName
91
+
92
+ ##
93
+ # Saves a customer in your contact list.
94
+ # Any +nil+ parameter will be deeply removed
95
+ # by using the {crush}[rdoc-ref:Fattura24::Utils.crush] utility.
96
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
97
+ def self.save_customer(data = {})
98
+ request('/SaveCustomer', {
99
+ xml: hash_to_xml(data)
100
+ })
101
+ end
102
+
103
+ ##
104
+ # Use this to create documents. Pass a hash with the data, check
105
+ # the README file for examples. Use
106
+ # {DocumentType}[rdoc-ref:Fattura24::DocumentType]
107
+ # enums to specify document type.
108
+ # Any +nil+ parameter will be deeply removed
109
+ # by using the {crush}[rdoc-ref:Fattura24::Utils.crush] utility.
110
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
111
+ def self.save_document(data = {})
112
+ request('/SaveDocument', {
113
+ xml: hash_to_xml(data)
114
+ })
115
+ end
116
+
117
+ ##
118
+ # Creates a credit.
119
+ # Any +nil+ parameter will be deeply removed
120
+ # by using the {crush}[rdoc-ref:Fattura24::Utils.crush] utility.
121
+ # Returns a {Response}[rdoc-ref:Fattura24::Api::Response] object.
122
+ def self.save_item(data = {})
123
+ request('/SaveItem', {
124
+ xml: hash_to_xml(data)
125
+ })
126
+ end
127
+
128
+ def self.hash_to_xml(hash)
129
+ { document: Fattura24::Utils.crush(hash) || '' }
130
+ .to_xml(
131
+ root: 'Fattura24',
132
+ indent: 0,
133
+ skip_types: true,
134
+ camelize: true
135
+ )
136
+ end
137
+
138
+ def self.inject_api_key(hash)
139
+ hash.merge(apiKey: Fattura24.configuration.api_key)
140
+ end
141
+
142
+ def self.validate_params(params, permitted_params)
143
+ invalid_params = params.keys.map(&:to_sym) - permitted_params
144
+
145
+ raise_params_error(invalid_params) if invalid_params.any?
146
+ end
147
+
148
+ def self.raise_params_error(invalid_params)
149
+ msg = "This params are not permitted: #{invalid_params.join(', ')}"
150
+ raise Fattura24::InvalidParams, msg
151
+ end
152
+
153
+ private_class_method(
154
+ :hash_to_xml,
155
+ :inject_api_key,
156
+ :validate_params,
157
+ :raise_params_error
158
+ )
159
+ end
160
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fattura24
4
+ module Api
5
+ ##
6
+ # An instance of this class will be returned on every
7
+ # api call, wrapping the content of the response and
8
+ # providing helper methods to navigate it's content.
9
+ class Response
10
+ ##
11
+ # When needed, you can directly access the underlying
12
+ # {Net::HTTP}[https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html] response
13
+ # by calling this method.
14
+ attr_reader :http_response
15
+
16
+ def initialize(http_response)
17
+ @http_response = http_response
18
+ end
19
+
20
+ ##
21
+ # Returns +true+ when the http response
22
+ # is 200, +false+ otherwise.
23
+ def success?
24
+ code == 200
25
+ end
26
+
27
+ ##
28
+ # Returns the +Integer+ value of the underlying http request.
29
+ # It does not mean the request performed it's intended purpose.
30
+ # Make sure you use {to_s}[rdoc-ref:to_s] or {to_h}[rdoc-ref:to_h]
31
+ # to explore the actual body of the response.
32
+ def code
33
+ http_response&.code.to_i
34
+ end
35
+
36
+ ##
37
+ # Returns +true+ when the body of the request contains a pdf file.
38
+ def pdf?
39
+ http_response&.content_type&.underscore == 'application/pdf'
40
+ end
41
+
42
+ ##
43
+ # Returns an hash representation of the xml body of the response.
44
+ # Raises {NotSerializable}[rdoc-ref:Fattura24::NotSerializable]
45
+ # in case of a binary (pdf file) content.
46
+ def to_h
47
+ if pdf?
48
+ raise(
49
+ Fattura24::NotSerializable,
50
+ 'Cannot create hash from binary file'
51
+ )
52
+ end
53
+
54
+ Hash.from_xml(http_response&.body)
55
+ &.deep_transform_keys do |key|
56
+ key.to_s.underscore.to_sym
57
+ end
58
+ end
59
+
60
+ ##
61
+ # Returns the +String+ body of this response.
62
+ # This can be both the original xml on most of the calls
63
+ # or the content of the pdf file when {get_file}[rdoc-ref:get_file]
64
+ # is called.
65
+ def to_s
66
+ http_response&.body.to_s
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fattura24
4
+ class Configuration
5
+ ##
6
+ # Set this attribute to your secret
7
+ # api key to interact with the api
8
+ attr_accessor :api_key
9
+
10
+ def initialize
11
+ @api_key = nil
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fattura24
4
+ ##
5
+ # This module contains constants to be used
6
+ # when creating documents/credits.
7
+
8
+ module DocumentType
9
+ ELECTRONIC_INVOICE = 'FE'
10
+ INVOICE = 'I'
11
+ RECEIPT = 'R'
12
+ CLIENT_ORDER = 'C'
13
+ CREDIT_NOTE = 'N'
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fattura24
4
+ class Error < RuntimeError; end
5
+
6
+ ##
7
+ # Thrown when trying to perform any request
8
+ # on the api without a key set in configuration
9
+ class MissingApiKey < Error
10
+ def message
11
+ 'You need to configure your api key before calling any endpoint'
12
+ end
13
+ end
14
+
15
+ class MissingInput < Error; end
16
+
17
+ class NotSerializable < Error; end
18
+
19
+ class InvalidParams < Error; end
20
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fattura24
4
+ module Utils
5
+ ##
6
+ # This function deeply removes
7
+ # any nil object/value from objects.
8
+ def self.crush(obj)
9
+ return crush_hash(obj) if obj.is_a?(Hash)
10
+
11
+ return crush_array(obj) if obj.is_a?(Array)
12
+
13
+ obj
14
+ end
15
+
16
+ ##
17
+ # Deeply removes any nil value from arrays.
18
+ def self.crush_array(array)
19
+ r = array.map do |obj|
20
+ crush(obj)
21
+ end.compact
22
+
23
+ r.empty? ? nil : r
24
+ end
25
+
26
+ ##
27
+ # Deeply removes any nil value from hashes.
28
+ def self.crush_hash(hash)
29
+ r = hash.each_with_object({}) do |(k, v), h|
30
+ if (crushed_v = crush(v))
31
+ h[k] = crushed_v
32
+ end
33
+ end
34
+
35
+ r.empty? ? nil : r
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fattura24
4
+ VERSION = '1.0.0'
5
+ end
metadata ADDED
@@ -0,0 +1,267 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fattura24
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Stefano Nada
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-04-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: builder
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dotenv
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
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: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '13.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '13.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rdoc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '6.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '6.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.9'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.9'
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.82'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.82'
139
+ - !ruby/object:Gem::Dependency
140
+ name: simplecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.17.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.17.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: webmock
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '3.8'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '3.8'
167
+ description: Minimal Ruby 2 wrapper for fattura24 apis.
168
+ email:
169
+ - stefano.nada@gmail.com
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - CHANGELOG.md
175
+ - Gemfile
176
+ - LICENSE
177
+ - README.md
178
+ - Rakefile
179
+ - docs/Fattura24.html
180
+ - docs/Fattura24/Api.html
181
+ - docs/Fattura24/Api/Response.html
182
+ - docs/Fattura24/Configuration.html
183
+ - docs/Fattura24/DocumentType.html
184
+ - docs/Fattura24/Error.html
185
+ - docs/Fattura24/InvalidParams.html
186
+ - docs/Fattura24/MissingApiKey.html
187
+ - docs/Fattura24/MissingInput.html
188
+ - docs/Fattura24/NotSerializable.html
189
+ - docs/Fattura24/Utils.html
190
+ - docs/README_md.html
191
+ - docs/created.rid
192
+ - docs/css/fonts.css
193
+ - docs/css/rdoc.css
194
+ - docs/fonts/Lato-Light.ttf
195
+ - docs/fonts/Lato-LightItalic.ttf
196
+ - docs/fonts/Lato-Regular.ttf
197
+ - docs/fonts/Lato-RegularItalic.ttf
198
+ - docs/fonts/SourceCodePro-Bold.ttf
199
+ - docs/fonts/SourceCodePro-Regular.ttf
200
+ - docs/images/add.png
201
+ - docs/images/arrow_up.png
202
+ - docs/images/brick.png
203
+ - docs/images/brick_link.png
204
+ - docs/images/bug.png
205
+ - docs/images/bullet_black.png
206
+ - docs/images/bullet_toggle_minus.png
207
+ - docs/images/bullet_toggle_plus.png
208
+ - docs/images/date.png
209
+ - docs/images/delete.png
210
+ - docs/images/find.png
211
+ - docs/images/loadingAnimation.gif
212
+ - docs/images/macFFBgHack.png
213
+ - docs/images/package.png
214
+ - docs/images/page_green.png
215
+ - docs/images/page_white_text.png
216
+ - docs/images/page_white_width.png
217
+ - docs/images/plugin.png
218
+ - docs/images/ruby.png
219
+ - docs/images/tag_blue.png
220
+ - docs/images/tag_green.png
221
+ - docs/images/transparent.png
222
+ - docs/images/wrench.png
223
+ - docs/images/wrench_orange.png
224
+ - docs/images/zoom.png
225
+ - docs/index.html
226
+ - docs/js/darkfish.js
227
+ - docs/js/navigation.js
228
+ - docs/js/navigation.js.gz
229
+ - docs/js/search.js
230
+ - docs/js/search_index.js
231
+ - docs/js/search_index.js.gz
232
+ - docs/js/searcher.js
233
+ - docs/js/searcher.js.gz
234
+ - docs/table_of_contents.html
235
+ - fattura24.gemspec
236
+ - lib/fattura24.rb
237
+ - lib/fattura24/api/client.rb
238
+ - lib/fattura24/api/response.rb
239
+ - lib/fattura24/configuration.rb
240
+ - lib/fattura24/document_type.rb
241
+ - lib/fattura24/errors.rb
242
+ - lib/fattura24/utils.rb
243
+ - lib/fattura24/version.rb
244
+ homepage: https://github.com/snada/fattura24
245
+ licenses:
246
+ - MIT
247
+ metadata: {}
248
+ post_install_message:
249
+ rdoc_options: []
250
+ require_paths:
251
+ - lib
252
+ required_ruby_version: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ requirements: []
263
+ rubygems_version: 3.0.3
264
+ signing_key:
265
+ specification_version: 4
266
+ summary: Ruby wrapper for fattura24 apis
267
+ test_files: []