123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- <?php
- namespace addons\blog\library\aip\lib;
- class AipHttpUtil
- {
-
-
-
-
-
- public static $PERCENT_ENCODED_STRINGS;
-
- public static function __init()
- {
- AipHttpUtil::$PERCENT_ENCODED_STRINGS = array();
- for ($i = 0; $i < 256; ++$i) {
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[$i] = sprintf("%%%02X", $i);
- }
-
- foreach (range('a', 'z') as $ch) {
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord($ch)] = $ch;
- }
-
- foreach (range('A', 'Z') as $ch) {
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord($ch)] = $ch;
- }
-
- foreach (range('0', '9') as $ch) {
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord($ch)] = $ch;
- }
-
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord('-')] = '-';
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord('.')] = '.';
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord('_')] = '_';
- AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord('~')] = '~';
- }
-
- public static function urlEncodeExceptSlash($path)
- {
- return str_replace("%2F", "/", AipHttpUtil::urlEncode($path));
- }
-
- public static function urlEncode($value)
- {
- $result = '';
- for ($i = 0; $i < strlen($value); ++$i) {
- $result .= AipHttpUtil::$PERCENT_ENCODED_STRINGS[ord($value[$i])];
- }
- return $result;
- }
-
- public static function getCanonicalQueryString(array $parameters)
- {
-
- if (count($parameters) == 0) {
- return '';
- }
- $parameterStrings = array();
- foreach ($parameters as $k => $v) {
-
- if (strcasecmp('Authorization', $k) == 0) {
- continue;
- }
- if (!isset($k)) {
- throw new \InvalidArgumentException(
- "parameter key should not be null"
- );
- }
- if (isset($v)) {
-
- $parameterStrings[] = AipHttpUtil::urlEncode($k)
- . '=' . AipHttpUtil::urlEncode((string)$v);
- } else {
-
- $parameterStrings[] = AipHttpUtil::urlEncode($k) . '=';
- }
- }
-
- sort($parameterStrings);
-
- return implode('&', $parameterStrings);
- }
-
- public static function getCanonicalURIPath($path)
- {
-
- if (empty($path)) {
- return '/';
- } else {
-
- if ($path[0] == '/') {
- return AipHttpUtil::urlEncodeExceptSlash($path);
- } else {
- return '/' . AipHttpUtil::urlEncodeExceptSlash($path);
- }
- }
- }
-
- public static function getCanonicalHeaders($headers)
- {
-
- if (count($headers) == 0) {
- return '';
- }
- $headerStrings = array();
- foreach ($headers as $k => $v) {
-
- if ($k === null) {
- continue;
- }
-
- if ($v === null) {
- $v = '';
- }
-
- $headerStrings[] = AipHttpUtil::urlEncode(strtolower(trim($k))) . ':' . AipHttpUtil::urlEncode(trim($v));
- }
-
- sort($headerStrings);
-
- return implode("\n", $headerStrings);
- }
- }
- AipHttpUtil::__init();
|