Ooyala::ajax_sign_request PHP Method

ajax_sign_request() public method

Process signing request
public ajax_sign_request ( )
    function ajax_sign_request()
    {
        $settings = $this->get_settings();
        if (!$this->configured()) {
            $this->ajax_error(__("Plugin not configured", 'ooyala'));
        }
        // check nonce
        $this->ajax_check();
        $request = json_decode(file_get_contents('php://input'), true);
        if (!isset($request) || !is_array($request)) {
            $this->ajax_error(__("Invalid request", 'ooyala'));
        }
        $request = wp_parse_args($request, array('method' => '', 'path' => '', 'body' => '', 'params' => array()));
        $request['params']['api_key'] = $settings['api_key'];
        $request['params']['expires'] = time() + 300;
        $to_sign = $settings['api_secret'] . $request['method'] . $request['path'];
        $param_sorted = array_keys($request['params']);
        sort($param_sorted);
        foreach ($param_sorted as $key) {
            $to_sign .= $key . '=' . $request['params'][$key];
        }
        $to_sign .= $request['body'];
        // Sign the payload in $to_sign
        $hash = hash("sha256", $to_sign, true);
        $base64_hash = base64_encode($hash);
        $request['params']['signature'] = rtrim(substr($base64_hash, 0, 43), '=');
        $url = self::api_base . $request['path'] . '?' . http_build_query($request['params']);
        $this->ajax_success(null, array('url' => $url));
    }