-
-
Save getjump/f677d004b92002244783139e1d330095 to your computer and use it in GitHub Desktop.
| <?php namespace getjump\CarPad\Drom; | |
| // https://api.drom.ru/v1.2/bulls/search?app_id=p8&cid%5B0%5D=23&mainPhotoWidth=300&page=1&pretty=1&revertSort=1&sortBy=enterdate&sticky_region%5B0%5D=25×tamp=1495761446&secret=53e7ac1a6b6b42f0728657a515d6992f09a5a227c5799987941ab30eaecb0513 | |
| class BasicQuery | |
| { | |
| const API_URL = '{protocol}://api.drom.ru/v{version}/{method}'; | |
| private $appId; | |
| private $key; | |
| private $version; | |
| private $protocol; | |
| public function __construct($appId, $key, $version = '1.2', $protocol = 'https') | |
| { | |
| $this->appId = $appId; | |
| $this->key = $key; | |
| $this->version = $version; | |
| $this->protocol = $protocol; | |
| } | |
| public function query($method, $args = []) | |
| { | |
| return file_get_contents($this->buildQueryString($method, $args)); | |
| } | |
| public function buildQueryString($method, $args = []) | |
| { | |
| $args = ['app_id' => $this->appId] + $args; | |
| if (!isset($args['timestamp'])) { | |
| $args['timestamp'] = time(); | |
| } | |
| $args['secret'] = $this->makeSecret($this->key, $args); | |
| unset($args['id']); | |
| return strtr(static::API_URL . '?' . http_build_query($args), [ | |
| '{protocol}' => $this->protocol, | |
| '{version}' => $this->version, | |
| '{method}' => $method, | |
| ]); | |
| } | |
| private function makeSecret(string $key, array $args = []) | |
| { | |
| return hash('sha256', $this->prepareArguments($args) . $key); | |
| } | |
| private function prepareArguments($args = [], $glue = '') | |
| { | |
| $result = []; | |
| foreach ($args as $arg) { | |
| if (is_array($arg)) { | |
| $result[] = $this->prepareArguments($arg, ','); | |
| } else { | |
| $result[] = $arg; | |
| } | |
| } | |
| return implode($glue, $result); | |
| } | |
| } |
@getjump Привет!
Подскажи плз, какие аргументы, помимо appId и timestamp, нужно подать, чтобы сформировать secret
и где взять key?
@getjump Привет!
Подскажи плз, какие аргументы, помимо appId и timestamp, нужно подать, чтобы сформировать secret
и где взять key?
)) Я спрашивал его, ключ можно найти в apk, нашел, но при проверке не сходились хэши
@getjump Привет!
Подскажи плз, какие аргументы, помимо appId и timestamp, нужно подать, чтобы сформировать secret
и где взять key?
По идее там надо отсортировать параметры по алфавиту, это еще не пробовал
@getjump Привет!
Подскажи плз, какие аргументы, помимо appId и timestamp, нужно подать, чтобы сформировать secret
и где взять key?
а что ты делаешь?) Просто я и ты, только два человека интересовались этой темой, и я кажется догадываюсь что ты хочешь))
@professrr есть успехи?))
@vmzhivetyev ого, 3-й человек кто этим интересуется)) Я в декабре так и не решил эту задачу))
@professrr ну штош)
@professrr ну штош)
Собрались как-то 3 русских в Гисте, и всем троим нужен был доступ к апи дрома))
Bro how to get param [secret]?
// "message": "Param not set [secret]"