lib/pinboard/client.rb in pinboard-0.0.4 vs lib/pinboard/client.rb in pinboard-0.0.5
- old
+ new
@@ -1,8 +1,10 @@
require 'httparty'
module Pinboard
+ Error = Class.new(StandardError)
+
class Client
include HTTParty
base_uri 'api.pinboard.in:443/v1'
def initialize(options={})
@@ -16,8 +18,35 @@
options[:query] = params
posts = self.class.get('/posts/all', options)['posts']['post']
posts = [] if posts.nil?
posts = [posts] if posts.class != Array
posts.map { |p| Post.new(Util.symbolize_keys(p)) }
+ end
+
+ def add(params={})
+ options = {}
+ options[:basic_auth] = @auth
+
+ # Pinboard expects multiple tags=foo,bar separated by comma instead of tag=foo&tag=bar
+ params[:tags] = Array(params[:tags]).join(',') if params[:tags]
+
+ # Pinboard expects replace, shared and toread as yes/no instead of true/false
+ [:replace, :shared, :toread].each do |boolean|
+ params[boolean] = params[boolean] ? 'yes' : 'no' if params.has_key?(boolean)
+ end
+
+ options[:query] = params
+ result_code = self.class.post('/posts/add', options).parsed_response["result"]["code"]
+
+ raise Error.new(result_code) if result_code != "done"
+ end
+
+ def delete(params={})
+ options = {}
+ options[:basic_auth] = @auth
+ options[:query] = params
+ result_code = self.class.get('/posts/delete', options).parsed_response["result"]["code"]
+
+ raise Error.new(result_code) if result_code != "done"
end
end
end