tp_client = $tp_client; } /** @return string */ abstract protected function get_endpoint_uri(); /** @return bool */ abstract protected function is_authenticated(); /** * @param array $params * * @return mixed */ protected function get( array $params = array() ) { return $this->remote_call( $params, 'GET' ); } /** * @param array $params * * @return mixed */ protected function post( array $params = array() ) { return $this->remote_call( $params, 'POST' ); } protected function put( array $params = array() ) { // @todo: Implement put } protected function delete( array $params = array() ) { // @todo: Implement delete } /** * @param array $params * @param string $method * * @return mixed */ private function remote_call( array $params, $method ) { $response = false; try { $params = $this->pre_process_params( $params ); $response = TranslationProxy_Api::proxy_request( $this->get_endpoint_uri(), $params, $method ); } catch ( Exception $e ) { $this->exception = $e; } return $response; } /** * @param array $params * * @return array */ private function pre_process_params( array $params ) { if ( $this->is_authenticated() ) { $params['accesskey'] = $this->tp_client->get_project()->get_access_key(); } return $params; } /** * WPML does not store the Translation Proxy Job ID * We have to identify the job somehow. * This is why we are using `original_file_id`. * It is the same as used in the XLIFF file as a value of `original` attribute. * The combination of `original_file_id` and `batch_id` will be always unique. * Translation Proxy provides this call, with these arguments, for this specific reason. * * @see https://git.onthegosystems.com/tp/translation-proxy/wikis/rate_translation * @see https://git.onthegosystems.com/tp/translation-proxy/wikis/send_feedback * * @param int $job_id * @param int $document_source_id * * @return string */ protected function get_original_file_id( $job_id, $document_source_id ) { return $job_id . '-' . md5( $job_id . $document_source_id ); } /** @return null|Exception */ public function get_exception() { return $this->exception; } /** @return null|string */ public function get_error_message() { return $this->exception->getMessage(); } }