#!/usr/bin/python2
# -*- coding: utf-8 -*-

import sys

from httpforgelib import HTTPResponse, get_option_parser

if __name__ == "__main__":
  parts = (
    ("body", "body", 0, lambda r, args: r.decoded_body()),
    ("status", "status", 0, lambda r, args: r.render_first_line()),
    ("head", "head", 0, lambda r, args: r.head),
    ("header", "header <name>", 1,lambda r, args: r.headers.get(args[0], None)),
    ("protocol", "protocol", 0, lambda r, args: r.version),
  )
  
  parser = get_option_parser()
  parser.usage = "%prog " + "|".join(part[1] for part in parts)
  options, args = parser.parse_args()
  
  if len(args) < 1:
    print >> sys.stderr, "Please select a part."
    parser.print_help()
  else:
    request = args[0]
    args = args[1:]
    for name, help, numargs, func in parts:
      if name == request:
        if len(args) == numargs:
          response = HTTPResponse.read(sys.stdin)
          result = func(response, args)
          
          if result is not None:
            print result
        else:
          print >> sys.stderr, "I need exactly %d argument(s) for %s" % \
                               (numargs, name)
        
        break
    else:
      print >> sys.stderr, "%s is not a valid part." % request
