class Readlists::Anonymous

Constants

API_ENDPOINT
DEFAULT_HEADERS
DEFAULT_READLIST_PARAMS
VERSION

Attributes

description[R]
edit_id[R]
id[R]
session_id[R]
title[R]

Public Class Methods

base_uri() click to toggle source
# File lib/readlists/anonymous.rb, line 32
def self.base_uri
  URI.parse API_ENDPOINT
end
create() click to toggle source
# File lib/readlists/anonymous.rb, line 36
def self.create
  res = request(:post, base_uri, DEFAULT_READLIST_PARAMS)
  id, session_id = nil, nil
  res.each_header {|key, value|
    case key
    when 'set-cookie'
      # "sessionid=#{id}; expires=Fri, 17-Jan-2014 05:05:06 GMT; httponly; Max-Age=1209600; Path=/"
      session_id = value.match(/sessionid=(\S+?);/)[1]
    when 'location'
      # 'http://readlists.com/api/v1/readlists/#{id}/'
      id = value.split('/')[-1]
    end
  }
  new(id, session_id)
end
new(id, session_id) click to toggle source
# File lib/readlists/anonymous.rb, line 53
def initialize(id, session_id)
  @id = id
  @session_id = session_id
  set_edit_id
end
request(method, url, params, headers = {}) click to toggle source
# File lib/readlists/anonymous.rb, line 12
def self.request(method, url, params, headers = {})
  headers = DEFAULT_HEADERS.merge headers
  req = case method
        when :get
          Net::HTTP::Get.new(url, headers)
        when :post
          Net::HTTP::Post.new(url, headers)
        when :put
          Net::HTTP::Put.new(url, headers)
        end
  req.basic_auth url.user, url.password if url.user
  req.body = params.to_json
  res = nil
  Net::HTTP.start(url.hostname, url.port, :use_ssl => url.scheme == 'https' ) {|http|
    res = http.request(req)
  }
  raise RequestError.new("#{res.code}: #{res.body}") unless res.code =~ /[234]/
  res
end

Public Instance Methods

<<(url) click to toggle source
# File lib/readlists/anonymous.rb, line 94
def <<(url)
  headers = { "Cookie" => cookie }
  params = { "readlist" => DEFAULT_READLIST_PARAMS }.merge("article_url" => url)
  self.class.request(:post, entry_endpoint, params, headers)
end
Also aliased as: add
add(url)
Alias for: <<
description=(desc) click to toggle source
# File lib/readlists/anonymous.rb, line 85
def description=(desc)
  request(:put, "description" => desc)
  @description = desc
end
endpoint() click to toggle source
# File lib/readlists/anonymous.rb, line 76
def endpoint
  URI "#{API_ENDPOINT}#{id}/"
end
entry_endpoint() click to toggle source
# File lib/readlists/anonymous.rb, line 72
def entry_endpoint
  URI "#{API_ENDPOINT}#{id}/entries/"
end
public_edit_url() click to toggle source
# File lib/readlists/anonymous.rb, line 64
def public_edit_url
  "http://readlists.com/#{edit_id}/"
end
request(method, params = {}, headers = {}) click to toggle source
# File lib/readlists/anonymous.rb, line 101
def request(method, params = {}, headers = {})
  headers = { "Cookie" => cookie }
  params = DEFAULT_READLIST_PARAMS.merge(params)
  self.class.request(method, endpoint, params, headers)
end
set_edit_id() click to toggle source
# File lib/readlists/anonymous.rb, line 59
def set_edit_id
  res = request(:get)
  @edit_id = JSON.parse(res.body)['edit_id']
end
share_url() click to toggle source
# File lib/readlists/anonymous.rb, line 68
def share_url
  "http://readlists.com/#{id}/"
end
title=(title) click to toggle source
# File lib/readlists/anonymous.rb, line 80
def title=(title)
  request(:put, "readlist_title" => title)
  @title = title
end