<?php

// app/Libraries/CommonHelper.php
namespace App\Libraries;

use Dcat\Admin\Admin;
use JsonRPC\Client;
use Illuminate\Http\Request;
use JsonRPC\HttpClient;

class RpcClient
{
    // RPC超时时间
    public static $timeout = 5;

    /*
     * RPC客户端
     * @param $procedure string 远程过程调用名称
     * @param $params array 远程过程调用参数
     */
    public static function albumExecute ($procedure, $params = []) {
        $apiKey =  time();
        $apiSecret = env('ALBUM_RPC_SECRET');
        $payload = json_encode($params);
        $payload = $payload.$apiKey;
        $signature = hash_hmac('sha256', $payload, $apiSecret);
        $clientHost = env('ALBUM_RPC_URL');
        $httpClient = new HttpClient($clientHost);
        $httpClient = $httpClient->withTimeout(self::$timeout);
        $client = new Client($clientHost,false,$httpClient);
        try {
            $result = $client->execute( $procedure, $params,[], null,[
                    'X-API-Key: '.$apiKey,
                    'X-API-Signature: '.$signature,
            ]);
            return $result;
        } catch (\Exception $e) {
            return ['status'=>false,'msg'=>$e->getMessage(),'data'=>[]];
        }
    }

}