module Pinboard class Post < Struct.new(:href, :description, :extended, :tag, :time, :replace, :shared, :toread) def self.all(options={}) client = Pinboard::Client.new(options) posts = client.class.get('/posts/all', :basic_auth => options)['posts']['post'] posts.map { |p| Post.new(Util.symbolize_keys(p)) } end def initialize(attributes={}) self.time = Util.parse_time(attributes.delete(:time)) self.tag = attributes.delete(:tag).split(" ") attributes.each do |attribute, value| send("#{attribute}=", value) if respond_to?("#{attribute}=") end end def to_json(*args) { href: href, description: description, extended: extended, tag: tag, time: time, replace: replace, shared: shared, toread: toread }.to_json(*args) end end end