mifiel 1.0.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: a4771294e3b399b292c103b30308f6803e8ec8c7
4
+ data.tar.gz: 4cc235a00d7d16efb58d900670f45a628c58b008
5
+ SHA512:
6
+ metadata.gz: 2f9460d1b14fb42270b49eb8a6edc945563dc0505a7ec8902f75e868253b1713632bbaec715cf74eb8eca422d3cb015527f15cec36716bbb62fef52eb9622137
7
+ data.tar.gz: ee57285f4b61a68110d254fb5baba7c8ebdeef5e0cbc149fbdaa7801b67d1f3f680de6a414f282f66299137bca3314706081897f25aa5ddc92f6370846f40e9f
@@ -0,0 +1,20 @@
1
+ # EditorConfig helps developers define and maintain consistent
2
+ # coding styles between different editors and IDEs
3
+ # editorconfig.org
4
+
5
+ root = true
6
+
7
+ [*]
8
+
9
+ # Change these settings to your own preference
10
+ indent_style = space
11
+ indent_size = 2
12
+
13
+ # We recommend you to keep these unchanged
14
+ end_of_line = lf
15
+ charset = utf-8
16
+ trim_trailing_whitespace = true
17
+ insert_final_newline = true
18
+
19
+ [*.md]
20
+ trim_trailing_whitespace = false
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --require spec_helper
3
+ --format documentation
@@ -0,0 +1,20 @@
1
+ Style/IndentationConsistency:
2
+ Enabled: false
3
+
4
+ Style/SingleSpaceBeforeFirstArg:
5
+ Enabled: false
6
+
7
+ Style/AlignHash:
8
+ Enabled: false
9
+
10
+ Style/SpaceAroundEqualsInParameterDefault:
11
+ Enabled: false
12
+
13
+ Style/Documentation:
14
+ Enabled: false
15
+
16
+ Style/EmptyLinesAroundBlockBody:
17
+ Enabled: false
18
+
19
+ Metrics/LineLength:
20
+ Max: 1000
@@ -0,0 +1 @@
1
+ mifiel_api_client
@@ -0,0 +1 @@
1
+ 2.1.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mifiel.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2016 Genaro Madrid
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,117 @@
1
+ # Mifiel
2
+
3
+ Ruby SDK for [Mifiel](https://www.mifiel.com) API.
4
+ Please read our [documentation](https://www.mifiel.com/api-docs/) for instructions on how to start using the API.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'mifiel'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install mifiel
21
+
22
+ ## Usage
23
+
24
+ Document methods:
25
+
26
+ - Find:
27
+
28
+ ```ruby
29
+ document = Mifiel::Document.find('id')
30
+ document.original_hash
31
+ document.file
32
+ document.file_signed
33
+ # ...
34
+ ```
35
+
36
+ - Find all:
37
+
38
+ ```ruby
39
+ documents = Mifiel::Document.all
40
+ ```
41
+
42
+ - Create:
43
+
44
+ ```ruby
45
+ document = Mifiel::Document.create(
46
+ file: 'path/to/my-file.pdf',
47
+ signatories: [
48
+ { name: 'Signer 1', email: 'signer1@email.com', tax_id: 'AAA010101AAA' },
49
+ { name: 'Signer 2', email: 'signer2@email.com', tax_id: 'AAA010102AAA' }
50
+ ]
51
+ )
52
+ ```
53
+
54
+ - Sign:
55
+ + With a pre-created Certificate
56
+
57
+ ```ruby
58
+ certificate = Mifiel::Certificate.find('cert-id')
59
+ document.sign(certificate_id: certificate.id)
60
+ ```
61
+
62
+ + With a new one
63
+
64
+ ```ruby
65
+ document.sign(certificate: File.read('FIEL_AAA010101AAA.cer'))
66
+ ```
67
+
68
+ - Delete
69
+
70
+ ```ruby
71
+ document.delete
72
+ ```
73
+
74
+ Certificate methods:
75
+
76
+ - Sat Certificates
77
+
78
+ ```ruby
79
+ sat_certificates = Mifiel::Certificate.sat
80
+ ```
81
+
82
+ - Find:
83
+
84
+ ```ruby
85
+ certificate = Mifiel::Certificate.find('id')
86
+ certificate.cer_hex
87
+ certificate.type_of
88
+ # ...
89
+ ```
90
+
91
+ - Find all:
92
+
93
+ ```ruby
94
+ certificates = Mifiel::Certificate.all
95
+ ```
96
+
97
+ - Create
98
+
99
+ ```ruby
100
+ certificate = Mifiel::Certificate.create(
101
+ file: 'path/to/my-certificate.cer'
102
+ )
103
+ ```
104
+
105
+ - Delete
106
+
107
+ ```ruby
108
+ certificate.delete
109
+ ```
110
+
111
+ ## Contributing
112
+
113
+ 1. Fork it ( https://github.com/[my-github-username]/mifiel/fork )
114
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
115
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
116
+ 4. Push to the branch (`git push origin my-new-feature`)
117
+ 5. Create a new Pull Request
@@ -0,0 +1,5 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ task :console do
4
+ exec 'irb -r mifiel -I ./lib'
5
+ end
data/bump ADDED
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env python
2
+ import re, glob, sys, os
3
+
4
+ __USAGE__ = \
5
+ """BUMP is a semantic versioning bump script which accepts the following
6
+ mutually exclusive arguments:
7
+ -m - a "major" version bump equal to +1.0.0
8
+ -n - a "minor" version bump equal to +0.1.0
9
+ -p - a "patch" version bump equal to +0.0.1
10
+ -h - a "hot fix" version bump equal to +0.0.1
11
+
12
+ All of these options allow for the -r flag, which indicates that the state
13
+ is a RELEASE not a SNAPSHOT. If -r is not specified, then -SNAPSHOT is
14
+ appended to the updated version string."""
15
+
16
+ __INITIAL__ = ['0', '0', '1']
17
+
18
+
19
+ if __name__ == "__main__":
20
+ v = []
21
+ try:
22
+ version_file = glob.glob("lib/*/version.rb")[0]
23
+ raw_v = re.search(r'VERSION = \'(.*)\'', open(version_file).read(), re.M|re.I|re.S).group(1)
24
+ v = re.split(re.compile("\.|-"), raw_v)
25
+ v = v[0:3]
26
+ map(int, v)
27
+
28
+ except ValueError:
29
+ print("failed to parse the existing VERSION file, assuming v 0.0.1")
30
+ v = ['0', '0', '1']
31
+
32
+ except FileNotFoundError:
33
+ print("failed to find a VERSION file, assuming v 0.0.0")
34
+ v = ['0', '0', '0']
35
+
36
+ op = ''
37
+ try:
38
+ op = sys.argv[1]
39
+ except:
40
+ print(__USAGE__)
41
+ sys.exit(-1)
42
+
43
+ if(op == '-m'):
44
+ v = [str(int(v[0])+1), '0', '0']
45
+
46
+ elif(op == '-n'):
47
+ v = [v[0], str(int(v[1])+1), '0']
48
+
49
+ elif(op == '-p' or op == '-h'):
50
+ v = [v[0], v[1], str(int(v[2])+1)]
51
+
52
+ else:
53
+ print(__USAGE__)
54
+ sys.exit(-1)
55
+
56
+ v = '.'.join(v)
57
+
58
+ if(op == '-h'):
59
+ os.system("git checkout -b hotfix/v%s master" % v)
60
+
61
+ else:
62
+ os.system("git checkout -b release/v%s develop" % v)
63
+
64
+ os.system("bump set %s" % v)
65
+
66
+ v += "\n"
67
+
68
+ print(v)
69
+
70
+ sys.exit(0)
@@ -0,0 +1,20 @@
1
+ require 'active_rest_client'
2
+
3
+ module Mifiel
4
+ require 'mifiel/errors'
5
+ autoload :Base, 'mifiel/base'
6
+ autoload :Document, 'mifiel/document'
7
+ autoload :Certificate, 'mifiel/certificate'
8
+ autoload :Config, 'mifiel/config'
9
+
10
+ BASE_URL = 'https://www.mifiel.com/api/v1'
11
+
12
+ def self.config
13
+ if block_given?
14
+ yield(Mifiel::Config)
15
+ else
16
+ Mifiel::Config
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,16 @@
1
+ module Mifiel
2
+ class Base < ActiveRestClient::Base
3
+ after_request :rescue_errors
4
+
5
+ def rescue_errors(name, response)
6
+ if response.status == 400 # bad request
7
+ result = JSON.load(response.body)
8
+ message = result['errors'] || [result['error']]
9
+ raise BadRequestError, message.to_a.join(', ')
10
+ elsif (500..599).include?(response.status)
11
+ raise ServerError, "Server could not process your request: status #{response.status}"
12
+ end
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ module Mifiel
2
+ class Certificate < Mifiel::Base
3
+
4
+ get :all, '/keys'
5
+ get :find, '/keys/:id'
6
+ put :save, '/keys/:id'
7
+ get :sat, '/keys/sat'
8
+
9
+ def self.create(file:)
10
+ rest_request = RestClient::Request.new(
11
+ url: "#{Mifiel.config.base_url}/keys",
12
+ method: :post,
13
+ payload: {
14
+ cer_file: File.new(file)
15
+ },
16
+ ssl_version: 'SSLv23'
17
+ )
18
+ response = ApiAuth.sign!(rest_request, Mifiel.config.app_id, Mifiel.config.app_secret).execute
19
+ JSON.load(response)
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,38 @@
1
+ module Mifiel
2
+ module Config
3
+ class << self
4
+ attr_reader :app_id, :app_secret, :base_url
5
+
6
+ def reset
7
+ @app_id = nil
8
+ @app_secret = nil
9
+ @base_url = Mifiel::BASE_URL
10
+ end
11
+
12
+ def app_id=(app_id)
13
+ @app_id = app_id
14
+ set_api_auth_credentials
15
+ end
16
+
17
+ def app_secret=(app_secret)
18
+ @app_secret = app_secret
19
+ set_api_auth_credentials
20
+ end
21
+
22
+ def base_url=(base_url)
23
+ @base_url = base_url
24
+ set_api_auth_credentials
25
+ end
26
+
27
+ private
28
+
29
+ def set_api_auth_credentials
30
+ ActiveRestClient::Base.base_url = base_url
31
+ ActiveRestClient::Base.api_auth_credentials(app_id, app_secret)
32
+ ActiveRestClient::Base.request_body_type = :json
33
+ end
34
+ end
35
+
36
+ reset
37
+ end
38
+ end
@@ -0,0 +1,84 @@
1
+ require 'rest-client'
2
+ require 'open3'
3
+
4
+ module Mifiel
5
+ class Document < Mifiel::Base
6
+
7
+ get :all, '/documents'
8
+ get :find, '/documents/:id'
9
+ put :save, '/documents/:id'
10
+ delete :delete, '/documents/:id'
11
+
12
+ def self.create(file:, signatories:, hash:nil)
13
+ sgries = {}
14
+ signatories.each_with_index {|s, i| sgries[i] = s}
15
+ rest_request = RestClient::Request.new(
16
+ url: "#{Mifiel.config.base_url}/documents",
17
+ method: :post,
18
+ payload: {
19
+ file: File.new(file),
20
+ hash: hash,
21
+ signatories: sgries
22
+ },
23
+ ssl_version: 'SSLv23'
24
+ )
25
+ response = ApiAuth.sign!(rest_request, Mifiel.config.app_id, Mifiel.config.app_secret).execute
26
+ JSON.load(response)
27
+ end
28
+
29
+ def sign(certificate_id:nil, certificate:nil)
30
+ fail ArgumentError, 'Either certificate_id or certificate must be provided' if !certificate_id && !certificate
31
+ fail ArgumentError, 'Only one of certificate_id or certificate must be provided' if certificate_id && certificate
32
+ fail NoSignatureError, 'You must first call build_signature or provide a signature' unless signature
33
+ params = { signature: signature }
34
+ params[:key] = certificate_id if certificate_id
35
+ params[:certificate] = certificate.unpack('H*')[0] if certificate
36
+
37
+ Mifiel::Document._request("#{Mifiel.config.base_url}/documents/#{id}/sign", :post, params)
38
+ rescue ActiveRestClient::HTTPClientException => e
39
+ message = e.result.errors || [e.result.error]
40
+ raise MifielError, message.to_a.join(', ')
41
+ rescue ActiveRestClient::HTTPServerException
42
+ raise MifielError, 'Server could not process request'
43
+ end
44
+
45
+ def build_signature(private_key, private_key_pass)
46
+ self.signature ||= sign_hash(private_key, private_key_pass, original_hash)
47
+ end
48
+
49
+ private
50
+
51
+ # Sign the provided hash
52
+ # @param key [String] The contents of the .key file (File.read(...))
53
+ # @param pass [String] The password of the key
54
+ # @param hash [String] The hash or string to sign
55
+ #
56
+ # @return [String] Hex string of the signature
57
+ def sign_hash(key, pass, hash)
58
+ private_key = build_private_key(key, pass)
59
+ unless private_key.private?
60
+ raise NotPrivateKeyError, "The private key is not valid"
61
+ end
62
+ signature = private_key.sign(OpenSSL::Digest::SHA256.new, hash)
63
+ signature.unpack('H*')[0]
64
+ end
65
+
66
+ def build_private_key(private_data, key_pass)
67
+ # create file so we can converted to pem
68
+ private_file = File.new("./tmp/tmp-#{rand(1000)}.key", 'w+')
69
+ private_file.write(private_data.force_encoding('UTF-8'))
70
+ private_file.close
71
+
72
+ key2pem_command = "openssl pkcs8 -in #{private_file.path} -inform DER -passin pass:#{key_pass}"
73
+ priv_pem_s, error, status = Open3.capture3(key2pem_command)
74
+
75
+ # delete file from file system
76
+ File.unlink private_file.path
77
+ fail PrivateKeyError.new("#{error}, #{status}") unless error.empty?
78
+
79
+ OpenSSL::PKey::RSA.new priv_pem_s
80
+ end
81
+
82
+ end
83
+
84
+ end
@@ -0,0 +1,8 @@
1
+ module Mifiel
2
+ MifielError = Class.new StandardError
3
+ BadRequestError = Class.new StandardError
4
+ ServerError = Class.new StandardError
5
+ PrivateKeyError = Class.new StandardError
6
+ NotPrivateKeyError = Class.new ArgumentError
7
+ NoSignatureError = Class.new StandardError
8
+ end
@@ -0,0 +1,3 @@
1
+ module Mifiel
2
+ VERSION = '1.0.0'
3
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mifiel/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'mifiel'
8
+ spec.version = Mifiel::VERSION
9
+ spec.authors = ['Genaro Madrid']
10
+ spec.email = ['genmadrid@gmail.com']
11
+ spec.summary = %q{Ruby SDK for mifiel.com.}
12
+ spec.homepage = 'https://github.com/Mifiel/ruby-api-client'
13
+ spec.license = 'MIT'
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ['lib']
19
+
20
+ spec.add_runtime_dependency 'rest-client', '~> 1.7'
21
+ spec.add_runtime_dependency 'json', '~> 1.8'
22
+ spec.add_runtime_dependency 'api-auth', '~> 1.4'
23
+ spec.add_runtime_dependency 'active_rest_client', '~> 1.2'
24
+
25
+ spec.add_development_dependency 'bundler', '~> 1.6'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.1', '>= 3.1.7'
28
+ spec.add_development_dependency 'pry', '~> 0.10', '>= 0.10.1'
29
+ spec.add_development_dependency 'pry-byebug', '~> 3.3', '>= 3.3.0'
30
+ spec.add_development_dependency 'bump', '~> 0.5', '>= 0.5.3'
31
+ spec.add_development_dependency 'webmock', '~> 1.22', '>= 1.22.2'
32
+ end
Binary file
@@ -0,0 +1,77 @@
1
+ describe Mifiel::Document do
2
+ let!(:certificate) { File.read('spec/fixtures/FIEL_AAA010101AAA.cer') }
3
+ let!(:private_key) { File.read('spec/fixtures/FIEL_AAA010101AAA.key') }
4
+ let!(:private_key_pass) { '12345678a' }
5
+
6
+ describe '#create' do
7
+ context 'with a document' do
8
+ let(:document) do
9
+ Mifiel::Document.create(
10
+ file: 'spec/fixtures/example.pdf',
11
+ signatories: [
12
+ { name: 'Signer 1', email: 'signer1@email.com', tax_id: 'AAA010101AAA' },
13
+ { name: 'Signer 2', email: 'signer2@email.com', tax_id: 'AAA010102AAA' }
14
+ ]
15
+ )
16
+ end
17
+
18
+ it { expect(document).to be_a(Hash) }
19
+ end
20
+ end
21
+
22
+ describe '#sign' do
23
+ let!(:signature) { 'signature' }
24
+ let!(:document) { Mifiel::Document.all.first }
25
+
26
+ context 'without build_signature first called' do
27
+ it do
28
+ expect{document.sign(certificate_id: 3)}.to raise_error(Mifiel::NoSignatureError)
29
+ end
30
+ end
31
+
32
+ context 'with build_signature called before' do
33
+ it do
34
+ document.build_signature(private_key, private_key_pass)
35
+ expect{document.sign(certificate_id: 3)}.not_to raise_error
36
+ end
37
+ end
38
+
39
+ context 'with signature' do
40
+ it do
41
+ document.signature = signature
42
+ expect{document.sign(certificate_id: 3)}.not_to raise_error
43
+ end
44
+ end
45
+
46
+ context 'with certificate' do
47
+ it do
48
+ document.build_signature(private_key, private_key_pass)
49
+ expect{document.sign(certificate: certificate)}.not_to raise_error
50
+ end
51
+ end
52
+ end
53
+
54
+ describe '#build_signature' do
55
+ let!(:document) { Mifiel::Document.all.first }
56
+
57
+ context 'with a wrong private_key' do
58
+ it do
59
+ expect{document.build_signature('asd', private_key_pass)}.to raise_error(Mifiel::PrivateKeyError)
60
+ end
61
+ end
62
+
63
+ context 'with a private_key that is not a private_key' do
64
+ xit do
65
+ cer = OpenSSL::X509::Certificate.new(certificate)
66
+ expect{document.build_signature(cer.public_key.to_der, private_key_pass)}.to raise_error(Mifiel::NotPrivateKeyError)
67
+ end
68
+ end
69
+
70
+ context 'with a wrong password' do
71
+ it do
72
+ expect{document.build_signature('asd', private_key_pass)}.to raise_error(Mifiel::PrivateKeyError)
73
+ end
74
+ end
75
+ end
76
+
77
+ end
@@ -0,0 +1,15 @@
1
+ require 'pry'
2
+ require 'byebug'
3
+ require 'pry-byebug'
4
+ require 'mifiel'
5
+ # require 'webmock/rspec'
6
+
7
+ Dir['./spec/support/**/*.rb'].each { |f| require f }
8
+
9
+ # WebMock.disable_net_connect!
10
+
11
+ Mifiel.config do |config|
12
+ config.app_id = '138b94faa5a43d35f60208449f0e0916de29575e'
13
+ config.app_secret = 'mJM3igFcJp8Iu/euEtr0ZTAGixmE+4K5R9o2TEOQEQfAiEuB7MpVwgMULoDxhJvbIUCDZ5l2nnxgL93I5JBXEw=='
14
+ config.base_url = 'http://localhost:3000/api/v1'
15
+ end
metadata ADDED
@@ -0,0 +1,257 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mifiel
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Genaro Madrid
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: api-auth
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: active_rest_client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.6'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.1'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 3.1.7
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '3.1'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 3.1.7
117
+ - !ruby/object:Gem::Dependency
118
+ name: pry
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.10'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 0.10.1
127
+ type: :development
128
+ prerelease: false
129
+ version_requirements: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '0.10'
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 0.10.1
137
+ - !ruby/object:Gem::Dependency
138
+ name: pry-byebug
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.3'
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 3.3.0
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '3.3'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 3.3.0
157
+ - !ruby/object:Gem::Dependency
158
+ name: bump
159
+ requirement: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '0.5'
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 0.5.3
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.5'
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: 0.5.3
177
+ - !ruby/object:Gem::Dependency
178
+ name: webmock
179
+ requirement: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '1.22'
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: 1.22.2
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '1.22'
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 1.22.2
197
+ description:
198
+ email:
199
+ - genmadrid@gmail.com
200
+ executables: []
201
+ extensions: []
202
+ extra_rdoc_files: []
203
+ files:
204
+ - ".editorconfig"
205
+ - ".gitignore"
206
+ - ".rspec"
207
+ - ".rubocop.yml"
208
+ - ".ruby-gemset"
209
+ - ".ruby-version"
210
+ - Gemfile
211
+ - LICENSE.txt
212
+ - README.md
213
+ - Rakefile
214
+ - bump
215
+ - lib/mifiel.rb
216
+ - lib/mifiel/base.rb
217
+ - lib/mifiel/certificate.rb
218
+ - lib/mifiel/config.rb
219
+ - lib/mifiel/document.rb
220
+ - lib/mifiel/errors.rb
221
+ - lib/mifiel/version.rb
222
+ - mifiel.gemspec
223
+ - spec/fixtures/FIEL_AAA010101AAA.cer
224
+ - spec/fixtures/FIEL_AAA010101AAA.key
225
+ - spec/fixtures/example.pdf
226
+ - spec/mifiel/document_spec.rb
227
+ - spec/spec_helper.rb
228
+ homepage: https://github.com/Mifiel/ruby-api-client
229
+ licenses:
230
+ - MIT
231
+ metadata: {}
232
+ post_install_message:
233
+ rdoc_options: []
234
+ require_paths:
235
+ - lib
236
+ required_ruby_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubyforge_project:
248
+ rubygems_version: 2.2.2
249
+ signing_key:
250
+ specification_version: 4
251
+ summary: Ruby SDK for mifiel.com.
252
+ test_files:
253
+ - spec/fixtures/FIEL_AAA010101AAA.cer
254
+ - spec/fixtures/FIEL_AAA010101AAA.key
255
+ - spec/fixtures/example.pdf
256
+ - spec/mifiel/document_spec.rb
257
+ - spec/spec_helper.rb