通常、HTTPヘッダーにはそれぞれSet-Cookie
のエントリが1つあります。 HTTPartyはそれらを1つの文字列でコンマ区切りのリストとしてマージします。しかし、HTTPartyは、それらをデフォルトのクッキーに戻すときにそれらを分割しません。あなたは自分でそれらを解析する必要があります。
以下の方法で 'set-cookie'を解析することは可能です。あなたのクラスにそれを追加します。
# Parse the 'set-cookie' string
# @param [String] all_cookies_string
# @return [Hash]
def self.parse_set_cookie(all_cookies_string)
cookies = Hash.new
if all_cookies_string.present?
# single cookies are devided with comma
all_cookies_string.split(',').each {
# @type [String] cookie_string
|single_cookie_string|
# parts of single cookie are seperated by semicolon; first part is key and value of this cookie
# @type [String]
cookie_part_string = single_cookie_string.strip.split(';')[0]
# remove whitespaces at beginning and end in place and split at '='
# @type [Array]
cookie_part = cookie_part_string.strip.split('=')
# @type [String]
key = cookie_part[0]
# @type [String]
value = cookie_part[1]
# add cookie to Hash
cookies[key] = value
}
end
cookies
end
クッキーは、このラインを調整することにより、リクエストを以下のためHTTPartyに追加することができます。
self.default_cookies.add_cookies(self.parse_set_cookie(response.header['set-cookie']))
self.parse_set_cookie
内でクッキーが名前と値のみが抽出されます。あなたはPath
、Domain
のような詳細を取得するためにそれを拡張することができます。詳細は、RFC 2109(4.2.2 Set-Cookie構文)を参照してください。