--- /dev/null
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+// +----------------------------------------------------------------------+
+// | PHP Version 5 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 2010 Takahiro Ooishi |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 3.0 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available through the world-wide-web at the following url: |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Author: Takahiro Ooishi <taka0125.biz@gmail.com> |
+// +----------------------------------------------------------------------+
+//
+// $Id$
+
+abstract class Core_Http_Request
+{
+ protected $getParams;
+ protected $postParams;
+ protected $cookieFile;
+
+ function __construct($get_params = array(), $post_params = array(), $cookie_file = null)
+ {
+ $this->setGetParams($get_params);
+ $this->setPostParams($post_params);
+ $this->setCookieFile($cookie_file);
+ }
+
+ function __destruct()
+ {
+ @unlink($this->cookieFile);
+ }
+
+ function getParams()
+ {
+ return $this->getParams;
+ }
+
+ function postParams()
+ {
+ return $this->postParams;
+ }
+
+ function cookieFile()
+ {
+ return $this->cookieFile;
+ }
+
+ function buildUrl($url)
+ {
+ if (!$this->existsGetParams()) return $url;
+
+ $query_string = http_build_query($this->getParams);
+ $items = parse_url($url);
+
+ if ($this->existsQueryStrings($items)) {
+ $query_string = "?{$items['query']}&{$query_string}";
+ } else {
+ $query_string = "?{$query_string}";
+ }
+
+ return "{$items['scheme']}://{$items['host']}{$items['path']}{$query_string}";
+ }
+
+ function isUseCookie()
+ {
+ if (!is_string($this->cookieFile)) return false;
+ if (strlen($this->cookieFile) < 1) return false;
+ return true;
+ }
+
+ function existsGetParams()
+ {
+ return $this->existsParams($this->getParams);
+ }
+
+ function existsPostParams()
+ {
+ return $this->existsParams($this->postParams);
+ }
+
+ protected function existsParams($params)
+ {
+ if (!is_array($params)) return false;
+ if (count($params) < 1) return false;
+ return true;
+ }
+
+ protected function existsQueryStrings($items)
+ {
+ if (!isset($items['query'])) return false;
+ if (strlen($items['query']) < 1) return false;
+ return true;
+ }
+
+ protected function setGetParams($params)
+ {
+ if ($this->isInvalidParams($params)) throw new ValidationException($params, 'Invalid GetParams.');
+ $this->getParams = $params;
+ }
+
+ protected function setPostParams($params)
+ {
+ if ($this->isInvalidParams($params)) throw new ValidationException($params, 'Invalid PostParams.');
+ $this->postParams = $params;
+ }
+
+ protected function setCookieFile($cookie_file)
+ {
+ if ($this->isInvalidCookieFile($cookie_file)) throw new ValidationException($cookie_file, 'Invalid CookieFile.');
+ $this->cookieFile = $cookie_file;
+ }
+
+ protected function isInvalidParams($params)
+ {
+ if (!is_array($params)) return true;
+ return false;
+ }
+
+ protected function isInvalidCookieFile($cookie_file)
+ {
+ if (is_null($cookie_file)) return false;
+ if (!is_string($cookie_file)) return true;
+ if (strlen($cookie_file) < 1) return true;
+ return false;
+ }
+}