first commit
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* @package wpml-core
|
||||
* @subpackage wpml-core
|
||||
*/
|
||||
|
||||
if( class_exists( 'TranslationProxy_Api' ) ) {
|
||||
// Workaround for UnitTests.
|
||||
return;
|
||||
}
|
||||
|
||||
class TranslationProxy_Api {
|
||||
const API_VERSION = 1.1;
|
||||
|
||||
public static function proxy_request(
|
||||
$path,
|
||||
$params = array(),
|
||||
$method = 'GET',
|
||||
$multi_part = false,
|
||||
$has_return_value = true
|
||||
) {
|
||||
|
||||
return wpml_tm_load_tp_networking()->send_request(
|
||||
OTG_TRANSLATION_PROXY_URL . $path,
|
||||
$params,
|
||||
$method,
|
||||
$has_return_value
|
||||
);
|
||||
}
|
||||
|
||||
public static function proxy_download( $path, $params ) {
|
||||
|
||||
return wpml_tm_load_tp_networking()->send_request(
|
||||
OTG_TRANSLATION_PROXY_URL . $path,
|
||||
$params,
|
||||
'GET',
|
||||
true,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
public static function service_request(
|
||||
$url,
|
||||
$params = array(),
|
||||
$method = 'GET',
|
||||
$has_return_value = true,
|
||||
$json_response = false,
|
||||
$has_api_response = false
|
||||
) {
|
||||
|
||||
return wpml_tm_load_tp_networking()->send_request(
|
||||
$url,
|
||||
$params,
|
||||
$method,
|
||||
$has_return_value,
|
||||
$json_response,
|
||||
$has_api_response
|
||||
);
|
||||
}
|
||||
|
||||
public static function add_parameters_to_url( $url, $params ) {
|
||||
if ( preg_match_all( '/\{.+?\}/', $url, $symbs ) ) {
|
||||
foreach ( $symbs[0] as $symb ) {
|
||||
$without_braces = preg_replace( '/\{|\}/', '', $symb );
|
||||
if ( preg_match_all( '/\w+/', $without_braces, $indexes ) ) {
|
||||
foreach ( $indexes[0] as $index ) {
|
||||
if ( isset( $params[ $index ] ) ) {
|
||||
$value = $params[ $index ];
|
||||
$url = preg_replace( preg_quote( "/$symb/" ), $value, $url );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'gzdecode' ) ) {
|
||||
/**
|
||||
* Inflates a string enriched with gzip headers. Counterpart to gzencode().
|
||||
* Extracted from upgradephp
|
||||
* http://include-once.org/p/upgradephp/
|
||||
*
|
||||
* officially available by default in php @since 5.4.
|
||||
*/
|
||||
function gzdecode( $gzdata, $maxlen = null ) {
|
||||
|
||||
// -- decode header
|
||||
$len = strlen( $gzdata );
|
||||
if ( $len < 20 ) {
|
||||
return;
|
||||
}
|
||||
$head = substr( $gzdata, 0, 10 );
|
||||
$head = unpack( 'n1id/C1cm/C1flg/V1mtime/C1xfl/C1os', $head );
|
||||
list( $ID, $CM, $FLG, $MTIME, $XFL, $OS ) = array_values( $head );
|
||||
$FTEXT = 1 << 0;
|
||||
$FHCRC = 1 << 1;
|
||||
$FEXTRA = 1 << 2;
|
||||
$FNAME = 1 << 3;
|
||||
$FCOMMENT = 1 << 4;
|
||||
$head = unpack( 'V1crc/V1isize', substr( $gzdata, $len - 8, 8 ) );
|
||||
list( $CRC32, $ISIZE ) = array_values( $head );
|
||||
|
||||
// -- check gzip stream identifier
|
||||
if ( $ID != 0x1f8b ) {
|
||||
trigger_error( 'gzdecode: not in gzip format', E_USER_WARNING );
|
||||
|
||||
return;
|
||||
}
|
||||
// -- check for deflate algorithm
|
||||
if ( $CM != 8 ) {
|
||||
trigger_error( 'gzdecode: cannot decode anything but deflated streams', E_USER_WARNING );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// -- start of data, skip bonus fields
|
||||
$s = 10;
|
||||
if ( $FLG & $FEXTRA ) {
|
||||
$s += $XFL;
|
||||
}
|
||||
if ( $FLG & $FNAME ) {
|
||||
$s = strpos( $gzdata, "\000", $s ) + 1;
|
||||
}
|
||||
if ( $FLG & $FCOMMENT ) {
|
||||
$s = strpos( $gzdata, "\000", $s ) + 1;
|
||||
}
|
||||
if ( $FLG & $FHCRC ) {
|
||||
$s += 2; // cannot check
|
||||
}
|
||||
|
||||
// -- get data, uncompress
|
||||
$gzdata = substr( $gzdata, $s, $len - $s );
|
||||
if ( $maxlen ) {
|
||||
$gzdata = gzinflate( $gzdata, $maxlen );
|
||||
|
||||
return ( $gzdata ); // no checks(?!)
|
||||
} else {
|
||||
$gzdata = gzinflate( $gzdata );
|
||||
}
|
||||
|
||||
// -- check+fin
|
||||
$chk = crc32( $gzdata );
|
||||
if ( $CRC32 != $chk ) {
|
||||
trigger_error( "gzdecode: checksum failed (real$chk != comp$CRC32)", E_USER_WARNING );
|
||||
} elseif ( $ISIZE != strlen( $gzdata ) ) {
|
||||
trigger_error( 'gzdecode: stream size mismatch', E_USER_WARNING );
|
||||
} else {
|
||||
return ( $gzdata );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user