Added example env
This commit is contained in:
@@ -8,8 +8,9 @@ class File_Server {
|
||||
const int FAV_SERVER_NEED_CHANGE = 3600; // In seconds.
|
||||
|
||||
const array ENDPOINTS = [
|
||||
'random-server' => "servers/take-a-random-server.php?return_type=%s",
|
||||
'server-by-id' => "servers/get-server-by-id.php?server_id=%s",
|
||||
'random-server' => "Getrandomserver",
|
||||
'server-by-id' => "Getserver&server_id=%d",
|
||||
'server-by-url' => "Getserver&server_url=%s"
|
||||
];
|
||||
|
||||
private(set) public string $server_url;
|
||||
@@ -19,9 +20,9 @@ class File_Server {
|
||||
|
||||
if( $get_a_server ){
|
||||
$resp = self::get_favorite_server( $post_id );
|
||||
if( $resp !== null ) {
|
||||
$this->server_url = $resp[0];
|
||||
$this->server_id = intval($resp[1]);
|
||||
if( !isset( $resp['_wp_error'] ) ) {
|
||||
$this->server_url = $resp['server_url'];
|
||||
$this->server_id = $resp['server_id'];
|
||||
} else {
|
||||
$this->server_url = "";
|
||||
$this->server_id = -1;
|
||||
@@ -44,11 +45,34 @@ class File_Server {
|
||||
|
||||
public static function build_url( string $endpoint, ...$args ){
|
||||
|
||||
return sprintf( $_ENV['ROMHACKPLAZA_API_URL'] . $endpoint, ...$args );
|
||||
return sprintf( $_ENV['ROMHACKPLAZA_API_URL'] . "index.php?action=" . $endpoint, ...$args );
|
||||
|
||||
}
|
||||
|
||||
public static function get_favorite_server( int $post_id ){
|
||||
public static function generate_token(
|
||||
int $user_id,
|
||||
string $to,
|
||||
string $action
|
||||
): string {
|
||||
|
||||
$info = [
|
||||
'user_id' => $user_id,
|
||||
'to' => $to,
|
||||
'action' => $action,
|
||||
'generated_at' => time(),
|
||||
'expires_at' => time() + ( 15 * 60 ),
|
||||
'romhackplaza' => \bin2hex( random_bytes( 16 ) )
|
||||
];
|
||||
|
||||
$json = json_encode( $info );
|
||||
$sig = hash_hmac( 'sha256', $json, $_ENV['ROMHACKPLAZAFS_SECRET_KEY'] );
|
||||
|
||||
$end = base64_encode( $json ) . "|" . $sig;
|
||||
return $end;
|
||||
|
||||
}
|
||||
|
||||
public static function get_favorite_server( int $post_id ): array {
|
||||
|
||||
if( $post_id == 0 )
|
||||
return self::get_a_random_server();
|
||||
@@ -63,30 +87,33 @@ class File_Server {
|
||||
if( $time > self::FAV_SERVER_NEED_CHANGE )
|
||||
return self::get_a_random_server();
|
||||
|
||||
$server_url = wp_remote_get( self::build_url( self::ENDPOINTS['server-by-id'], $favorite_server ) )['body'];
|
||||
return [ $server_url, $favorite_server ];
|
||||
$request = wp_remote_get( self::build_url( self::ENDPOINTS['server-by-id'], $favorite_server ) );
|
||||
if( is_wp_error( $request ) ) {
|
||||
return [ '_wp_error' => 1 ];
|
||||
}
|
||||
|
||||
$body = json_decode( wp_remote_retrieve_body( $request ), ARRAY_A );
|
||||
if( $body['success'] !== true ){
|
||||
return [ '_wp_error' => 2 ];
|
||||
}
|
||||
|
||||
return $body['server'];
|
||||
|
||||
}
|
||||
|
||||
public static function get_a_random_server( $return_type = "PHP" ){
|
||||
public static function get_a_random_server(): array {
|
||||
|
||||
switch( $return_type ) {
|
||||
case "PHP":
|
||||
case "JS":
|
||||
break;
|
||||
default:
|
||||
$return_type = "RAW";
|
||||
break;
|
||||
$request = wp_remote_get( self::build_url( self::ENDPOINTS['random-server'] ) );
|
||||
if( is_wp_error( $request ) ) {
|
||||
return [ '_wp_error' => 1 ];
|
||||
}
|
||||
|
||||
$resp = wp_remote_get( self::build_url( self::ENDPOINTS['random-server'], $return_type ) );
|
||||
if( !is_wp_error( $resp ) ) {
|
||||
if ($return_type === "PHP")
|
||||
return explode("|", $resp['body']);
|
||||
else
|
||||
echo $resp['body'];
|
||||
$body = json_decode( wp_remote_retrieve_body( $request ), ARRAY_A );
|
||||
if( $body['success'] !== true ){
|
||||
return [ '_wp_error' => 2 ];
|
||||
}
|
||||
return null;
|
||||
|
||||
return $body['server'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user