# ruby demo require "uri" require "net/http" require "pp" require "json" BASE_URL = "http://api2.diigo.com/bookmarks" def request(resource, method = "get", args) url = URI.join(BASE_URL, resource) case method when "get" req = Net::HTTP::Get.new(url.request_uri) when "post" req = Net::HTTP::Post.new(url.request_uri) when "put" req = Net::HTTP::Put.new(url.request_uri) when "delete" req = Net::HTTP::Delete.new(url.request_uri) end if method == "get" url.query = args.map { |k,v| "%s=%s" % [URI.encode(k.to_s), URI.encode(v.to_s)] }.join("&") else req.set_form_data(args) end req.basic_auth("username", "password") http = Net::HTTP.new(url.host, url.port) res = http.start() { |conn| conn.request(req) } res.body end # query bookmarks def query pp JSON.parse(request("", "get", {:rows => 1, :user => "username"})) end # create bookmarks def create pp request("", "post", {:bookmarks => [{"title" => "Test Bookmark", "url" => "http://www.example.com", "shared" => "no", "tags" => "test", "desc" => "just test"}].to_json}) end # update bookmarks def update pp request("", "put", {:bookmarks => [{"title" => "Test Bookmark", "url" => "http://www.example.com", "shared" => "yes", "tags" => "test", "desc" => "just test"}].to_json}) end # delete bookmarks def delete pp request("", "delete", {:urls => ["http://www.example.com/1.html", "http://www.example.com/2.html"].to_json}) end