diff --git a/src/TM.php b/src/TM.php new file mode 100644 index 0000000..244322d --- /dev/null +++ b/src/TM.php @@ -0,0 +1,74 @@ + + * @link https://github.com/brunofontes + */ + +namespace BrunoFontes\Memsource; + +enum ExportFormat +{ + case TMX; + case XLSX; +} + +class TM extends \BrunoFontes\Memsource\BaseApi +{ + private $_url = '/api2/v2/transMemories'; + + /** + * List projects + * + * @param string $queryParams An array with the Query parameters to filter projects + * + * @return string The JSON answer from Memsource + */ + public function list(array $queryParams = []): string + { + $response = $this->fetchApi->fetch('get', $this->_url, $queryParams); + if ($this->hasError($response)) { + throw new \Exception("Error listing TMs: " . $this->getError($response), 1); + } + return $response; + } + + /** + * Export a TM in an async way + * + * @param string $tmUid The TM UID + * @param array[string] $targetLangs The language pairs to export + * + * @return string A json string with all translation memories info + */ + public function export(string $tmUid, array $targetLangs): string + { + $queryParam['exportTargetlangs'] = $targetLangs; + $response = $this->fetchApi->fetch('jsonPost', "{$this->_url}/{$tmUid}/export", $queryParam); + if ($this->hasError($response)) { + throw new \Exception("Error getting tm {$tmUid}: " . $this->getError($response), 1); + } + return $response; + } + + /** + * Download a TM. You need to export the TM first in order to obtain the + * asyncExport id + * + * @param string $asyncId The asyncId obtainable by export function + * @param ExportFormat $format The file format that will be exported + * @param string $filename The filename that will be created to store the + * downloaded TM + */ + public function download(string $asyncId, string $filename, ExportFormat $fileFormat = ExportFormat::TMX) + { + $queryParam['format'] = $fileFormat->name; + $filecontent = $this->fetchApi->fetch('get', "/api2/v1/transMemories/downloadExport/{$asyncId}/", $queryParam); + if ($this->hasError($filecontent)) { + throw new \Exception("Error downloading TM asyncID {$asyncId}: " . $this->getError($filecontent), 1); + } + Helper::saveIntoFile($filename, $filecontent); + } + +}