ネットワーク処理・グッズメモ アフィリエイト

グッズメモ アフィリエイト・WordPressプラグインのソースコード記事の目次WordPress

DefaultRESTParameter.php

namespace goodsmemo\network;

/**
 * Description of DefaultRESTParameter
 *
 * @author Goods Memo
 */
class DefaultRESTParameter {

    private $keyword;

    public function getKeyword() {
	return $this->keyword;
    }

    public function setKeyword($keyword) {
	$this->keyword = $keyword;
    }

}

HTTPRequest.php

ネットワーク経由で、例えば商品情報を取得します。

namespace goodsmemo\network;

use goodsmemo\exception\HttpRequestException;

require_once GOODS_MEMO_DIR . "exception/HttpRequestException.php";

/**
 * Description of HTTPRequest
 *
 * @author Goods Memo
 */
class HTTPRequest {

    public static function getContents($url, $timeout = 10, $retryCount = 6) {

	$args = array('timeout' => $timeout);

	for ($i = 0; $i < $retryCount; $i++) {

	    if ($i >= 1) {
		sleep(1); //再試行の待ち時間(1秒)
	    }

	    /*
	     * WordPressのwp_remote_get関数を使う。
	     * PHPのfile_get_contents関数より、エラー処理をしやすいから。
	     */
	    $response = wp_remote_get($url, $args);

	    if (!is_wp_error($response) && $response["response"]["code"] == 200) {

		$contents = $response['body'];
		return $contents;
	    }
	}

	$scheme = parse_url($url, PHP_URL_SCHEME);
	$host = parse_url($url, PHP_URL_HOST);
	$path = parse_url($url, PHP_URL_PATH);
	$errorMessage = "HTTPリクエストの失敗:URL=[" . $scheme . "://" . $host . $path . "]";
	throw new HttpRequestException($errorMessage);
    }

    public static function makeQueryString($parameterMap) {

	ksort($parameterMap);

	$encodedParameterArray = array();
	foreach ($parameterMap as $key => $value) {

	    $oneParameter = rawurlencode($key) . "=" . rawurlencode($value);
	    array_push($encodedParameterArray, $oneParameter);
	}

	$queryString = join("&", $encodedParameterArray);
	return $queryString;
    }

}

URLInfo.php

namespace goodsmemo\network;

/**
 * Description of URLInfo
 *
 * @author Goods Memo
 */
class URLInfo {

    //http://php.net/manual/ja/function.parse-url.php
    //scheme
    private $hostname;
    private $path;

    public function getHostname() {
	return $this->hostname;
    }

    public function getPath() {
	return $this->path;
    }

    public function setHostname($hostname) {
	$this->hostname = $hostname;
    }

    public function setPath($path) {
	$this->path = $path;
    }

}

URLUtils.php

namespace goodsmemo\network;

use goodsmemo\network\URLInfo;

require_once GOODS_MEMO_DIR . "network/URLInfo.php";

/**
 * Description of URLUtils
 *
 * @author Goods Memo
 */
class URLUtils {

    public static function makeURLInfo($optionMap, $hostnameID, $pathID): URLInfo {

	$urlInfo = new URLInfo();

	$hostname = $optionMap[$hostnameID];
	$urlInfo->setHostname($hostname);

	$path = $optionMap[$pathID];
	$urlInfo->setPath($path);

	return $urlInfo;
    }

}