Skip to content

Instantly share code, notes, and snippets.

View isaksky's full-sized avatar

Isak Sky isaksky

View GitHub Profile
@isaksky
isaksky / gist:1861104
Created February 18, 2012 21:51
get_response_following_redirects
def self.get_response_following_redirects orig_uri, requests_limit = 15
raise "Input must be an absolute URI." unless orig_uri.is_a?(URI::Generic) && orig_uri.absolute?
uri = orig_uri
requests_made = 0
while requests_made <= requests_limit
response = Net::HTTP.get_response uri
requests_made += 1
case response
when Net::HTTPSuccess
@isaksky
isaksky / gist:1861043
Created February 18, 2012 21:14
HTTP fetch breaks
require 'uri'
require 'net/http'
# From http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html#method-c-get_response
# Does not fully work!
def fetch(uri_str, limit = 10)
# You should choose a better exception.
raise ArgumentError, 'too many HTTP redirects' if limit == 0
response = Net::HTTP.get_response(URI(uri_str))
@isaksky
isaksky / letter_combos.rb
Created November 28, 2011 05:44
Ruby: All letter combinations of length n
LETTERS = (65..90).collect{|char_code| char_code.chr}
def letter_combos length, accum = nil
return accum if length == 0
return accum || LETTERS if length == 1
combos = (accum || LETTERS).product(LETTERS).inject([]) {|combos, product|
combos << product.first + product.last}
letter_combos(length - 1, combos)
end