Created
August 24, 2009 21:54
-
-
Save whoisjake/174249 to your computer and use it in GitHub Desktop.
Basic drop.io Ruby client
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rubygems' | |
# sudo gem install httparty | |
require 'httparty' | |
# sudo gem sources -a http://gems.github.com && sudo gem install multipart-post | |
require 'net/http/post/multipart' | |
require 'mime/types' | |
require 'pp' | |
class Dropio | |
include HTTParty | |
base_uri 'api.drop.io' | |
default_params :version => '1.0', :format => 'json' | |
def initialize(key) | |
self.class.default_params :api_key => key | |
end | |
def find(drop_name, token = nil) | |
self.class.get("/drops/#{drop_name}", :query => {:token => token}) | |
end | |
def create(params = {}) | |
self.class.post("/drops",:body => params) | |
end | |
def update(drop_name, params = {}, token = nil) | |
params[:token] = token | |
self.class.put("/drops/#{drop_name}", :body => params) | |
end | |
def delete(drop_name, admin_token) | |
params = {:token => admin_token} | |
self.class.delete("/drops/#{drop_name}", :query => params) | |
end | |
def create_link(drop_name, url, title = nil, description = nil, token = nil) | |
params = {:url => url, :title => title, :description => description, :token => token} | |
self.class.post("/drops/#{drop_name}/assets", :body => params) | |
end | |
def create_note(drop_name, contents, title = nil, token = nil) | |
params = {:contents => contents, :title => title, :token => token} | |
self.class.post("/drops/#{drop_name}/assets", :body => params) | |
end | |
def add_file(drop_name, file_path, token = nil) | |
url = URI.parse("http://assets.drop.io/upload/") | |
r = nil | |
File.open(file_path) do |file| | |
mime_type = (MIME::Types.type_for(file_path)[0] || MIME::Types["application/octet-stream"][0]) | |
req = Net::HTTP::Post::Multipart.new url.path, | |
{ 'api_key' => self.class.default_params[:api_key], 'drop_name' => drop_name, 'format' => 'json', | |
'token' => token, 'version' => '1.0', 'file' => UploadIO.new(file, mime_type, file_path) } | |
http = Net::HTTP.new(url.host, url.port) | |
r = http.start{|http| http.request(req)} | |
end | |
(r.nil? or r.body.nil? or r.body.empty?) ? [] : Crack::JSON.parse(r.body) | |
end | |
def assets(drop_name, token = nil) | |
self.class.get("/drops/#{drop_name}/assets", :query => {:token => token}) | |
end | |
def asset(drop_name, asset_name, token = nil) | |
self.class.get("/drops/#{drop_name}/assets/#{asset_name}", :query => {:token => token}) | |
end | |
def embed_code(drop_name, asset_name, token = nil) | |
self.class.get("/drops/#{drop_name}/assets/#{asset_name}/embed_code", :query => {:token => token}) | |
end | |
def update_asset(drop_name, asset_name, params = {}, token = nil) | |
params[:token] = token | |
self.class.put("/drops/#{drop_name}/assets/#{asset_name}", :body => params) | |
end | |
def delete_asset(drop_name, asset_name, token = nil) | |
self.class.delete("/drops/#{drop_name}/assets/#{asset_name}", :body => {:token => token}) | |
end | |
def send_asset_to_drop(drop_name, asset_name, target_drop, token = nil) | |
params = {:drop_name => target_drop, :token => token} | |
self.class.post("/drops/#{drop_name}/assets/#{asset_name}/send_to", :body => params) | |
end | |
def comments(drop_name, asset_name, token = nil) | |
self.class.get("/drops/#{drop_name}/assets/#{asset_name}/comments", :query => {:token => token}) | |
end | |
def create_comment(drop_name, asset_name, contents, token = nil) | |
params = {:contents => contents, :token => token} | |
self.class.post("/drops/#{drop_name}/assets/#{asset_name}/comments",:body => params) | |
end | |
def comment(drop_name, asset_name, comment_id, token = nil) | |
self.class.get("/drops/#{drop_name}/assets/#{asset_name}/comments/#{comment_id}", :query => {:token => token}) | |
end | |
def update_comment(drop_name, asset_name, comment_id, contents, token = nil) | |
params = {:contents => contents, :token => token} | |
self.class.put("/drops/#{drop_name}/assets/#{asset_name}/comments/#{comment_id}", :body => params) | |
end | |
def delete_comment(drop_name, asset_name, comment_id, token = nil) | |
self.class.delete("/drops/#{drop_name}/assets/#{asset_name}/comments/#{comment_id}", :body => {:token => token}) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment