Created
January 2, 2011 12:47
-
-
Save geraldalewis/762501 to your computer and use it in GitHub Desktop.
code to add and remove HTTP request header; removed from RequestParams.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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