Skip to content

Instantly share code, notes, and snippets.

@gildo
Created February 8, 2011 15:02
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gildo/816542 to your computer and use it in GitHub Desktop.
Save gildo/816542 to your computer and use it in GitHub Desktop.
a tiny rest client dressed in a DSL
# mini rest client v1
# Gildo Fiorito fyskij@gmail.com
def on(*args, &block)
return super unless (name = args.first) && block
require 'net/http' ; require 'uri' ; require 'json'
klass = Class.new do
uri = URI.parse args[0] ; @http = Net::HTTP.new uri.host, uri.port
if uri.port == 443; require 'net/https'; @http.use_ssl = true;end
def self.get p
req = Net::HTTP::Get.new(p)
if @user and @pass;req.basic_auth @user, @pass;end
puts JSON.parse @http.request(req).body
end
def self.post(p,var={})
req = Net::HTTP::Post.new(p)
req.set_form_data(var)
if @user and @pass;req.basic_auth @user, @pass;end
puts @http.request(req).body
end
def self.conf(&block);instance_eval █end
end
klass.class_eval do; attr_accessor :http; end
klass.class_eval &block
end
require './minirest'
on "https://convore.com" do
conf do
@user = "fyskij"
@pass = "mypass"
end
get "/api/account/verify.json"
get "/api/groups.json"
post "https://convore.com/api/topics/1902/messages/create.json",
{:message => "hey!, this is shitty awesome"}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment