listo 0.4.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27018877d42a017d914f3ad0bd824c426953b040973a6c92315be72f3372fd7a
4
- data.tar.gz: 90a105de04f470297fbd88a74e55fd95dd1e1ff9b555f1b2e7ad2b9c7de47f02
3
+ metadata.gz: cc4df545cbbb4dc7bc405e339e702e4d264da6e27657f88d1f07d625edde64ae
4
+ data.tar.gz: bccd9f0d490262ae3bf20e53afac7e39ea772c078acc26044973f33cc0c72c1a
5
5
  SHA512:
6
- metadata.gz: 7efd16c8d636dcba5625d1a6d7f86297ae55e8a9e415781ffb5ea20665f4d7f9e54f5bbdcccb6436e32b37c6ee4032ccc5fafdbb5f6af578cc688fee2f6e9f90
7
- data.tar.gz: a9b984284b787fb96cfc7eef046819f086a83bab683c6dc4ee1559c78814a447f785007730b8f310ba4fda6c0cd03aad5a1b79107df54d917a8dd3a6eea19914
6
+ metadata.gz: 7ef153051f584c38e275b1924ea8706d46137de91f7eb9dee8be26da85cacbdda221c2fa370959dfd76b7a6b55b2fb1dbd1d12d3fb2eb94f264ce01d376a068a
7
+ data.tar.gz: 7309effe55d0a1f4fbd348876e619003389618e101cd41db8fba514920589c6ac47822711f4d7dcddf2f5f016f7658b5a727ba32bcc37544d9d8fe67b2fae628
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- listo (0.4.0)
4
+ listo (0.7.0)
5
5
  faraday (~> 0.17.3)
6
6
  faraday_middleware (~> 0.10.0)
7
7
  openssl (~> 2.1, >= 2.1.1)
@@ -11,16 +11,22 @@ GEM
11
11
  specs:
12
12
  addressable (2.5.2)
13
13
  public_suffix (>= 2.0.2, < 4.0)
14
+ coderay (1.0.9)
14
15
  crack (0.4.3)
15
16
  safe_yaml (~> 1.0.0)
16
17
  diff-lcs (1.3)
17
- faraday (0.17.3)
18
+ faraday (0.17.4)
18
19
  multipart-post (>= 1.2, < 3)
19
20
  faraday_middleware (0.10.1)
20
21
  faraday (>= 0.7.4, < 1.0)
21
22
  hashdiff (0.3.7)
23
+ method_source (0.9.2)
22
24
  multipart-post (2.1.1)
23
25
  openssl (2.2.0)
26
+ pry (0.9.12)
27
+ coderay (~> 1.0.5)
28
+ method_source (~> 0.8)
29
+ slop (~> 3.4)
24
30
  public_suffix (3.0.2)
25
31
  rake (10.5.0)
26
32
  rspec (3.7.0)
@@ -37,6 +43,7 @@ GEM
37
43
  rspec-support (~> 3.7.0)
38
44
  rspec-support (3.7.1)
39
45
  safe_yaml (1.0.4)
46
+ slop (3.6.0)
40
47
  vcr (3.0.3)
41
48
  webmock (2.3.2)
42
49
  addressable (>= 2.3.6)
@@ -49,6 +56,7 @@ PLATFORMS
49
56
  DEPENDENCIES
50
57
  bundler (~> 1.16)
51
58
  listo!
59
+ pry (= 0.9.12)
52
60
  rake (~> 10.0)
53
61
  rspec (~> 3.0)
54
62
  vcr (~> 3.0, >= 3.0.3)
data/README.md CHANGED
@@ -27,18 +27,12 @@ Or install it yourself as:
27
27
  Listo::Client.configure do |client|
28
28
  client.token = 'LISTO_API_TOKEN'
29
29
  client.cert_file = './path/cert.cer'
30
- client.pkey_file = './path/pkcs8.pem'
30
+ client.pkey_file = './path/pkey_der.key'
31
31
  client.pkey_passphrase = 'passphrase'
32
32
  client.debug_mode = false # default
33
33
  end
34
34
  ```
35
35
 
36
- The PKEY is usually provided in a DER format, you can create a copy in a PEM format with the following command:
37
-
38
- ```sh
39
- openssl pkcs8 -inform DER -outform PEM -in pkcs8.key -out pkcs8.pem
40
- ```
41
-
42
36
  ### Invoicing
43
37
 
44
38
  ##### Generate XML
@@ -11,7 +11,7 @@ module Listo
11
11
  end
12
12
 
13
13
  def to_der64
14
- Base64.encode64(to_der)
14
+ Base64.strict_encode64(to_der)
15
15
  end
16
16
  end
17
17
  end
data/lib/listo/error.rb CHANGED
@@ -17,5 +17,8 @@ module Listo
17
17
 
18
18
  class StampError < Error
19
19
  end
20
+
21
+ class CancelError < Error
22
+ end
20
23
  end
21
24
  end
@@ -46,6 +46,28 @@ module Listo
46
46
  response
47
47
  end
48
48
 
49
+
50
+ def cancel(id)
51
+ params = {
52
+ passcode: client.pkey_passphrase,
53
+ certificate_der: cert.to_der64,
54
+ private_key_der: pkey.base64,
55
+ }
56
+
57
+ response = client.connection.post("invoicing/cancel/invoice/#{id}/", params).body
58
+
59
+ success_codes = [
60
+ 201, # returned after the cancellation request
61
+ 202 # returned after a cancellation request for an already requested cancellation invoice
62
+ ]
63
+
64
+ if success_codes.exclude? response.dig('code')
65
+ raise Listo::Error::CancelError, response.dig('message')
66
+ end
67
+
68
+ response
69
+ end
70
+
49
71
  private
50
72
 
51
73
  def client
data/lib/listo/pkey.rb CHANGED
@@ -2,11 +2,26 @@ require 'openssl'
2
2
 
3
3
  module Listo
4
4
  class PKey < SimpleDelegator
5
- def initialize(key_file, pass_phrase = nil)
6
- key_pem = File.read(key_file)
7
- key = OpenSSL::PKey::RSA.new(key_pem, pass_phrase)
5
+ def initialize(pkey_file, pass_phrase = nil)
6
+ @key_der = File.read(pkey_file)
7
+ pem = pem(@key_der, pass_phrase)
8
8
 
9
- super(key)
9
+ super(OpenSSL::PKey::RSA.new(pem, pass_phrase))
10
+ end
11
+
12
+ def pem(key_der, pass_phrase)
13
+ _key_der = []
14
+ _key_der << "-----BEGIN ENCRYPTED PRIVATE KEY-----"
15
+ _key_der += Base64.strict_encode64(key_der).scan(/.{1,64}/)
16
+ _key_der << "-----END ENCRYPTED PRIVATE KEY-----"
17
+
18
+ _key_der = _key_der.join("\n")
19
+
20
+ OpenSSL::PKey::RSA.new(_key_der, pass_phrase)
21
+ end
22
+
23
+ def base64
24
+ Base64.encode64(@key_der).delete("\n")
10
25
  end
11
26
  end
12
27
  end
data/lib/listo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Listo
2
- VERSION = '0.4.0'
2
+ VERSION = '0.7.0'
3
3
  end
data/listo-0.4.0.gem ADDED
Binary file
data/listo-0.5.0.gem ADDED
Binary file
data/listo-0.6.0.gem ADDED
Binary file
data/listo.gemspec CHANGED
@@ -5,12 +5,12 @@ require 'listo/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'listo'
7
7
  spec.version = Listo::VERSION
8
- spec.authors = ['Luis Alfredo Lorenzo']
9
- spec.email = ['babasbot@gmail.com']
8
+ spec.authors = ['Luis Alfredo Lorenzo', 'Guillermo Siliceo Trueba']
9
+ spec.email = ['babasbot@gmail.com', 'guillermo.siliceo@gmail.com']
10
10
 
11
11
  spec.summary = 'A Ruby wrapper for the listo.mx API'
12
12
  spec.description = 'A Ruby implementation for the listo.mx web API.'
13
- spec.homepage = 'https://github.com/aliada-mx/listo'
13
+ spec.homepage = 'https://github.com/go-tandem/listo'
14
14
  spec.license = 'Nonstandard'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec', '~> 3.0'
26
26
  spec.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.3'
27
+ spec.add_development_dependency 'pry', '0.9.12'
27
28
 
28
29
  spec.add_development_dependency 'webmock', '~> 2.1'
29
30
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: listo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luis Alfredo Lorenzo
8
+ - Guillermo Siliceo Trueba
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2021-02-04 00:00:00.000000000 Z
12
+ date: 2021-02-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -72,6 +73,20 @@ dependencies:
72
73
  - - ">="
73
74
  - !ruby/object:Gem::Version
74
75
  version: 3.0.3
76
+ - !ruby/object:Gem::Dependency
77
+ name: pry
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.9.12
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.9.12
75
90
  - !ruby/object:Gem::Dependency
76
91
  name: webmock
77
92
  requirement: !ruby/object:Gem::Requirement
@@ -137,6 +152,7 @@ dependencies:
137
152
  description: A Ruby implementation for the listo.mx web API.
138
153
  email:
139
154
  - babasbot@gmail.com
155
+ - guillermo.siliceo@gmail.com
140
156
  executables: []
141
157
  extensions: []
142
158
  extra_rdoc_files: []
@@ -160,8 +176,11 @@ files:
160
176
  - lib/listo/middleware/raise_error.rb
161
177
  - lib/listo/pkey.rb
162
178
  - lib/listo/version.rb
179
+ - listo-0.4.0.gem
180
+ - listo-0.5.0.gem
181
+ - listo-0.6.0.gem
163
182
  - listo.gemspec
164
- homepage: https://github.com/aliada-mx/listo
183
+ homepage: https://github.com/go-tandem/listo
165
184
  licenses:
166
185
  - Nonstandard
167
186
  metadata: {}