This commit is contained in:
2018-11-21 17:02:14 +03:00
parent 1e728726d0
commit 5a8b88b225
40 changed files with 1500 additions and 8 deletions

3
common/hhapi/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.idea
init.php
/vendor/

View File

@ -0,0 +1,15 @@
{
"name": "kavalar/hhapi",
"type": "library",
"license": "BSD-3-Clause",
"authors": [
{
"name": "Kavalar",
"email": "apuc06@mail.ru"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=7.0.0"
}
}

View File

@ -0,0 +1,53 @@
<?php
/**
* Created by PhpStorm.
* User: kirill
* Date: 15.11.18
* Time: 21:42
*/
namespace common\hhapi\core\lib;
use common\classes\Debug;
use common\hhapi\core\request\Request;
class Company
{
use Request;
public $company;
public $jobs;
public $id;
public function __construct($id)
{
if ($id) {
$this->id = $id;
$company = $this->baseRequest('employers/' . $id)->get();
$this->company = $company;
}
}
public function getName()
{
return $this->company->name;
}
public function getDescription()
{
return $this->company->description;
}
public function getJobs()
{
$j = $this->baseRequest('vacancies')->addParams(['employer_id' => $this->id])->get();
if($j){
foreach ($j->items as $item){
$this->jobs[] = new Vacancy($item);
}
}
return $this->jobs;
}
}

View File

@ -0,0 +1,44 @@
<?php
/**
* Created by PhpStorm.
* User: kirill
* Date: 15.11.18
* Time: 21:16
*/
namespace common\hhapi\core\lib;
use common\hhapi\core\request\Request;
class Vacancy
{
use Request;
public $item;
public function __construct($data = null)
{
if (is_string($data) || is_integer($data)) {
$item = $this->baseRequest('vacancies/' . $data)->get();
$this->item = $item;
}
else {
$this->item = $data;
}
}
public function getName()
{
return ($this->item) ? $this->item->name : null;
}
public static function search($params)
{
$v = new self();
return $v->baseRequest('vacancies')->addParams($params)->get();
}
}

View File

@ -0,0 +1,84 @@
<?php
/**
* Created by PhpStorm.
* User: kirill
* Date: 15.11.18
* Time: 17:37
*/
namespace common\hhapi\core\request;
use Exception;
trait Request
{
public $url;
private $params;
public function parseUrl($url, $method = 'get')
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27');
if ($method === 'post') {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->getPostParams());
}
$res = curl_exec($curl);
curl_close($curl);
$res = json_decode($res);
// if ($res->http_code == '404') {
// throw new Exception('User not found!', 404);
// }
// if ($res->http_code == '403') {
// throw new Exception('Bad token!', 403);
// }
return $res;
}
public function baseRequest($path)
{
$this->url = 'https://api.hh.ru/' . $path;
return $this;
}
public function addParams($params)
{
if ($params) {
$this->params = $params;
$i = 0;
foreach ((array)$params as $key => $param) {
$s = ($i === 0) ? '?' : '&';
$this->url .= $s . $key . '=' . $param;
$i++;
}
}
return $this;
}
private function getPostParams()
{
$params = '';
if ($this->params) {
foreach ((array)$this->params as $key => $param) {
$params .= $key . '=' . $param . '&';
}
$params = mb_substr($params, 0, -1);
}
return $params;
}
public function get()
{
return $this->parseUrl($this->url);
}
public function post()
{
return $this->parseUrl($this->url, 'post');
}
}

View File

@ -0,0 +1,44 @@
<?php
/**
* Created by PhpStorm.
* User: kirill
* Date: 15.11.18
* Time: 22:24
*/
namespace common\hhapi\core\service;
use common\hhapi\core\lib\Company;
use common\hhapi\core\lib\Vacancy;
class HHService
{
/**
* @param $id
* @return Company
*/
public function company($id)
{
return new Company($id);
}
/**
* @param $id
* @return Vacancy
*/
public function vacancy($id)
{
return new Vacancy($id);
}
/**
* @return HHService
*/
public static function run()
{
return new self();
}
}

16
common/hhapi/index.php Normal file
View File

@ -0,0 +1,16 @@
<?php
/**
* Created by PhpStorm.
* User: kirill
* Date: 15.11.18
* Time: 17:34
*/
require_once 'init.php';
$v = new \core\lib\Vacancy('28246746');
$c = new \core\lib\Company('2495437');
echo '<pre>';
print_r(\core\service\HHService::run()->company('2495437')->getJobs());
echo '</pre>';