<div dir="ltr">On contrary I really hate that :D.<div>Because of this:</div><div><br></div><div><div>HTTP method<span style="white-space:pre">        </span>Recognized prefixes</div><div>GET<span style="white-space:pre">        </span>get, query</div><div>PUT<span style="white-space:pre"> </span>set, put</div><div>POST<span style="white-space:pre">  </span>add, create, post</div><div>DELETE<span style="white-space:pre">       </span>remove, erase, delete</div><div>PATCH<span style="white-space:pre">    </span>update, patch</div></div><div><br></div><div>I am calling vibed from PHP and I need to tweak my curl for every request baceuse of this :D</div><div><br></div><div><div> public function sendRequest($method, $params = []) {</div><div><br></div><div>        $method = strtolower(preg_replace('/([^A-Z])([A-Z])/', "$1_$2", $method));</div><div>        $isGetRequestType = substr($method, 0, 3) == 'get';</div><div>        $isPutRequestType = substr($method, 0, 3) == 'set';</div><div>        $httpHeader = $isGetRequestType ? [] : ['Content-Type: application/json'];</div><div>        if ($this->sessionId) {</div><div>            $httpHeader[] = "Cookie: vibe.session_id=" . $this->sessionId . "; Path=/; HttpOnly";</div><div>        }</div><div><br></div><div>        if ($isGetRequestType) {</div><div>            $url = UrlBuilder::fromUrl($this->url)->appendPath(substr($method, 4));</div><div>            $url->addParams($params);</div><div>            $curl = curl_init($url);</div><div>            curl_setopt_array($curl, [</div><div>                CURLOPT_RETURNTRANSFER => 1,</div><div>                CURLOPT_HTTPHEADER => $httpHeader,</div><div>                CURLOPT_USERAGENT => EdiClient::USER_AGENT,</div><div>                CURLOPT_URL => $url->toString(),</div><div>                CURLOPT_RETURNTRANSFER => true</div><div>            ]);</div><div>        } elseif ($isPutRequestType) {</div><div>            $url = UrlBuilder::fromUrl($this->url)->appendPath(substr($method, 4));</div><div>            $curl = curl_init($url);</div><div>            $json = json_encode($params);</div><div><br></div><div>            curl_setopt_array($curl, [</div><div>                CURLOPT_RETURNTRANSFER => 1,</div><div>                CURLOPT_HTTPHEADER => $httpHeader,</div><div>                CURLOPT_USERAGENT => EdiClient::USER_AGENT,</div><div>                CURLOPT_URL => $url->toString(),</div><div>                CURLOPT_CUSTOMREQUEST => "PUT",</div><div>                CURLOPT_POSTFIELDS => $json,</div><div>                CURLOPT_RETURNTRANSFER => true</div><div>            ]);</div><div>        } else {</div><div>            $url = UrlBuilder::fromUrl($this->url)->appendPath($method);</div><div>            $curl = curl_init($url);</div><div>            $json = json_encode($params);</div><div><br></div><div>            curl_setopt_array($curl, [</div><div>                CURLOPT_RETURNTRANSFER => 1,</div><div>                CURLOPT_HTTPHEADER => $httpHeader,</div><div>                CURLOPT_USERAGENT => EdiClient::USER_AGENT,</div><div>                CURLOPT_URL => $url->toString(),</div><div>                CURLOPT_POST => true,</div><div>                CURLOPT_POSTFIELDS => $json,</div><div>                CURLOPT_RETURNTRANSFER => true</div><div>            ]);</div><div>        }</div><div><br></div><div>        $result = curl_exec($curl);</div><div>        curl_close($curl);</div><div>        $result = json_decode($result, true);</div><div><br></div><div>        return $result;</div><div>    }</div></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 13, 2018 at 11:12 AM, Steven Schveighoffer via Digitalmars-d-announce <span dir="ltr"><<a href="mailto:digitalmars-d-announce@puremagic.com" target="_blank">digitalmars-d-announce@puremagic.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 3/9/18 11:34 AM, aberba wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Friday, 9 March 2018 at 16:32:28 UTC, aberba wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
New blog post for the learning audience<br>
<br>
<a href="http://aberba.com/2018/using-vibe-d-web-interface" rel="noreferrer" target="_blank">aberba.com/2018/using-vibe-d-w<wbr>eb-interface</a><br>
</blockquote>
<br>
<a href="http://aberba.com/2018/using-vibe-d-web-interface" rel="noreferrer" target="_blank">http://aberba.com/2018/using-v<wbr>ibe-d-web-interface</a><br>
<br>
</blockquote>
<br></div></div>
Very nice! Although this is missing one of my favorite vibe.d web interface features -- automatic parsing of route parameters:<br>
<br>
<br>
class WebInterface<br>
{<br>
   void getRoute(HTTPServerResponse res, int foo, Nullable!int bar)<br>
   {<br>
       import std.format;<br>
       res.writeBody(format("foo = %s, bar = %s", foo, bar));<br>
   }<br>
}<br>
<br>
/route => Error, foo required<br>
/route?foo=1 => "foo = 1, bar = Nullable.null"<br>
/route?foo=2&bar=5 => "foo = 1, bar = 5"<br>
<br>
-Steve<br>
</blockquote></div><br></div>