/lib/wwmd/page/headers.rb

http://github.com/miketracy/wwmd · Ruby · 118 lines · 81 code · 17 blank · 20 comment · 9 complexity · 636b71f7bdcdbc935d0722405b1c174a MD5 · raw file

  1. module WWMD
  2. class Page
  3. #:section: Header helper methods
  4. def user_agent=(ua)
  5. self.headers["User-Agent"] = ua
  6. end
  7. # clear header at <key>
  8. def clear_header(key)
  9. self.headers.delete_if { |k,v| k.upcase == key.upcase }
  10. return nil
  11. end
  12. alias_method :delete_header, :clear_header#:nodoc:
  13. # clear all headers
  14. def clear_headers
  15. self.headers.delete_if { |k,v| true }
  16. "headers cleared"
  17. end
  18. # set headers from passed argument
  19. # Nil: set headers from WWMD::DEFAULT_HEADERS
  20. # Symbol: entry in WWMD::HEADERS to set from
  21. # Hash: hash to set headers from
  22. # String: filename (NOT IMPLEMENTED)
  23. #
  24. # if clear == true then headers will be cleared before setting
  25. def set_headers(arg=nil,clear=false)
  26. clear_headers if clear
  27. if arg.nil?
  28. begin
  29. clear_headers
  30. WWMD::DEFAULT_HEADERS.each { |k,v| self.headers[k] = v }
  31. return "headers set from default"
  32. rescue => e
  33. putw "WARN: " + e
  34. return false
  35. end
  36. elsif arg.class == Symbol
  37. set_headers(WWMD::HEADERS[arg])
  38. putw "headers set from #{arg}"
  39. return true
  40. elsif arg.class == Hash
  41. arg.each { |k,v| self.headers[k] = v }
  42. putw "headers set from hash"
  43. return true
  44. end
  45. putw "error setting headers"
  46. return false
  47. end
  48. # set headers back to default headers
  49. def default_headers(arg=nil)
  50. set_headers
  51. end
  52. alias_method :set_default, :default_headers
  53. # set headers from text
  54. def headers_from_array(arr)
  55. clear_headers
  56. arr = arr.split("\r\n\r\n").first if arr.class == String
  57. arr.each do |line|
  58. next if (line.empty? || line =~ /^(GET|POST)/)
  59. k,v = line.split(":",2)
  60. self.headers[k.strip] = v.strip
  61. end
  62. nil
  63. end
  64. #;
  65. # set headers from paste
  66. def headers_from_paste
  67. headers_from_array(%x[pbpaste])
  68. end
  69. # set headers from file
  70. def headers_from_file(fn)
  71. clear_headers
  72. headers_from_array(File.read(fn).split("\n"))
  73. return "headers set from #{fn}"
  74. end
  75. # set headers to utf7 encoding post
  76. def set_utf7_headers
  77. self.headers["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-7"
  78. return "headers set to utf7"
  79. end
  80. # set headers to ajax
  81. def set_ajax_headers
  82. self.headers["X-Requested-With"] = "XMLHttpRequest"
  83. self.headers["X-Prototype-Version"] = "1.5.0"
  84. return "headers set to ajax"
  85. end
  86. # set headers to SOAP request headers
  87. def set_soap_headers
  88. self.headers['Content-Type'] = "text/xml;charset=utf-8"
  89. self.headers['SOAPAction'] = "\"\""
  90. return "headers set to soap"
  91. end
  92. # get the current Cookie header
  93. def get_cookie
  94. self.headers["Cookie"]
  95. end
  96. # set the Cookie header
  97. def set_cookie(cookie=nil)
  98. self.headers["Cookie"] = cookie
  99. end
  100. end
  101. end