написание функции cURL в приложении rails - PullRequest
1 голос
/ 30 сентября 2010

Я пытаюсь преобразовать эту функцию PHP cURL для работы с моим приложением rails.Этот фрагмент кода взят из шлюза оплаты SMS, который должен проверять параметры POST.Так как я большой новичок в PHP, я понятия не имею, как справиться с этой проблемой.

$verify_url = 'http://smsgatewayadress';



    $fields = '';

    $d = array(

            'merchant_ID' => $_POST['merchant_ID'],

            'local_ID' => $_POST['local_ID'],

            'total' => $_POST['total'],

            'ipn_verify' => $_POST['ipn_verify'],

            'timeout' => 10, 
            );



    foreach ($d as $k => $v)

    {

        $fields .= $k . "=" . urlencode($v) . "&";

    }

    $fields = substr($fields, 0, strlen($fields)-1);



    $ch = curl_init($verify_url); //this initiates a HTTP connection to $verify_url, the connection headers will be stored in $ch 

    curl_setopt($ch, CURLOPT_POST, 1); //sets the delivery method as POST

    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); //The data that is being sent via POST. From what I can see the cURL lib sends them as a string that is built in the foreach loop above

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //This verifies if the target url sends a redirect header and if it does cURL follows that link

    curl_setopt($ch, CURLOPT_HEADER, 0); //This ignores the headers from the answer

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //This specifies that the curl_exec function below must return the result to the accesed URL

    $result = curl_exec($ch); //It ransfers the data via POST to the URL, it gets read and returns the result



    if ($result == true)

    {

        //confirmed

        $can_download = true;

    }

    else

    {

        //failed
        $can_download = false;

    }

}



if (strpos($_SERVER['REQUEST_URI'], 'ipn.php'))

    echo $can_download ? '1' : '0'; //we tell the sms sever that we processed the request

Я нашел в Google Rails аналог cURL lib и нашел кучу вариантов, но ни одного из них я не смог понятьиспользуйте тот же сценарий, что и этот скрипт.

Если бы кто-нибудь мог мне помочь с преобразованием этого скрипта из php в ruby, это было бы очень полезно.

1 Ответ

2 голосов
/ 30 сентября 2010

Наиболее прямым подходом может быть использование библиотеки Ruby curb , которая является самой простой оболочкой для cURL.Многие параметры в Curl::Easy отображаются прямо на то, что у вас есть здесь.Основой может быть:

url = "http://smsgatewayadress/"
Curl::Easy.http_post(url,
  Curl::PostField.content('merchant_ID', params[:merchant_ID]),
  # ...
)
...