Repo for the search and displace core module including the interface to select files and search and displace operations to run on them. https://searchanddisplace.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

88 lines
2.4 KiB

<?php
namespace App\SearchDisplace\Ingest;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
class SendDocument
{
protected $url;
public function __construct()
{
$this->url = env('SD_INGEST_URL') . '/ingest';
}
public function execute($id, $document, $fileResultType = 'md')
{
try {
$response = $this->sendRequest($id, $document, $fileResultType);
if ($response['status'] === 'fail') {
$message = array_key_exists('message', $response)
? $response['message']
: 'Something went wrong.';
throw new \Exception($message);
}
// The file in Ingest si in Processing state.
} catch (\Exception $exception) {
throw new \Exception($exception->getMessage());
}
}
/**
* Send request to Ingest.
*
* @param $id
* @param $document
* @return mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function sendRequest($id, $document, $fileResultType)
{
$client = new Client();
try {
$response = $client->request('post', $this->url, [
'headers' => [
'Accept' => 'application/json',
],
'multipart' => [
[
'name' => 'id',
'contents' => $id,
],
[
'name' => 'file_result_type',
'contents' => $fileResultType,
],
[
'name' => 'mime_type',
'contents' => $document['type'],
],
[
'name' => 'document',
'contents' => fopen($document['path'], 'r'),
'filename' => $document['name'],
'Content-type' => $document['type'],
]
],
]);
return json_decode($response->getBody()->getContents(), true);
} catch (ClientException $clientException) {
$error = json_decode($clientException->getResponse()->getBody()->getContents(), true);
throw new \Exception($error['message']);
} catch (\Exception $exception) {
throw $exception;
}
}
}