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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +2 -0
- data/Gemfile +8 -0
- data/LICENSE +21 -0
- data/README.md +186 -0
- data/Rakefile +16 -0
- data/docs/Fattura24.html +197 -0
- data/docs/Fattura24/Api.html +497 -0
- data/docs/Fattura24/Api/Response.html +371 -0
- data/docs/Fattura24/Configuration.html +176 -0
- data/docs/Fattura24/DocumentType.html +133 -0
- data/docs/Fattura24/Error.html +104 -0
- data/docs/Fattura24/InvalidParams.html +104 -0
- data/docs/Fattura24/MissingApiKey.html +157 -0
- data/docs/Fattura24/MissingInput.html +104 -0
- data/docs/Fattura24/NotSerializable.html +104 -0
- data/docs/Fattura24/Utils.html +232 -0
- data/docs/README_md.html +273 -0
- data/docs/created.rid +10 -0
- data/docs/css/fonts.css +167 -0
- data/docs/css/rdoc.css +619 -0
- data/docs/fonts/Lato-Light.ttf +0 -0
- data/docs/fonts/Lato-LightItalic.ttf +0 -0
- data/docs/fonts/Lato-Regular.ttf +0 -0
- data/docs/fonts/Lato-RegularItalic.ttf +0 -0
- data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
- data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
- data/docs/images/add.png +0 -0
- data/docs/images/arrow_up.png +0 -0
- data/docs/images/brick.png +0 -0
- data/docs/images/brick_link.png +0 -0
- data/docs/images/bug.png +0 -0
- data/docs/images/bullet_black.png +0 -0
- data/docs/images/bullet_toggle_minus.png +0 -0
- data/docs/images/bullet_toggle_plus.png +0 -0
- data/docs/images/date.png +0 -0
- data/docs/images/delete.png +0 -0
- data/docs/images/find.png +0 -0
- data/docs/images/loadingAnimation.gif +0 -0
- data/docs/images/macFFBgHack.png +0 -0
- data/docs/images/package.png +0 -0
- data/docs/images/page_green.png +0 -0
- data/docs/images/page_white_text.png +0 -0
- data/docs/images/page_white_width.png +0 -0
- data/docs/images/plugin.png +0 -0
- data/docs/images/ruby.png +0 -0
- data/docs/images/tag_blue.png +0 -0
- data/docs/images/tag_green.png +0 -0
- data/docs/images/transparent.png +0 -0
- data/docs/images/wrench.png +0 -0
- data/docs/images/wrench_orange.png +0 -0
- data/docs/images/zoom.png +0 -0
- data/docs/index.html +283 -0
- data/docs/js/darkfish.js +84 -0
- data/docs/js/navigation.js +105 -0
- data/docs/js/navigation.js.gz +0 -0
- data/docs/js/search.js +110 -0
- data/docs/js/search_index.js +1 -0
- data/docs/js/search_index.js.gz +0 -0
- data/docs/js/searcher.js +229 -0
- data/docs/js/searcher.js.gz +0 -0
- data/docs/table_of_contents.html +216 -0
- data/fattura24.gemspec +54 -0
- data/lib/fattura24.rb +28 -0
- data/lib/fattura24/api/client.rb +160 -0
- data/lib/fattura24/api/response.rb +70 -0
- data/lib/fattura24/configuration.rb +14 -0
- data/lib/fattura24/document_type.rb +15 -0
- data/lib/fattura24/errors.rb +20 -0
- data/lib/fattura24/utils.rb +38 -0
- data/lib/fattura24/version.rb +5 -0
- metadata +267 -0
data/fattura24.gemspec
ADDED
@@ -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
|
data/lib/fattura24.rb
ADDED
@@ -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,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
|
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: []
|