init
This commit is contained in:
commit
72a26edcff
22092 changed files with 2101903 additions and 0 deletions
73
lib/PhpSpreadsheet/Calculation/Web/Service.php
Normal file
73
lib/PhpSpreadsheet/Calculation/Web/Service.php
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
|
||||
namespace PhpOffice\PhpSpreadsheet\Calculation\Web;
|
||||
|
||||
use PhpOffice\PhpSpreadsheet\Calculation\Information\ExcelError;
|
||||
use PhpOffice\PhpSpreadsheet\Settings;
|
||||
use Psr\Http\Client\ClientExceptionInterface;
|
||||
|
||||
class Service
|
||||
{
|
||||
/**
|
||||
* WEBSERVICE.
|
||||
*
|
||||
* Returns data from a web service on the Internet or Intranet.
|
||||
*
|
||||
* Excel Function:
|
||||
* Webservice(url)
|
||||
*
|
||||
* @return string the output resulting from a call to the webservice
|
||||
*/
|
||||
public static function webService(string $url): string
|
||||
{
|
||||
$url = trim($url);
|
||||
if (strlen($url) > 2048) {
|
||||
return ExcelError::VALUE(); // Invalid URL length
|
||||
}
|
||||
|
||||
if (!preg_match('/^http[s]?:\/\//', $url)) {
|
||||
return ExcelError::VALUE(); // Invalid protocol
|
||||
}
|
||||
|
||||
// Get results from the the webservice
|
||||
$client = Settings::getHttpClient();
|
||||
$requestFactory = Settings::getRequestFactory();
|
||||
$request = $requestFactory->createRequest('GET', $url);
|
||||
|
||||
try {
|
||||
$response = $client->sendRequest($request);
|
||||
} catch (ClientExceptionInterface) {
|
||||
return ExcelError::VALUE(); // cURL error
|
||||
}
|
||||
|
||||
if ($response->getStatusCode() != 200) {
|
||||
return ExcelError::VALUE(); // cURL error
|
||||
}
|
||||
|
||||
$output = $response->getBody()->getContents();
|
||||
if (strlen($output) > 32767) {
|
||||
return ExcelError::VALUE(); // Output not a string or too long
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* URLENCODE.
|
||||
*
|
||||
* Returns data from a web service on the Internet or Intranet.
|
||||
*
|
||||
* Excel Function:
|
||||
* urlEncode(text)
|
||||
*
|
||||
* @return string the url encoded output
|
||||
*/
|
||||
public static function urlEncode(mixed $text): string
|
||||
{
|
||||
if (!is_string($text)) {
|
||||
return ExcelError::VALUE();
|
||||
}
|
||||
|
||||
return str_replace('+', '%20', urlencode($text));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue