<?php
/*
 * Copyright (c) 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

require_once 'service/apiModel.php';
require_once 'service/apiService.php';
require_once 'service/apiServiceRequest.php';


  /**
   * The "text" collection of methods.
   * Typical usage is:
   *  <code>
   *   $freebaseService = new apiFreebaseService(...);
   *   $text = $freebaseService->text;
   *  </code>
   */
  class TextServiceResource extends apiServiceResource {


    /**
     * Returns blob attached to node at specified id as HTML (text.get)
     *
     * @param string $id The id of the item that you want data about
     * @param array $optParams Optional parameters. Valid optional parameters are listed below.
     *
     * @opt_param string maxlength The max number of characters to return. Valid only for 'plain' format.
     * @opt_param string format Sanitizing transformation.
     * @return ContentserviceGet
     */
    public function get($id, $optParams = array()) {
      $params = array('id' => $id);
      $params = array_merge($params, $optParams);
      $data = $this->__call('get', array($params));
      if ($this->useObjects()) {
        return new ContentserviceGet($data);
      } else {
        return $data;
      }
    }
  }


  /**
   * The "mqlread" collection of methods.
   * Typical usage is:
   *  <code>
   *   $freebaseService = new apiFreebaseService(...);
   *   $mqlread = $freebaseService->mqlread;
   *  </code>
   */
  class MqlreadServiceResource extends apiServiceResource {
    /**
     * Performs MQL Queries. (mqlread.mqlread)
     *
     * @param string $query An envelope containing a single MQL query.
     * @param array $optParams Optional parameters. Valid optional parameters are listed below.
     *
     * @opt_param string lang The language of the results - an id of a /type/lang object.
     * @opt_param bool html_escape Whether or not to escape entities.
     * @opt_param string indent How many spaces to indent the json.
     * @opt_param string uniqueness_failure How MQL responds to uniqueness failures.
     * @opt_param string cursor The mql cursor.
     * @opt_param string callback JS method name for JSONP callbacks.
     * @opt_param bool cost Show the costs or not.
     * @opt_param string as_of_time Run the query as it would've been run at the specified point in time.
     */
    public function mqlread($query, $optParams = array()) {
      $params = array('query' => $query);
      $params = array_merge($params, $optParams);
      $data = $this->__call('mqlread', array($params));
      return $data;
    }

  }

  /**
   * The "image" collection of methods.
   * Typical usage is:
   *  <code>
   *   $freebaseService = new apiFreebaseService(...);
   *   $image = $freebaseService->image;
   *  </code>
   */
  class ImageServiceResource extends apiServiceResource {
    /**
     * Returns the scaled/cropped image attached to a freebase node. (image.image)
     *
     * @param string $id Freebase entity or content id, mid, or guid.
     * @param array $optParams Optional parameters. Valid optional parameters are listed below.
     *
     * @opt_param string maxwidth Maximum width in pixels for resulting image.
     * @opt_param string maxheight Maximum height in pixels for resulting image.
     * @opt_param string fallbackid Use the image associated with this secondary id if no image is associated with the primary id.
     * @opt_param bool pad A boolean specifying whether the resulting image should be padded up to the requested dimensions.
     * @opt_param string mode Method used to scale or crop image.
     */
    public function image($id, $optParams = array()) {
      $params = array('id' => $id);
      $params = array_merge($params, $optParams);
      $data = $this->__call('image', array($params));
      return $data;
    }

  }


/**
 * Service definition for Freebase (v1).
 *
 * <p>
 * Lets you access the Freebase repository of open data.
 * </p>
 *
 * <p>
 * For more information about this service, see the
 * <a href="http://wiki.freebase.com/wiki/New_Freebase_API" target="_blank">API Documentation</a>
 * </p>
 *
 * @author Google, Inc.
 */
class apiFreebaseService extends apiService {
  public $text;
  /**
   * Constructs the internal representation of the Freebase service.
   *
   * @param apiClient apiClient
   */
  public function __construct(apiClient $apiClient) {
    $this->rpcPath = '/rpc';
    $this->restBasePath = '/freebase/v1/';
    $this->version = 'v1';
    $this->serviceName = 'freebase';
    $this->io = $apiClient->getIo();

    $apiClient->addService($this->serviceName, $this->version);
    $this->text = new TextServiceResource($this, $this->serviceName, 'text', json_decode('{"methods": {"get": {"parameters": {"format": {"default": "plain", "enum": ["html", "plain", "raw"], "location": "query", "type": "string"}, "id": {"repeated": true, "required": true, "type": "string", "location": "path"}, "maxlength": {"format": "uint32", "type": "integer", "location": "query"}}, "id": "freebase.text.get", "httpMethod": "GET", "path": "text{/id*}", "response": {"$ref": "ContentserviceGet"}}}}', true));
  }
}

class ContentserviceGet extends apiModel {
  public $result;
  public function setResult($result) {
    $this->result = $result;
  }
  public function getResult() {
    return $this->result;
  }
}
