Skip to content

Instantly share code, notes, and snippets.

@geraldalewis
Created January 2, 2011 12:47
Show Gist options
  • Save geraldalewis/762501 to your computer and use it in GitHub Desktop.
Save geraldalewis/762501 to your computer and use it in GitHub Desktop.
code to add and remove HTTP request header; removed from RequestParams.
HTTPHeader addHeader: ( HTTPHeader header ) ->
_headers ||= {}
#supports multiple headers of the same name
if headers[ header.name ] then header.value = headers[ header.name ].value + ";" + header.value
headers[ header.name ] = header
header
#! make it so that if the user uses a header object with multiple values (";"), it acts accordingly
#! needs a better abstraction
#? allow for alternately named arguments for union types? HTTPHeader|String header|headerName
HTTPHeader removeHeader: ( HTTPHeader|String header ) ->
if header isa String then return delete headers[ header ]
if !headers[ header.name ] then throw new Error "Request Params > removeHeader > header not found: " + header.name
currentHeaderValues = headers[ header.name ].value.split ";"
headerValues = header.value.split ";"
a = []
for currentValue in currentHeaderValues
v = currentValue
for headerValue in headerValues
if headerValue is currentValue then v = null
if v then a.push v
s = a.join ";"
if s.length then headers[ header.name ].value = s
else delete headers[ header.name ]
header
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment