packages feed

web-mongrel2-0.0.2: src/Web/Mongrel2/Types.hs

module Web.Mongrel2.Types where

import Data.Default
import System.ZMQ

-- | An incoming request from the server.
data Request = Request {
  request_uuid :: String,
  request_path :: String,
  request_id :: String,
  
  request_headers :: [(String,String)],
  request_method :: String,
  request_version :: String,
  request_uri :: String,
  request_pattern :: String,
  request_accept :: String,
  request_host :: String,
  request_query_string :: String,
  request_user_agent :: String
  } deriving (Show)

-- | The response to send back.
data Response = Response {
  response_uuid :: String,
  response_id :: String,
  response_path :: String,
  
  response_body :: String,
  response_headers :: [(String,String)],
  response_status :: String,
  response_charset :: String,
  response_content_type :: String,
  response_target :: Maybe String
  } deriving(Show)

-- | Internal connection data.
data M2 = M2 {
  m2_publish :: String,
  m2_publish_socket :: Maybe (Socket Pub),
  m2_pull :: String,
  m2_pull_socket :: Maybe (Socket Pull),
  m2_context :: Maybe Context,
  m2_uuid :: Maybe String
  }

instance Default M2 where
  def = M2 {
    m2_publish = def,
    m2_publish_socket = Nothing,
    m2_pull = def,
    m2_pull_socket = Nothing,
    m2_context = Nothing,
    m2_uuid = Nothing
    }

instance Default Request where
  def = Request {
    request_uuid = def,
    request_id = def,
    request_path = "/",
    
    request_headers = def,
    request_method = def,
    request_version = def,
    request_uri = def,
    request_pattern = def,
    request_accept = def,
    request_host = def,
    request_query_string = def,
    request_user_agent = def
    }

instance Default Response where
  def = Response {
    response_id = def,
    response_uuid = def,
    response_path = "/",
    
    response_charset = "UTF-8",
    response_content_type = "text/plain",
    response_body = def,
    response_headers = def,
    response_status = def,
    response_target = Nothing
    }