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

グッズメモ アフィリエイト・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 = 15, $retryCount = 3) {
		//$timeout = 5 の場合、テスト用ページでタイムアウトエラーになった。
		//例:cURL error 28: Operation timed out after 0 milliseconds with 0 out of 0 bytes received.

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

		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)) {
				$lastResponseCode = -1; //$errorCode = $response->get_error_code(); // WP_Error() の第一引数 //レスポンスコードでない
				$lastErrorMessage = $response->get_error_message(); // WP_Error() の第二引数
				continue;
			}

			$lastResponseCode = $response["response"]["code"];
			//$lastResponseCode = 500;//$lastResponseCode = 503;
			if ($lastResponseCode == 200) {
				$contents = $response['body'];
				return $contents;
			} else {
				$scheme = parse_url($url, PHP_URL_SCHEME);
				$host = parse_url($url, PHP_URL_HOST);
				$path = parse_url($url, PHP_URL_PATH);
				$lastErrorMessage = "HTTPリクエストの失敗:URL=[" . $scheme . "://" . $host . $path . "]";
			}
		}

		throw new HttpRequestException($lastErrorMessage, $lastResponseCode);
	}

	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;
    }

}

コンピューター
この記事をシェアする

グッズ・メモランダム