Bacen.STA.ProtocolSerializer (Bacen STA v0.1.1)

The Protocol message serializer.

Link to this section Summary

Functions

Serliazes a Protocol message schema into tuple-formatted XML.

Link to this section Functions

Link to this function

serialize(arg1)

Specs

serialize(Bacen.STA.Protocol.t()) :: {:ok, String.t()} | {:error, any()}

Serliazes a Protocol message schema into tuple-formatted XML.

Examples

iex> protocol = %Bacen.STA.Protocol{
iex>   parameters: %Bacen.STA.Protocol.Parameters{
iex>     file_name: "202111172051.xml",
iex>     file_size: 908,
iex>     file_type: "ACCS001",
iex>     hash: "053c29ae8b823df65f5bff084f410ca70530c30112bc7590518fe421f4421443",
iex>     observation: "test",
iex>     senders: %Bacen.STA.Protocol.Parameters.Senders{
iex>       sender: [
iex>         %Bacen.STA.Protocol.Parameters.Senders.Sender{
iex>           dependency: "Dependency001",
iex>           operator: "Operator001",
iex>           unity: "Unity001"
iex>         }
iex>       ]
iex>     }
iex>   }
iex> }
iex> Bacen.STA.ProtocolSerializer.serialize(protocol)
{:ok, ~s(<?xml version="1.0"?><Parametros><IdentificadorDocumento>ACCS001</IdentificadorDocumento><Hash>053c29ae8b823df65f5bff084f410ca70530c30112bc7590518fe421f4421443</Hash><Tamanho>908</Tamanho><NomeArquivo>202111172051.xml</NomeArquivo><Observacao>test</Observacao><Destinatarios><Destinatario><Unidade>Unity001</Unidade><Dependencia>Dependency001</Dependencia><Operador>Operator001</Operador></Destinatario></Destinatarios></Parametros>)}

iex> protocol = %Bacen.STA.Protocol{
iex>   parameters: %Bacen.STA.Protocol.Parameters{
iex>     file_name: "202111172051.xml",
iex>     file_size: 908,
iex>     file_type: "ACCS001",
iex>     hash: "053c29ae8b823df65f5bff084f410ca70530c30112bc7590518fe421f4421443",
iex>     observation: nil,
iex>     senders: %Bacen.STA.Protocol.Parameters.Senders{
iex>       sender: [
iex>         %Bacen.STA.Protocol.Parameters.Senders.Sender{
iex>           dependency: "Dependency001",
iex>           operator: "Operator001",
iex>           unity: "Unity001"
iex>         }
iex>       ]
iex>     }
iex>   }
iex> }
iex> Bacen.STA.ProtocolSerializer.serialize(protocol)
{:ok, ~s(<?xml version="1.0"?><Parametros><IdentificadorDocumento>ACCS001</IdentificadorDocumento><Hash>053c29ae8b823df65f5bff084f410ca70530c30112bc7590518fe421f4421443</Hash><Tamanho>908</Tamanho><NomeArquivo>202111172051.xml</NomeArquivo><Observacao/><Destinatarios><Destinatario><Unidade>Unity001</Unidade><Dependencia>Dependency001</Dependencia><Operador>Operator001</Operador></Destinatario></Destinatarios></Parametros>)}

iex> protocol = %Bacen.STA.Protocol{
iex>   parameters: %Bacen.STA.Protocol.Parameters{
iex>     file_name: "202111172051.xml",
iex>     file_size: 908,
iex>     file_type: "ACCS001",
iex>     hash: "053c29ae8b823df65f5bff084f410ca70530c30112bc7590518fe421f4421443",
iex>     observation: nil,
iex>     senders: %Bacen.STA.Protocol.Parameters.Senders{sender: []}
iex>   }
iex> }
iex> Bacen.STA.ProtocolSerializer.serialize(protocol)
{:ok, ~s(<?xml version="1.0"?><Parametros><IdentificadorDocumento>ACCS001</IdentificadorDocumento><Hash>053c29ae8b823df65f5bff084f410ca70530c30112bc7590518fe421f4421443</Hash><Tamanho>908</Tamanho><NomeArquivo>202111172051.xml</NomeArquivo><Observacao/><Destinatarios/></Parametros>)}

iex> protocol = %Bacen.STA.Protocol{parameters: %Bacen.STA.Protocol.Parameters{}}
iex> Bacen.STA.ProtocolSerializer.serialize(protocol)
{:error, :invalid_parameters}

iex> protocol = %Bacen.STA.Protocol{}
iex> Bacen.STA.ProtocolSerializer.serialize(protocol)
{:error, :invalid_protocol}