Skip to content

Commit d16079a

Browse files
committed
Release version 1.0.0
1 parent 244c6a5 commit d16079a

File tree

4 files changed

+87
-5
lines changed

4 files changed

+87
-5
lines changed

README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# Yandex Metrika API
22
Библиотека для удобного взаимодействия с Yandex Metrika API
33

4+
[![Latest Stable Version](https://poser.pugx.org/axp-dev/ya-metrika/v/stable)](https://packagist.org/packages/axp-dev/ya-metrika)
5+
[![Total Downloads](https://poser.pugx.org/axp-dev/ya-metrika/downloads)](https://packagist.org/packages/axp-dev/ya-metrika)
6+
[![Latest Unstable Version](https://poser.pugx.org/axp-dev/ya-metrika/v/unstable)](https://packagist.org/packages/axp-dev/ya-metrika)
7+
[![License](https://poser.pugx.org/axp-dev/ya-metrika/license)](https://packagist.org/packages/axp-dev/ya-metrika)
8+
49
## Использование
510
Для форматирования данных необходимо вызвать `format()`. Для произвольных запросов данный метод также работает.
611

@@ -123,6 +128,26 @@ $startDate | DateTime | Начальная дата
123128
$endDate | DateTime | Конечная дата
124129
$limit | integer | Лимит записей. По умолчанию 10
125130

131+
### Пользователи по странам и регионам
132+
#### За последние N дней
133+
```php
134+
getGeo($days = 7, $limit = 20) : self
135+
```
136+
Название | Тип | Описание
137+
---------|-----|----------------------
138+
$days | integer | Кол-во дней. По умолчанию 30
139+
$limit | integer | Лимит записей. По умолчанию 10
140+
141+
#### За указанный период
142+
```php
143+
getGeoForPeriod($template, DateTime $startDate, DateTime $endDate, $limit = 20) : self
144+
```
145+
Название | Тип | Описание
146+
---------|-----|----------------------
147+
$startDate | DateTime | Начальная дата
148+
$endDate | DateTime | Конечная дата
149+
$limit | integer | Лимит записей. По умолчанию 10
150+
126151
### Данные по шаблону
127152
Шаблоны (preset) автоматически задают метрики и группировки, которые необходимы для того или иного отчета.
128153
Список всех шаблонов доступен по ссылке - [tech.yandex.ru/metrika/../presets-docpage](https://tech.yandex.ru/metrika/doc/api2/api_v1/presets/presets-docpage/).

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"description": "Yandex Metrika API Library",
44
"homepage": "https://github.com/axp-dev/ya-metrika",
55
"keywords": ["yandex","metrika","api"],
6+
"version": "1.0.0",
67
"license": "MIT",
78
"authors": [
89
{

examples/getGeo.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
include_once '../vendor/autoload.php';
4+
5+
$config = require_once 'config.php';
6+
$token = $config['token'];
7+
$counter_id = $config['counter_id'];
8+
9+
$YaMetrika = new \AXP\YaMetrika\YaMetrika($token, $counter_id);
10+
11+
$geo = $YaMetrika->getGeo(7)
12+
->format()
13+
->formatData;
14+
15+
print_r( $geo );

src/YaMetrika.php

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Carbon\Carbon;
77
use DateTime;
88
use GuzzleHttp\Client as GuzzleClient;
9+
use GuzzleHttp\Exception\ClientException;
910

1011
/**
1112
* Class YaMetrika
@@ -297,6 +298,48 @@ public function getUsersSearchEngineForPeriod(DateTime $startDate, DateTime $end
297298
return $this;
298299
}
299300

301+
/**
302+
* Получаем посетителей по странам и регионам за N дней
303+
*
304+
* @param int $days
305+
* @param int $limit
306+
*
307+
* @return $this
308+
*/
309+
public function getGeo($days = 7, $limit = 20)
310+
{
311+
list($startDate, $endDate) = $this->differenceDate($days);
312+
313+
$this->getGeoForPeriod($startDate, $endDate, $limit);
314+
315+
return $this;
316+
}
317+
318+
/**
319+
* Получаем посетителей по странам и регионам за выбранный период
320+
*
321+
* @param DateTime $startDate
322+
* @param DateTime $endDate
323+
* @param int $limit
324+
*
325+
* @return $this
326+
*/
327+
public function getGeoForPeriod(DateTime $startDate, DateTime $endDate, $limit = 20)
328+
{
329+
$params = [
330+
'date1' => $startDate->format('Y-m-d'),
331+
'date2' => $endDate->format('Y-m-d'),
332+
'dimensions' => 'ym:s:regionCountry,ym:s:regionArea',
333+
'metrics' => 'ym:s:visits',
334+
'sort' => '-ym:s:visits',
335+
'limit' => $limit,
336+
];
337+
338+
$this->data = $this->query($params);
339+
340+
return $this;
341+
}
342+
300343
/**
301344
* Отправляем кастомный запрос
302345
*
@@ -334,7 +377,7 @@ private function combineData($column, $array)
334377
* @param array $params
335378
*
336379
* @return array
337-
*
380+
* @throws YaMetrikaException
338381
*/
339382
private function query($params)
340383
{
@@ -346,11 +389,9 @@ private function query($params)
346389
$result = json_decode($response->getBody(), true);
347390

348391
return $result;
349-
} catch (YaMetrikaException $e) {
350-
echo 'Ya Metrika: '.$e->getMessage();
392+
} catch (ClientException $e) {
393+
throw new YaMetrikaException($e->getMessage());
351394
}
352-
353-
return [];
354395
}
355396

356397
/**

0 commit comments

Comments
 (0)