BilingualFile: added uploadBilingualFile

This commit is contained in:
Bruno F. Fontes 2019-06-24 19:47:45 -03:00
parent 5d420d26f6
commit 404e128cfe
Signed by: brunofontes
GPG Key ID: EE3447CE80048495
2 changed files with 38 additions and 9 deletions

View File

@ -9,7 +9,7 @@ namespace BrunoFontes\Memsource;
class BilingualFile extends \BrunoFontes\Memsource\BaseApi class BilingualFile extends \BrunoFontes\Memsource\BaseApi
{ {
private $_url = '/bilingualFiles'; private $_url = '/api2/v1/bilingualFiles';
/** /**
* Download one or more bilingual files * Download one or more bilingual files
@ -57,14 +57,32 @@ class BilingualFile extends \BrunoFontes\Memsource\BaseApi
return ['jobs' => $convertedArray]; return ['jobs' => $convertedArray];
} }
private function _saveIntoFile(string $filename, string $filecontent) private function _saveIntoFile(string $filename, string $filecontent): void
{ {
try { try {
$f = fopen($filename, 'w+'); $f = fopen($filename, 'w+');
fwrite($f, $filecontent); fwrite($f, $filecontent);
fclose($f); fclose($f);
} catch (\Exception $e) { } catch (\Exception $e) {
throw new Exception("File could not be saved: " . $e->error, 1); throw new \Exception("File could not be saved: {$e->error}", 1);
} }
} }
/**
* Upload a bilingual file to Memsource
*
* @param string $filename The filename to be uploaded
* @param array $params Any API (HTTP GET) parameters as ['key' => 'value'] format
*
* @return string The http request responde from API in json format
*/
public function uploadBilingualFile(string $filename, array $params): string
{
$urlParams = http_build_query($params);
$fileContent = file_get_contents($filename);
if ($fileContent === false) {
throw new \Exception('File for upload inexistent or invalid', 1);
}
return $this->fetchApi->fetch('put', $this->_url . "?{$urlParams}", [$fileContent]);
}
} }

View File

@ -42,9 +42,12 @@ class FetchApi
$parameters = http_build_query($parameters); $parameters = http_build_query($parameters);
$url = $url . ($parameters ? '?'.$parameters : ''); $url = $url . ($parameters ? '?'.$parameters : '');
break; break;
case 'put':
$setopt = $this->getPutParam()+$this->getPostParam(implode("", $parameters));
break;
case 'post': case 'post':
$parameters = http_build_query($parameters); $parameters = http_build_query($parameters);
$setopt = $this->getPostParam($parameters); $setopt = $setopt + $this->getPostParam($parameters);
break; break;
case 'jsonPost': case 'jsonPost':
$setopt = $this->getJsonPostParam($parameters); $setopt = $this->getJsonPostParam($parameters);
@ -67,7 +70,7 @@ class FetchApi
]; ];
} }
private function getJsonPostParam(array $postFields) private function getJsonPostParam(array $postFields = [])
{ {
return [ return [
CURLOPT_HTTPHEADER => ['Content-type: application/json'], CURLOPT_HTTPHEADER => ['Content-type: application/json'],
@ -76,7 +79,7 @@ class FetchApi
]; ];
} }
private function getPostParam(string $postFields) private function getPostParam(string $postFields = '')
{ {
return [ return [
CURLOPT_POST => true, CURLOPT_POST => true,
@ -84,6 +87,14 @@ class FetchApi
]; ];
} }
private function getPutParam()
{
return [
CURLOPT_HTTPHEADER => ['Content-type: application/octet-stream'],
CURLOPT_CUSTOMREQUEST => "PUT"
];
}
protected function curl(string $url, array $curl_extra_setopt = []) protected function curl(string $url, array $curl_extra_setopt = [])
{ {
if (empty($url)) { if (empty($url)) {
@ -99,9 +110,9 @@ class FetchApi
CURLOPT_TIMEOUT => 500, CURLOPT_TIMEOUT => 500,
CURLOPT_FOLLOWLOCATION => true, CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true CURLOPT_RETURNTRANSFER => true
]; ] + $curl_extra_setopt;
$curl = curl_init(); $curl = curl_init();
curl_setopt_array($curl, ($curl_setopt + $curl_extra_setopt)); curl_setopt_array($curl, $curl_setopt);
$response = curl_exec($curl); $response = curl_exec($curl);
curl_close($curl); curl_close($curl);
return $response; return $response;