You essentially forced me to do this. ;-)

So here it is, my initial version of http-types: https://github.com/aristidb/http-types

Only Method is supported for now.

I deliberately chose to make it an ADT for type safety reasons. This is to enable developers to write case x of POST -> ..., and the compiler will find if they accidentally typed POSTX. However, non-standard methods are also supported via OtherMethod.

Please take it apart and criticize! :-)

If you have implementation ideas, just fork it, or I can add you as a contributor.


Aristid


2011/2/2 Michael Snoyman <michael@snoyman.com>
I think there's general consensus that this package would be a Good
Thing(tm), and at the least you'll have my support on it. I'm sure we
can all quibble on details later, but I think the best thing now would
be to have some actual code to look at.

Aristid, I'm assuming (hoping) you were volunteering to actually write
and maintain this package, is that correct? I would recommend you get
a project started (Github, BitBucket, PatchTag, wherever), getting up
some code and then we can all nit-pick it to death ;).

Michael

On Wed, Feb 2, 2011 at 3:45 PM, Aristid Breitkreuz
<aristidb@googlemail.com> wrote:
> http-enumerator could at least for compatibility support a Request type with
> ByteString. And also a native request type. Or something along these lines.
> The problem is that I want to be able to use a Request type that is
> compatible between multiple client libraries, enabling me to theoretically
> switch implementations without a huge amount of hassle.
>
> Aristid
>
> 2011/2/2 Michael Snoyman <michael@snoyman.com>
>>
>> On Wed, Feb 2, 2011 at 2:50 PM, Aristid Breitkreuz
>> <aristidb@googlemail.com> wrote:
>> > I agree with most things.
>> >
>> > 2011/2/2 Michael Snoyman <michael@snoyman.com>
>> >>
>> >> * Request and response datatypes themselves. I don't think this makes
>> >> sense to put in http-types: just between WAI and http-enumerator I
>> >> needed different versions of these.
>> >
>> > I think this is where we could derive most value, and it would be good
>> > to
>> > find a way to do it.
>> > Request actually looks pretty similar in WAI as in http-enumerator, but
>> > Response is different. Maybe distinguish between client and server
>> > versions
>> > of Response?
>>
>> I'd be very surprised if those two can be meaningfully unified. What
>> do you do about remoteHost and errorHandler? Also, it's more useful to
>> have the request body for http-enumerator be an Enumerator of
>> Builders, as opposed to WAI where we want an Enumerator of
>> ByteStrings.
>>
>> I have no opposition to *having* a Request type in http-types (or
>> whatever we call it), but I doubt anyone will actually use it, and I
>> wouldn't even want it to include Builder due to the extra dependency.
>>
>> Michael
>
>