Skip to content

Request object selection is not supported #2

@nicklike

Description

@nicklike

Hi, this method should support the selection of the request object

 public static function render(QueryList $queryList,$phantomJsBin,$url,$debug = false,$commandOpt = [])
{
    $client = self::getBrowser($phantomJsBin,$commandOpt);
    $request = $client->getMessageFactory()->createRequest();
    if($url instanceof Closure){
        $request = $url($request);
    }else{
        $request->setMethod('GET');
        $request->setUrl($url);
    }
    $response = $client->getMessageFactory()->createResponse();
    if($debug) {
        $client->getEngine()->debug(true);
    }
    $client->send($request, $response);
    if($debug){
        print_r($client->getLog());
        print_r($response->getConsole());
    }
    $html = '<html>'.$response->getContent().'</html>';
    $queryList->setHtml($html);
    return $queryList;
}

My modified code

public static function render(QueryList $queryList, $phantomJsBin, $url, $debug = false, $commandOpt = [])
{
    $client = self::getBrowser($phantomJsBin, $commandOpt);
    
    if ($url instanceof Closure) {
        $ReflectionFunc = new \ReflectionFunction($url);
        if (isset($ReflectionFunc->getParameters()[0])) {
            $class = $ReflectionFunc->getParameters()[0]->getClass()->getName();
        }
        switch ($class) {
            case Request::class:
                $request =$client->getMessageFactory()->createRequest();
                break;
            case CaptureRequest::class:
                $request =$client->getMessageFactory()->createCaptureRequest();
                break;
            case PdfRequest::class:
                $request =$client->getMessageFactory()->createPdfRequest();
                break;
            default:
                throw new Exception('Not Found Request');
                break;
        }
        $request = $url($request);
    }
    else {
        $request = $client->getMessageFactory()->createRequest();
        $request->setMethod('GET');
        $request->setUrl($url);
    }
    
    $response = $client->getMessageFactory()->createResponse();
    if ($debug) {
        $client->getEngine()->debug(true);
    }
    $client->send($request, $response);
    if ($debug) {
        print_r($client->getLog());
        print_r($response->getConsole());
    }
    
    $html = '<html>' . $response->getContent() . '</html>';
    $queryList->setHtml($html);
    
    return $queryList;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions