OT Adam D Ruppe's web stuff

Jacob Carlborg doob at me.com
Thu Feb 9 07:12:47 PST 2012


On 2012-02-09 15:56, Adam D. Ruppe wrote:
> On Thursday, 9 February 2012 at 08:26:25 UTC, Jacob Carlborg wrote:
>> For example, ENV["REQUEST_URI"] returns differently on different
>> servers. Rails provides a method, "request_uri" on the request object
>> that will return the same value on all different servers.
>>
>> I don't know if CGI already has support for something similar.
>
> Yeah, in cgi.d, you use Cgi.requestUri, which is an immutable
> string, instead of using the environment variable directly.
>
> requestUri = getenv("REQUEST_URI");
> // Because IIS doesn't pass requestUri, we simulate it here if it's empty.
> if(requestUri.length == 0) {
> // IIS sometimes includes the script name as part of the path info - we
> don't want that
> if(pathInfo.length >= scriptName.length && (pathInfo[0 ..
> scriptName.length] == scriptName))
> pathInfo = pathInfo[scriptName.length .. $];
>
> requestUri = scriptName ~ pathInfo ~ (queryString.length ? ("?" ~
> queryString) : "");
>
> // FIXME: this works for apache and iis... but what about others?
>
>
>
>
>
> That's in the cgi constructor. Somewhat ugly code, but I figure
> better to have ugly code in the library than incompatibilities
> in the user program!
>
> The http constructor creates these variables from the raw headers.
>
>
> Here's the ddoc:
> http://arsdnet.net/web.d/cgi.html
>
> If you search for "requestHeaders", you'll see all the stuff
> following. If you use those class members instead of direct
> environment variables, you'll get max compatibility.

Cool, you already thought of all of this it seems.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list