File Coverage

blib/lib/Net/Correios/Prepostagens.pm
Criterion Covered Total %
statement 19 58 32.7
branch 1 18 5.5
condition 0 11 0.0
subroutine 5 11 45.4
pod 0 8 0.0
total 25 106 23.5


line stmt bran cond sub pod time code
1 1     1   9 use strict;
  1         2  
  1         47  
2 1     1   22 use warnings;
  1         2  
  1         64  
3 1     1   7 use Scalar::Util ();
  1         2  
  1         1033  
4              
5             package Net::Correios::Prepostagens;
6              
7             sub new {
8 1     1 0 4 my ($class, $parent) = @_;
9 1         2 Scalar::Util::weaken($parent);
10 1         11 return bless { parent => $parent }, $class;
11             }
12              
13             sub criar {
14 1     1 0 2504 my ($self, $args) = @_;
15 1 50       4 die 'criar() espera uma sequencia de parametros' unless $args;
16              
17 1         4 my $parent = $self->{parent};
18              
19             # fazemos o pedido do token antes para garantirmos que temos
20             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
21 1         23 $parent->access_token('cartao');
22              
23 1         2 my $request_data = $args;
24              
25 1         20 my $res = $parent->make_request(
26             'cartao',
27             'POST',
28             'prepostagem/v1/prepostagens',
29             { content => JSON::encode_json($request_data) }
30             );
31 1         7 return $parent->parse_response($res);
32             }
33              
34             sub emitir_rotulo {
35 0     0 0   my ($self, $params) = @_;
36 0 0         die 'emitir_rotulo() espera uma sequencia de parametros' unless $params;
37 0 0         die 'emitir_rotulo() precisa de hashref com pelo menos o id' unless $params->{id};
38              
39 0           my $parent = $self->{parent};
40              
41             # fazemos o pedido do token antes para garantirmos que temos
42             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
43 0           $parent->access_token('cartao');
44              
45             my $request_data = {
46             tipoRotulo => $params->{tipo_rotulo} // 'P', # P(adrao) ou R(eduzido)
47             formatoRotulo => $params->{formato_rotulo} // 'ET', # ET(iqueta) ou EV(elope)
48             imprimeRemetente => $params->{imprime_remetente} // 'N', # S(im) ou N(ao)
49             idsPrePostagem => [$params->{id}],
50 0   0       layoutImpressao => $params->{layout_impressao} // 'PADRAO', # PADRAO, LINEAR_100_150, LINEAR_100_80, LINEAR_A4. Default PADRAO.
      0        
      0        
      0        
51             };
52              
53 0           my $res = $parent->make_request(
54             'cartao',
55             'POST',
56             'prepostagem/v1/prepostagens/rotulo/assincrono/pdf',
57             { content => JSON::encode_json($request_data) }
58             );
59 0           return $parent->parse_response($res);
60             }
61              
62             sub obter_rotulo_emitido {
63 0     0 0   my ($self, $id) = @_;
64 0 0         die 'obter_rotulo_emitido() espera um rotulo' unless $id;
65              
66 0           my $parent = $self->{parent};
67              
68             # fazemos o pedido do token antes para garantirmos que temos
69             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
70 0           $parent->access_token('cartao');
71              
72 0           my $res = $parent->make_request(
73             'cartao',
74             'GET',
75             'prepostagem/v1/prepostagens/rotulo/download/assincrono/' . $id,
76             );
77 0           return $parent->parse_response($res);
78             }
79              
80              
81             sub cancelar {
82 0     0 0   my ($self, $id) = @_;
83 0 0         die 'cancelar() espera um rotulo' unless $id;
84              
85 0           my $parent = $self->{parent};
86              
87             # fazemos o pedido do token antes para garantirmos que temos
88             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
89 0           $parent->access_token('cartao');
90              
91 0           my $res = $parent->make_request(
92             'cartao',
93             'DELETE',
94             'prepostagem/v1/prepostagens/' . $id,
95             {}
96             );
97 0           return $parent->parse_response($res);
98             }
99              
100             sub consulta {
101 0     0 0   my ($self, $rastreio) = @_;
102              
103 0           my $parent = $self->{parent};
104              
105             # fazemos o pedido do token antes para garantirmos que temos
106             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
107 0           $parent->access_token('cartao');
108              
109 0           my $res = $parent->make_request(
110             'cartao',
111             'GET',
112             'prepostagem/v1/prepostagens/postada?codigoObjeto=' . $rastreio
113             );
114 0           return $parent->parse_response($res);
115             }
116              
117             sub declaracao_conteudo {
118 0     0 0   my ($self, $id, $papel) = @_;
119 0 0         die 'declaracao_conteudo() espera um id de prepostagem' unless $id;
120 0 0         $papel = 'A4' if !defined $papel;
121 0 0 0       die 'tamanho da folha deve ser "A4" ou "100_150"' if $papel ne 'A4' && $papel ne '100_150';
122              
123              
124 0           my $parent = $self->{parent};
125              
126             # fazemos o pedido do token antes para garantirmos que temos
127             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
128 0           $parent->access_token('cartao');
129              
130 0           my $res = $parent->make_request(
131             'cartao',
132             'GET',
133             'prepostagem/v1/prepostagens/declaracaoconteudo/' . $id . '?tamFolhaImpressao=' . $papel
134             );
135 0           return $parent->parse_response($res);
136             }
137              
138             sub aviso_recebimento {
139 0     0 0   my ($self, $id) = @_;
140 0 0         die 'aviso_recebimento() espera um id de prepostagem' unless $id;
141              
142 0           my $parent = $self->{parent};
143              
144             # fazemos o pedido do token antes para garantirmos que temos
145             # os dados de contrato e DR dentro do objeto. É no-op se já fez.
146 0           $parent->access_token('cartao');
147              
148 0           my $res = $parent->make_request(
149             'cartao',
150             'GET',
151             'prepostagem/v1/prepostagens/avisorecebimento/' . $id
152             );
153 0           return $parent->parse_response($res);
154             }
155              
156              
157             1;