Commit 180e10beaca9f5fb3a12723fd4d3f57f4a81c17f

Authored by Alex Savenko
1 parent 66d82a12

dynamic dateRange

app/library/App/Controllers/GaController.php
... ... @@ -16,8 +16,6 @@ use Google_Service_AnalyticsReporting_GetReportsRequest;
16 16 use Google_Service_AnalyticsReporting_Metric;
17 17 use Google_Service_AnalyticsReporting_ReportRequest;
18 18 use PhalconRest\Mvc\Controllers\CrudResourceController;
19   -use Google_Service_AnalyticsReporting_Report;
20   -use phpDocumentor\Reflection\Types\Array_;
21 19  
22 20 class GaController extends CrudResourceController {
23 21  
... ... @@ -26,8 +24,10 @@ class GaController extends CrudResourceController {
26 24  
27 25 public function getAction() {
28 26  
29   - $get_metrics = $this->request->get('metric');
30   - $get_metrics = explode(',', $get_metrics);
  27 + $get_metrics = $this->request->get('metric') ?? 'users';
  28 + $get_start_date = $this->request->get('start') ?? '30daysAgo';
  29 + $get_end_date = $this->request->get('end') ?? 'today';
  30 +
31 31  
32 32 putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/phalcon/'.self::SECRET_JSON);
33 33 $client = new Google_Client();
... ... @@ -37,11 +37,12 @@ class GaController extends CrudResourceController {
37 37  
38 38 // Создание объекта DateRange.
39 39 $dateRange = new Google_Service_AnalyticsReporting_DateRange();
40   - $dateRange->setStartDate("30daysAgo");
41   - $dateRange->setEndDate("today");
  40 + $dateRange->setStartDate($get_start_date);
  41 + $dateRange->setEndDate($get_end_date);
42 42  
43 43 // Создание объекта Metrics.
44 44 $metrics = [];
  45 + $get_metrics = explode(',', $get_metrics);
45 46 foreach ($get_metrics as $metric) {
46 47 $metrics_obj = new Google_Service_AnalyticsReporting_Metric();
47 48 $metrics_obj->setExpression('ga:'.$metric);
... ...
app/library/App/Resources/GaResource.php
... ... @@ -28,70 +28,9 @@ class GaResource extends ApiResource {
28 28 ->deny(AclRoles::UNAUTHORIZED)
29 29 ->handler(GaController::class)
30 30  
31   - ->endpoint(ApiEndpoint::get('?{metric}', 'getAction')
  31 + ->endpoint(ApiEndpoint::get('?start&metric={metric1},{metric2}', 'getAction')
32 32 ->allow(AclRoles::USER)
33 33 ->description('Returns data from Google Analytics Api')
34   - ->exampleResponse('
35   - {
36   - "reports": [
37   - {
38   - "columnHeader": {
39   - "metricHeader": {
40   - "metricHeaderEntries": [
41   - {
42   - "name": "users",
43   - "type": "INTEGER"
44   - },
45   - {
46   - "name": "sessionsPerUser",
47   - "type": "FLOAT"
48   - }
49   - ]
50   - }
51   - },
52   - "data": {
53   - "rows": [
54   - {
55   - "metrics": [
56   - {
57   - "values": [
58   - "4814",
59   - "1.23764021603656"
60   - ]
61   - }
62   - ]
63   - }
64   - ],
65   - "totals": [
66   - {
67   - "values": [
68   - "4814",
69   - "1.23764021603656"
70   - ]
71   - }
72   - ],
73   - "rowCount": 1,
74   - "minimums": [
75   - {
76   - "values": [
77   - "4814",
78   - "1.23764021603656"
79   - ]
80   - }
81   - ],
82   - "maximums": [
83   - {
84   - "values": [
85   - "4814",
86   - "1.23764021603656"
87   - ]
88   - }
89   - ]
90   - }
91   - }
92   - ]
93   - }
94   - ')
95 34 )
96 35 ;
97 36  
... ...