/** * @param string $request_method * @param $query * @param $params * @return TreasureData_API_Result */ protected function api($request_method = self::REQUEST_GET, $query, $params = array(), $gziped = false) { $builder = new TreasureData_API_RequestBuilder(); $builder->setApiVersion($this->getApiVersion()); $builder->setRequestMethod($request_method); $builder->setEndPoint($this->endpoint); $builder->setQuery($query); $builder->setParams($params); $builder->setAuthentication($this->getAuthentication()); $builder->setProxy($this->proxy); if ($gziped) { $builder->setGzipHint(true); } if ($this->getDriver()->getUserAgent()) { $builder->setUserAgent($this->getDriver()->getUserAgent()); } $request = $builder->build(); $result = new TreasureData_API_Result($this->driver->request($request)); return $result; }
public function testRequestBuilder() { $builder = new TreasureData_API_RequestBuilder(); $builder->setQuery("/job/status/1"); $result = array("scheme" => "https", "port" => 443, "host" => "https://api.treasure-data.com"); $result['request_method'] = $builder->getRequestMethod(); $info = parse_url($builder->getEndPoint()); if (isset($info['scheme'])) { $result['scheme'] = $info['scheme']; } if (isset($info['host'])) { $result['host'] = $info['host']; //$address = gethostbyname($info['host']); //$request->addAddress($address); } if (isset($info['port'])) { $result['port'] = $info['port']; } else { if ($result['scheme'] == 'http') { $result['port'] = 80; } } $result['params'] = $builder->getParams(); if ($builder->getAuthentication()) { $result['headers']['Authorization'] = $builder->getAuthentication()->getAsString(); } if ($builder->getUserAgent()) { $result['headers']["User-Agent"] = $this->getUserAgent(); } if ($builder->isPost()) { $data = http_build_query($builder->getParams()); $query = '/' . $builder->getApiVersion() . '/' . ltrim($builder->getQuery(), "/"); $result['query_string'] = $query; $result['headers']['Content-Type'] = "application/x-www-form-urlencoded"; $result['headers']['Content-Length'] = strlen($data); $result['content_body'] = $data; } else { if ($builder->hasParams()) { $query = '/' . $builder->getApiVersion() . '/' . ltrim($builder->getQuery(), "/") . '?' . http_build_query($builder->getParams()); } else { $query = '/' . $builder->getApiVersion() . '/' . ltrim($builder->getQuery(), "/"); } $result['query_string'] = $query; } $result['url'] = sprintf("%s://%s%s", $result['scheme'], $result['host'], $query); $result['gzip_hint'] = $builder->getGzipHint(); $request = new TreasureData_API_Request($result); $this->assertEquals("/v3/job/status/1", $request->getQueryString()); $this->assertEquals("GET", $request->getRequestMethod()); $this->assertEquals("https", $request->getScheme()); $this->assertEquals(sprintf("%s://%s%s", $result['scheme'], $result['host'], $query), $request->getUrl()); }