Class: Cpro::Enveloppe
- Inherits:
-
Object
- Object
- Cpro::Enveloppe
- Defined in:
- lib/cpro/enveloppe.rb
Constant Summary collapse
- CODES_INTERFACE =
Codes interfaces acceptés par POST /flux. Le dépôt de CDV emprunte le même endpoint que la facture : émettre un statut, c'est déposer un flux.
{ ubl: "FSO3110A", facturx: "FSO3117A", ereporting: "FSO6000A", cdv: "FSO3300A" }.freeze
Instance Attribute Summary collapse
-
#code_interface ⇒ Object
readonly
Returns the value of attribute code_interface.
-
#content ⇒ Object
readonly
Returns the value of attribute content.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #archive ⇒ Object
-
#checksum ⇒ Object
Le swagger Dépôt flux G2B définit le checksum comme le sha256 « du fichier encodé », donc de la chaîne base64 et non des octets de l'archive.
- #fichier_flux ⇒ Object
-
#initialize(content:, name:, code_interface:) ⇒ Enveloppe
constructor
A new instance of Enveloppe.
- #payload ⇒ Object
Constructor Details
#initialize(content:, name:, code_interface:) ⇒ Enveloppe
Returns a new instance of Enveloppe.
30 31 32 33 34 35 36 37 |
# File 'lib/cpro/enveloppe.rb', line 30 def initialize(content:, name:, code_interface:) raise ArgumentError, "le contenu du flux est vide" if content.nil? || content.empty? raise ArgumentError, "un nom de fichier est requis" if name.nil? || name.to_s.empty? @content = content @name = name.to_s @code_interface = resolve_code_interface(code_interface) end |
Instance Attribute Details
#code_interface ⇒ Object (readonly)
Returns the value of attribute code_interface.
17 18 19 |
# File 'lib/cpro/enveloppe.rb', line 17 def code_interface @code_interface end |
#content ⇒ Object (readonly)
Returns the value of attribute content.
17 18 19 |
# File 'lib/cpro/enveloppe.rb', line 17 def content @content end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
17 18 19 |
# File 'lib/cpro/enveloppe.rb', line 17 def name @name end |
Class Method Details
.from(source, code_interface:, name: nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cpro/enveloppe.rb', line 19 def self.from(source, code_interface:, name: nil) if source.respond_to?(:read) resolved = name || (File.basename(source.path) if source.respond_to?(:path)) new(content: source.read, name: resolved, code_interface: code_interface) else path = source.to_s new(content: File.binread(path), name: name || File.basename(path), code_interface: code_interface) end end |
Instance Method Details
#archive ⇒ Object
47 48 49 |
# File 'lib/cpro/enveloppe.rb', line 47 def archive @archive ||= Archive.gzip([{ name: name, content: content }]) end |
#checksum ⇒ Object
Le swagger Dépôt flux G2B définit le checksum comme le sha256 « du fichier encodé », donc de la chaîne base64 et non des octets de l'archive. Confirmé en sandbox : un flux dont le checksum est calculé ainsi ressort RECEVABLE.
58 59 60 |
# File 'lib/cpro/enveloppe.rb', line 58 def checksum @checksum ||= Digest::SHA256.hexdigest(fichier_flux) end |
#fichier_flux ⇒ Object
51 52 53 |
# File 'lib/cpro/enveloppe.rb', line 51 def fichier_flux @fichier_flux ||= Base64.strict_encode64(archive) end |
#payload ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/cpro/enveloppe.rb', line 39 def payload { "codeInterface" => code_interface, "fichierFlux" => fichier_flux, "checksum" => checksum } end |