/**
  * @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;
 }