Indicadores::diario()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 15
ccs 0
cts 13
cp 0
crap 2
rs 9.9
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * API Gateway: Cliente de API en PHP.
7
 * Copyright (C) API Gateway <https://www.apigateway.cl>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la GNU Lesser General Public License (LGPL) publicada
11
 * por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia,
12
 * o (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la GNU Lesser General
17
 * Public License (LGPL) para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la GNU Lesser General Public License
20
 * (LGPL) junto a este programa. En caso contrario, consulte
21
 * <http://www.gnu.org/licenses/lgpl.html>.
22
 */
23
24
namespace apigatewaycl\api_client\sii;
25
26
use apigatewaycl\api_client\ApiBase;
27
use Psr\Http\Message\ResponseInterface;
28
29
/*
30
 * Módulo para obtener indicadores desde el SII.
31
 *
32
 * Para más información sobre la API, consulte la `documentación completa de
33
 * los Indicadores <https://developers.apigateway.cl/#65aa568c-4c5a-448b-9f3b-95c3d9153e4d>`_.
34
 *
35
 * Cliente específico para interactuar con los endpoints de valores de UF
36
 * (Unidad de Fomento) de la API de API Gateway.
37
 *
38
 * Provee métodos para obtener valores de UF anuales, mensuales y diarios.
39
 */
40
class Indicadores extends ApiBase
41
{
42
    /**
43
     * Obtiene los valores de la UF para un año específico.
44
     *
45
     * @param int $anio Año para el cual se quieren obtener los valores de la UF.
46
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con los
47
     * valores de la UF del año especificado.
48
     */
49
    public function anual(int $anio): ResponseInterface
50
    {
51
        $url = sprintf(
52
            '/sii/indicadores/uf/anual/%d',
53
            $anio
54
        );
55
        $response = $this->get(resource: $url);
56
        return $response;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $response could return the type null which is incompatible with the type-hinted return Psr\Http\Message\ResponseInterface. Consider adding an additional type-check to rule them out.
Loading history...
57
    }
58
59
    /**
60
     * Obtiene los valores de la UF para un mes específico.
61
     *
62
     * @param string $periodo Período en formato AAAAMM (año y mes).
63
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con los
64
     * valores de la UF del mes especificado.
65
     */
66
    public function mensual(string $periodo): ResponseInterface
67
    {
68
        $anio = substr(string: $periodo, offset: 0, length: 4);
69
        $mes = substr(string: $periodo, offset: 4, length: 2);
70
        $url = sprintf(
71
            '/sii/indicadores/uf/anual/%s/%s',
72
            $anio,
73
            $mes
74
        );
75
        $response = $this->get(resource: $url);
76
        return $response;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $response could return the type null which is incompatible with the type-hinted return Psr\Http\Message\ResponseInterface. Consider adding an additional type-check to rule them out.
Loading history...
77
    }
78
79
    /**
80
     * Obtiene el valor de la UF para un día específico.
81
     *
82
     * @param string $fecha Fecha en formato AAAA-MM-DD.
83
     * @return \Psr\Http\Message\ResponseInterface Valor de la UF para
84
     * el día especificado.
85
     */
86
    public function diario(string $fecha): ResponseInterface
87
    {
88
        $partes = explode('-', $fecha);
89
        $anio = $partes[0];
90
        $mes = $partes[1];
91
        $dia = $partes[2];
92
93
        $url = sprintf(
94
            '/sii/indicadores/uf/anual/%s/%s/%s',
95
            $anio,
96
            $mes,
97
            $dia
98
        );
99
        $response = $this->get(resource: $url);
100
        return $response;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $response could return the type null which is incompatible with the type-hinted return Psr\Http\Message\ResponseInterface. Consider adding an additional type-check to rule them out.
Loading history...
101
    }
102
}
103