# Download using Safari's cookies

**URL:** <https://www.ruby-forum.com/t/download-using-safaris-cookies/139807>\
**Category:** Ruby\
**Created:** [June 7, 2008, 10:05am UTC](https://www.ruby-forum.com/t/download-using-safaris-cookies/139807 "2008-06-07T10:05:50Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![polarapfel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/958977/32.png) [@polarapfel](https://www.ruby-forum.com/u/polarapfel)\
**Post date:** [June 7, 2008, 10:05am UTC](https://www.ruby-forum.com/t/download-using-safaris-cookies/139807/1 "2008-06-07T10:05:50Z")

</div>

Hi,  
the httpclient library includes a custom file-based cookie storage.  
I made a primitive drop-in replacement (myclient.cookie\_manager =  
NSCookieManager.new) that uses OS X’ built-in jar.

It works for getting stuff from Safari, but new ones I save don’t  
propagate back there. Probably to do with the AcceptPolicy.

Anyway I thought I’d share it. The author’s email is well hidden, so he  
probably doesn’t like to be contacted. And I’m too lazy to create yet  
another Trac account. So see below.

[http://dev.ctor.org/http-access2/](http://dev.ctor.org/http-access2/)

require ‘osx/cocoa’

class NSCookieManager  
attr\_accessor :cookies\_file

def initialize(file = nil)  
@cookies\_file = file  
@jar = OSX::NSHTTPCookieStorage.sharedHTTPCookieStorage  
end

def load\_cookies  
end

def save\_cookies(force = nil)  
end

def find(url)  
u = OSX::NSURL.URLWithString url.to\_s  
a = @jar.cookiesForURL u  
d = OSX::NSHTTPCookie.requestHeaderFieldsWithCookies a  
return d[“Cookie”]  
end

def parse(str, url)  
u = OSX::NSURL.URLWithString url.to\_s  
d = {“Set-Cookie” =\> str}  
a = OSX::NSHTTPCookie.cookiesWithResponseHeaderFields\_forURL(d, u)  
@jar.setCookie a.shift  
raise unless a.empty?  
end  
end
