listo 0.4.0 → 0.7.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 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: {}