Click here to Skip to main content
15,914,419 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
How can i write this code in c#:

C#
<?php

class RestRequest
{
    protected $url;
    protected $verb;
    protected $requestBody;
    protected $requestLength;
    protected $username;
    protected $password;
    protected $acceptType;
    protected $contentType;
    protected $responseBody;
    protected $responseInfo;

    public function __construct ($url = null, $verb = 'GET', $requestBody = null)
    {
        $this->url              = $url;
        $this->verb             = $verb;
        $this->requestBody      = $requestBody;
        $this->requestLength    = 0;
        $this->username         = null;
        $this->password         = null;
        $this->acceptType       = 'application/json';
        $this->contentType      = 'application/json';
        $this->responseBody     = null;
        $this->responseInfo     = null;

        if ($this->requestBody !== null)
        {
            $this->buildPostBody();
        }
    }

    public function flush ()
    {
        $this->requestBody      = null;
        $this->requestLength    = 0;
        $this->verb             = 'GET';
        $this->responseBody     = null;
        $this->responseInfo     = null;
    }

    public function execute ()
    {
        $ch = curl_init();
        $this->setAuth($ch);

        try
        {
            switch (strtoupper($this->verb))
            {
                case 'GET':
                    $this->executeGet($ch);
                    break;
                case 'POST':
                    $this->executePost($ch);
                    break;
                case 'PUT':
                    $this->executePut($ch);
                    break;
                case 'DELETE':
                    $this->executeDelete($ch);
                    break;
                default:
                    throw new InvalidArgumentException('Current verb (' . $this->verb . ') is an invalid REST verb.');
            }
        }
        catch (InvalidArgumentException $e)
        {
            curl_close($ch);
            throw $e;
        }
        catch (Exception $e)
        {
            curl_close($ch);
            throw $e;
        }

    }

    public function buildPostBody ($data = null)
    {

        $data = ($data !== null) ? $data : $this->requestBody;

        /*
        if (!is_array($data))
        {
            throw new InvalidArgumentException('Invalid data input for postBody.  Array expected');
        }

        $data = http_build_query($data, '', '&');
        $this->requestBody = $data;
        */

        $this->requestBody = json_encode($data);


    }

    protected function executeGet ($ch)
    {
        $this->doExecute($ch);
    }

    protected function executePost ($ch)
    {
        if (!is_string($this->requestBody))
        {
            $this->buildPostBody();
        }

        curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody);
        curl_setopt($ch, CURLOPT_POST, 1);

        $this->doExecute($ch);
    }

    protected function executePut ($ch)
    {
        if (!is_string($this->requestBody))
        {
            $this->buildPostBody();
        }

        $this->requestLength = strlen($this->requestBody);

        //$fh = fopen('php://memory', 'rw');
        $fh = fopen('php://temp', 'rw');
        fwrite($fh, $this->requestBody);
        rewind($fh);

        curl_setopt($ch, CURLOPT_INFILE, $fh);
        curl_setopt($ch, CURLOPT_INFILESIZE, $this->requestLength);
        curl_setopt($ch, CURLOPT_PUT, true);

        $this->doExecute($ch);

        fclose($fh);
    }

    protected function executeDelete ($ch)
    {
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');

        $this->doExecute($ch);
    }

    protected function doExecute (&$curlHandle)
    {
        $this->setCurlOpts($curlHandle);
        $this->responseBody = curl_exec($curlHandle);
        $this->responseInfo = curl_getinfo($curlHandle);

        curl_close($curlHandle);
    }

    protected function setCurlOpts (&$curlHandle)
    {
        curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10);
        curl_setopt($curlHandle, CURLOPT_URL, $this->url);
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array ('Accept: ' . $this->acceptType));
        curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: ' . $this->contentType));
    }

    protected function setAuth (&$curlHandle)
    {
        if ($this->username !== null && $this->password !== null)
        {
            curl_setopt($curlHandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
            curl_setopt($curlHandle, CURLOPT_USERPWD, $this->username . ':' . $this->password);
        }
    }

    public function getAcceptType ()
    {
        return $this->acceptType;
    }

    public function setAcceptType ($acceptType)
    {
        $this->acceptType = $acceptType;
    }

    public function getPassword ()
    {
        return $this->password;
    }

    public function setPassword ($password)
    {
        $this->password = $password;
    }

    public function getResponseBody ()
    {
        return $this->responseBody;
    }

    public function getResponseInfo ()
    {
        return $this->responseInfo;
    }

    public function getUrl ()
    {
        return $this->url;
    }

    public function setUrl ($url)
    {
        $this->url = $url;
    }

    public function getUsername ()
    {
        return $this->username;
    }

    public function setUsername ($username)
    {
        $this->username = $username;
    }

    public function getVerb ()
    {
        return $this->verb;
    }

    public function setVerb ($verb)
    {
        $this->verb = $verb;
    }
}


//$request = new RestRequest('http://example.com/api/user/1', 'GET');
//$request = new RestRequest('http://localhost/api/user/1', 'GET');
$data = array (
                "first_name" => "XYZ",
                "last_name" => "ABC"
                );
$data1 = array (
                "username" => "sourav",
                "password" => "1234"
                );
//$request = new RestRequest('http://localhost/api/user/1', 'POST', $data);
//$request = new RestRequest('http://localhost/', 'GET', $data);
//$request = new RestRequest('http://localhost/users/1', 'GET', $data);
//$request = new RestRequest('http://localhost/sourav', 'GET', $data);
//$request = new RestRequest('http://localhost/login', 'POST', $data1);
//$request = new RestRequest('http://localhost/users/1', 'PUT', $data);
//$request = new RestRequest('http://localhost/users', 'POST', $data1);
//$request = new RestRequest('http://localhost/users/10', 'DELETE', $data1);


//$request = new RestRequest('http://localhost/sourav', 'GET', $data);
//file_put_contents('./sourav.txt', json_encode($data1));
$request = new RestRequest('http://localhost/users', 'POST', $data1);


$request->execute();

echo '<pre>' . print_r($request, true) . '</pre>';

?>
Posted

1 solution

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900