Skip to content

Commit

Permalink
Release version 1.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
axp-dev committed Jul 30, 2017
1 parent 244c6a5 commit d16079a
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 5 deletions.
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# Yandex Metrika API
Библиотека для удобного взаимодействия с Yandex Metrika API

[![Latest Stable Version](https://poser.pugx.org/axp-dev/ya-metrika/v/stable)](https://packagist.org/packages/axp-dev/ya-metrika)
[![Total Downloads](https://poser.pugx.org/axp-dev/ya-metrika/downloads)](https://packagist.org/packages/axp-dev/ya-metrika)
[![Latest Unstable Version](https://poser.pugx.org/axp-dev/ya-metrika/v/unstable)](https://packagist.org/packages/axp-dev/ya-metrika)
[![License](https://poser.pugx.org/axp-dev/ya-metrika/license)](https://packagist.org/packages/axp-dev/ya-metrika)

## Использование
Для форматирования данных необходимо вызвать `format()`. Для произвольных запросов данный метод также работает.

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

### Пользователи по странам и регионам
#### За последние N дней
```php
getGeo($days = 7, $limit = 20) : self
```
Название | Тип | Описание
---------|-----|----------------------
$days | integer | Кол-во дней. По умолчанию 30
$limit | integer | Лимит записей. По умолчанию 10

#### За указанный период
```php
getGeoForPeriod($template, DateTime $startDate, DateTime $endDate, $limit = 20) : self
```
Название | Тип | Описание
---------|-----|----------------------
$startDate | DateTime | Начальная дата
$endDate | DateTime | Конечная дата
$limit | integer | Лимит записей. По умолчанию 10

### Данные по шаблону
Шаблоны (preset) автоматически задают метрики и группировки, которые необходимы для того или иного отчета.
Список всех шаблонов доступен по ссылке - [tech.yandex.ru/metrika/../presets-docpage](https://tech.yandex.ru/metrika/doc/api2/api_v1/presets/presets-docpage/).
Expand Down
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"description": "Yandex Metrika API Library",
"homepage": "https://github.com/axp-dev/ya-metrika",
"keywords": ["yandex","metrika","api"],
"version": "1.0.0",
"license": "MIT",
"authors": [
{
Expand Down
15 changes: 15 additions & 0 deletions examples/getGeo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

include_once '../vendor/autoload.php';

$config = require_once 'config.php';
$token = $config['token'];
$counter_id = $config['counter_id'];

$YaMetrika = new \AXP\YaMetrika\YaMetrika($token, $counter_id);

$geo = $YaMetrika->getGeo(7)
->format()
->formatData;

print_r( $geo );
51 changes: 46 additions & 5 deletions src/YaMetrika.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Carbon\Carbon;
use DateTime;
use GuzzleHttp\Client as GuzzleClient;
use GuzzleHttp\Exception\ClientException;

/**
* Class YaMetrika
Expand Down Expand Up @@ -297,6 +298,48 @@ public function getUsersSearchEngineForPeriod(DateTime $startDate, DateTime $end
return $this;
}

/**
* Получаем посетителей по странам и регионам за N дней
*
* @param int $days
* @param int $limit
*
* @return $this
*/
public function getGeo($days = 7, $limit = 20)
{
list($startDate, $endDate) = $this->differenceDate($days);

$this->getGeoForPeriod($startDate, $endDate, $limit);

return $this;
}

/**
* Получаем посетителей по странам и регионам за выбранный период
*
* @param DateTime $startDate
* @param DateTime $endDate
* @param int $limit
*
* @return $this
*/
public function getGeoForPeriod(DateTime $startDate, DateTime $endDate, $limit = 20)
{
$params = [
'date1' => $startDate->format('Y-m-d'),
'date2' => $endDate->format('Y-m-d'),
'dimensions' => 'ym:s:regionCountry,ym:s:regionArea',
'metrics' => 'ym:s:visits',
'sort' => '-ym:s:visits',
'limit' => $limit,
];

$this->data = $this->query($params);

return $this;
}

/**
* Отправляем кастомный запрос
*
Expand Down Expand Up @@ -334,7 +377,7 @@ private function combineData($column, $array)
* @param array $params
*
* @return array
*
* @throws YaMetrikaException
*/
private function query($params)
{
Expand All @@ -346,11 +389,9 @@ private function query($params)
$result = json_decode($response->getBody(), true);

return $result;
} catch (YaMetrikaException $e) {
echo 'Ya Metrika: '.$e->getMessage();
} catch (ClientException $e) {
throw new YaMetrikaException($e->getMessage());
}

return [];
}

/**
Expand Down

0 comments on commit d16079a

Please sign in to comment.