Test Failed
Push — develop ( 55b248...7d9761 )
by Tony
21:25
created

GraphController::json()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 2
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * app/Api/Controllers/GraphController.php
4
 *
5
 * API Controller for alerts log data
6
 *
7
 * This program is free software: you can redistribute it and/or modify
8
 * it under the terms of the GNU General Public License as published by
9
 * the Free Software Foundation, either version 3 of the License, or
10
 * (at your option) any later version.
11
 *
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15
 * GNU General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU General Public License
18
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
 *
20
 * @package    LibreNMS
21
 * @link       http://librenms.org
22
 * @copyright  2016 Neil Lathwood
23
 * @author     Neil Lathwood <[email protected]>
24
 */
25
26
namespace App\Api\Controllers;
27
28
use App\Graphs\Graph;
29
use Dingo\Api\Routing\Helpers;
30
use Illuminate\Http\Request;
31
32
class GraphController extends Controller
33
{
34
35
    use Helpers;
36
37
    /**
38
     * Obtain and format data for json output
39
     *
40
     * @param Request $request
41
     * @param string $type
42
     * @return string
43
     */
44
    public function json(Request $request, $type)
45
    {
46
        ob_start('ob_gzhandler');
47
        return $this->getGraph($type, 'json', $request);
48
    }
49
50
    /**
51
     * Obtain and format data for png output
52
     *
53
     * @param Request $request
54
     * @param string $type
55
     * @return string
56
     */
57
    public function png(Request $request, $type)
58
    {
59
        return $this->getGraph($type, 'png', $request);
60
    }
61
62
    /**
63
     * Obtain and format data for csv output
64
     *
65
     * @param Request $request
66
     * @param string $type
67
     * @return string
68
     */
69
    public function csv(Request $request, $type)
70
    {
71
        ob_start('ob_gzhandler');
72
        return $this->getGraph($type, 'csv', $request);
73
    }
74
75
    /**
76
     * Common initialization
77
     *
78
     * @param string $type
79
     * @param Request $request
80
     * @return string
81
     * @throws \Exception
82
     */
83
    private function getGraph($type, $format, Request $request)
84
    {
85
        $class = Graph::getClass($type);
86
87
        /** @var Graph $graph */
88
        $graph = new $class($type, $request);
89
        return $graph->getGraph($format);
90
    }
91
}
92