readme.md

# http message

> Parse and create HTTP messages

```elixir
message = %HTTPMessage{
  method: :POST,
  url: "/foo/bar",
  body: "Hello, World!"
}

raw = HTTPMessage.create(message)
# Send it, or whatever.
```

Also see [jamen/http](https://github.com/jamen/http) for higher-level functions for HTTP.

## Installation

Add to your Mixfile's dependencies:

```elixir
{:http_message, "~> 0.1.0"}
```

Then do

## Usage

### `HTTPMessage`

The module is a struct used as a middleman for parsing and creating:

```elixir
%HTTPMessage{
  # Message header:
  method: :PUT,
  url: "/foo",
  version: "HTTP/2.0",
  fields: [
    {"Content-Type", "application/json"}
  ],
  # Message body:
  body: "{ \"foo\": 123 }"
}
```

### `HTTPMessage.create(message)`

Create string from `HTTPMessage` struct.

```elixir
foo = %HTTPMessage{ method: :GET, url: "/foo" }

# Create string:
raw = HTTPMessage.create(foo)
```

### `HTTPMessage.parse(source)`

Parse string into `HTTPMessage` struct

```elixir
message = HTTPMessage.parse("""
GET /foo HTTP/1.1
Content-Type: text/html


<p>Hello, world!</p>
""")
```

## License

MIT © [Jamen Marz](https://git.io/jamen)