<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>