Groovy outputStream.withWriter

Viewed 31

I'm finding myself traslating this Groovy code in php:

        def conn = new URL("${baseUrl}/${endpoint}").openConnection()
        conn.doInput  = true
        conn.doOutput = true 
        conn.outputStream.withWriter { writer ->
        boolean and = false
        for (entry in formData) {
            def value = entry.value
            switch (entry.value.getClass()) {
                case Map:
                case List:
                    value = JsonOutput.toJson(value)
                    // context.log "JSON: ${value}"
                    break
                default:
                    value = value.toString()
            }
            if (and) writer << '&'
            writer << entry.key << '=' << URLEncoder.encode(value, 'UTF-8')
            and = true
        }
    }

def code = conn.responseCode

But i dont understand what writer does the last three lines and its ties with outputstream.I tried using the curl_init function of PHP:

$conn = curl_init();
curl_setopt($conn, CURLOPT_URL, $baseUrl.$endpoint);
curl_setopt($conn, CURLOPT_RETURNTRANSFER, true);
curl_setopt($conn, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Accept: application/json',
]);
$dataToSend = [];
$and = false;
foreach ($formData->line as $lineFormData) {
    $valore = $lineFormData;
    if(is_array($lineFormData)){
        $valore = json_encode($lineFormData);
    }else{
        $valore = strval($lineFormData);
    }

    if($and) {
        $dataToSend[] = $valore;
    }
    $and = true;
}

curl_setopt($conn, CURLOPT_POSTFIELDS, $dataToSend);
$ws_output = curl_exec($conn);
$err = curl_error($conn);
curl_close($conn);
if ($err) {
    abort(500, "($endpoint) non riuscita - ($err)");
}

But i know it's wrong.Can someone help?

0 Answers
Related