<?php defined('SYSPATH') OR die('No direct access allowed.');
/**
 * OAuth v2 Request
 *
 * @package    Kohana/OAuth2
 * @category   Request
 * @author     Kohana Team
 * @copyright  (c) 2010 Kohana Team
 * @license    http://kohanaframework.org/license
 * @author     Deon George
 * @copyright  (c) 2009-2013 Deon George
 * @license    http://dev.leenooks.net/license.html
 * @since      3.0.7
 */
abstract class Kohana_OAuth2_Request extends OAuth_Request {

	/**
	 * @static
	 * @param  string $type
	 * @param  string $method
	 * @param  string $url
	 * @param  array  $params
	 * @return OAuth2_Request
	 */
	public static function factory($type, $method, $url = NULL, array $params = NULL)
	{
		$class = 'OAuth2_Request_'.ucfirst($type);

		return new $class($method, $url, $params);
	}

	/**
	 * @var  boolean  send Authorization header?
	 */
	public $send_header = TRUE;

	protected $auth_params = '/^access_token$/';

	/**
	 * Convert the request parameters into an `Authorization` header.
	 *
	 *     $header = $request->as_header();
	 *
	 * [!!] This method implements [OAuth 2.0 v22 Spec 7.1](http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-7.1).
	 *
	 * @return  string
	 */
	public function as_header()
	{
		if ($access = Arr::get($this->params, 'access_token'))
		{
			if (is_string($this->send_header))
			{
				$header = $this->send_header;
			}
			else
			{
				$header = 'Bearer';
			}

			$access = $header.' '.$access;
		}

		return $access ? $access : NULL;
	}

}
