GaResource.php
3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
/**
* Created by PhpStorm.
* User: Alex Savenko
* Date: 09.02.2017
* Time: 18:02
*/
namespace App\Resources;
use App\Constants\AclRoles;
use App\Controllers\GaController;
use PhalconApi\Constants\HttpMethods;
use PhalconRest\Api\ApiEndpoint;
use PhalconRest\Api\ApiResource;
class GaResource extends ApiResource {
public function initialize() {
$this
->name('Google Analytics')
->expectsJsonData()
->itemKey('ga')
->collectionKey('ga')
->deny(AclRoles::UNAUTHORIZED)
->handler(GaController::class)
->endpoint(ApiEndpoint::factory('', HttpMethods::GET, 'getAction')
->name('Ga report')
->description('Возвращает данные с Google Core Reporting Api. https://developers.google.com/analytics/devguides/reporting/core/dimsmets')
->allow(AclRoles::AUTHORIZED)
->exampleResponse([
"name" => "rukzachok.com.ua",
"(Other)" => "646",
"Direct" => "482",
"Display" => "134",
"Organic Search" => "2278",
"Paid Search" => "2989",
"Referral" => "128",
"Social" => "29"
])
->paramsDescription([
'get params' => [
'required params' => [
'metric' => 'string(метрика Google, линк в описании запроса)',
'dimension' => 'string(размерность Google, линк в описании запроса)',
'start' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата начала загрузки данных)',
'end' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата конца загрузки данных)'
],
'optional params' => [
'user_id' => 'integer(id пользователя в системе)',
'view_id' => 'integer(id представления проэкта с гугл аналитики)',
'chart' => 'boolean(Задает структуру возвращаемых данных(true для графиков))',
'filter' => 'expression(https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters)',
'sort' => 'string(параметр сортировки, metric либо dimension)',
'sort_type' => 'enum(ans, desc)',
'max_result' => 'integer(максимальное число строк в результате, по умолчанию 50,000)',
]
]
])
)
->endpoint(ApiEndpoint::factory('/check', HttpMethods::POST, 'checkAction')
->name('Check')
->description('Проверяет наличие доступа к проэкту')
->allow(AclRoles::AUTHORIZED)
->expectsJsonData()
->exampleResponse([
'view_id' => 'integer(id представления проэкта с гугл аналитики)',
'status' => 'enum(success|error)'
])
->paramsDescription([
'required params' => [
'view_id' => 'integer(id представления проэкта с гугл аналитики)'
]
])
)
;
}
}