[MacRuby-devel] [hotcocoa] http wrapper, what do you think?
Matt Aimonetti
mattaimonetti at gmail.com
Mon Mar 30 14:37:45 PDT 2009
Ernie,
Pretty cool, my library does(will do) what Shoes does but with more
flexibility (you can assign any class/objects as a delegates and it supports
more options (including using your keychain for auth)).
Did/do you use Shoes, if so, I'd be interested in knowing what you think we
are missing or what we should look at.
Thanks,
- Matt
2009/3/30 Ernest N. Prabhakar, Ph.D. <prabhaka at apple.com>
> Hi Matt,
> On Mar 30, 2009, at 11:08 AM, Matt Aimonetti wrote:
>
> As you can see from the example list, the method name download isn't always
> appropriate and maybe I should give it the http_query alias. What do you
> think?
> What's nice with this approach, is that on top of being simple, the query
> and the response handling are async so the rest of your code can be run and
> you get notified only when the response comes back.
>
> The underlying API looks like that: MacRubyHTTP::Query.new( url,
> http_method='GET', options={} )
> Queries don't run in a custom runloop yet but that's something I want to
> look at once IO work on the experimental branch will be done.
>
>
> So, here is my question, do you guys think that this is something that
> should be part of HotCocoa or it's better if it stays its own separate lib?
> Also, what do you think about having a default vendor folder for hotcocoa
> apps and autoload the vendor files if available?
>
>
> Good stuff. I think it is worth iterating on as a separate lib for now, and
> integrating it with HotCocoa later. For comparison, you may also want to
> look at how "Shoes" handles downloads (below).
>
> -- Ernie P.
>
> http://help.shoooes.net/App.html
>
> *download(url: a string, styles)*<http://help.shoooes.net/App.html#download>
>
> Starts a download thread (much like XMLHttpRequest, if you're familiar with
> JavaScript.) This method returns immediately and runs the download in the
> background. Each download thread also fires start, progress and finishevents. You can send the download to a file or just get back a string (in
> the finish event.)
>
> If you attach a block to a download, it'll get called as the finish event.
> *Shoes*.app do
> stack do
> title "Searching Google", :size => 16
> @status = para "One moment..."
> # Search Google for 'shoes' and print the HTTP headers
> download "http://www.google.com/search?q=shoes" do |goog|
> @status.text = "Headers: " + goog.response.headers.inspect
> end
> end
> end
>
> And, if we wanted to use the downloaded data, we'd get it using
> goog.response.body. This example is truly the simplest form of download:
> pulling some web data down into memory and handling it once it's done.
>
> Another simple use of download is to save some web data to a file, using
> the :save style.
> *Shoes*.app do
> stack do
> title "Downloading Google image", :size => 16
> @status = para "One moment..."
> download "http://www.google.com/logos/nasa50th.gif",
> :save => "nasa50th.gif" do
> @status.text = "Okay, is downloaded."
> end
> end
> end
>
> In this case, you can still get the headers for the downloaded file, but
> response.body will be nil, since the data wasn't saved to memory. You will
> need to open the file to get the downloaded goods.
>
> If you need to send certain headers or actions to the web server, you can
> use the :method, :headers and :body styles to customize the HTTP request.
> (And, if you need to go beyond these, you can always break out Ruby's
> OpenURI class.)
> *Shoes*.app do
> stack do
> title "POSTing to Google", :size => 16
> @status = para "One moment..."
> download "http://www.stevex.net/dump.php",
> :method => "POST", :body => "v=1.0&q=shoes" do |dump|
> require 'hpricot'
> @status.text = *Hpricot*(dump.response.body).inner_text
> end
> end
> end
>
> As you can see from the above example, Shoes includes the Hpricot library
> for parsing HTML.
>
>
>
>
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20090330/4da760db/attachment-0001.html>
More information about the MacRuby-devel
mailing list