Test Failed
Push — master ( e81f34...58150d )
by
unknown
19:06
created

Indicadores::diario()   A

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
28
/*
29
 * Módulo para obtener indicadores desde el SII.
30
 *
31
 * Para más información sobre la API, consulte la `documentación completa de
32
 * los Indicadores <https://developers.apigateway.cl/#65aa568c-4c5a-448b-9f3b-95c3d9153e4d>`_.
33
 *
34
 * Cliente específico para interactuar con los endpoints de valores de UF
35
 * (Unidad de Fomento) de la API de API Gateway.
36
 *
37
 * Provee métodos para obtener valores de UF anuales, mensuales y diarios.
38
 */
39
class Indicadores extends ApiBase
40
{
41
    /**
42
     * Obtiene los valores de la UF para un año específico.
43
     *
44
     * @param int $anio Año para el cual se quieren obtener los valores de la UF.
45
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con los
46
     * valores de la UF del año especificado.
47
     */
48
    public function anual(int $anio)
49
    {
50
        $url = sprintf(
51
            '/sii/indicadores/uf/anual/%d',
52
            $anio
53
        );
54
        $response = $this->get($url);
55
        return $response;
56
    }
57
58
    /**
59
     * Obtiene los valores de la UF para un mes específico.
60
     *
61
     * @param string $periodo Período en formato AAAAMM (año y mes).
62
     * @return \Psr\Http\Message\ResponseInterface Respuesta JSON con los
63
     * valores de la UF del mes especificado.
64
     */
65
    public function mensual(string $periodo)
66
    {
67
        $anio = substr($periodo, 0, 4);
68
        $mes = substr($periodo, 4, 2);
69
        $url = sprintf(
70
            '/sii/indicadores/uf/anual/%s/%s',
71
            $anio,
72
            $mes
73
        );
74
        $response = $this->get($url);
75
        return $response;
76
    }
77
78
    /**
79
     * Obtiene el valor de la UF para un día específico.
80
     *
81
     * @param string $fecha Fecha en formato AAAA-MM-DD.
82
     * @return \Psr\Http\Message\ResponseInterface Valor de la UF para
83
     * el día especificado.
84
     */
85
    public function diario(string $fecha)
86
    {
87
        $partes = explode('-', $fecha);
88
        $anio = $partes[0];
89
        $mes = $partes[1];
90
        $dia = $partes[2];
91
92
        $url = sprintf(
93
            '/sii/indicadores/uf/anual/%s/%s/%s',
94
            $anio,
95
            $mes,
96
            $dia
97
        );
98
        $response = $this->get($url);
99
        return $response;
100
    }
101
}
102