Class: Shroud::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/shroud.rb

Instance Method Summary collapse

Constructor Details

#initialize(username, password) ⇒ Session

Returns a new instance of Session.

Parameters:

  • (Username, Password)


22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/shroud.rb', line 22

def initialize( username, password ) 
  @session = Patron::Session.new
  @session.base_url = "http://my.cl.ly"
  
  @session.headers['User-Agent'] = 'Ruby CloudAPI'
  @session.headers['Content-Type'] = 'application/json'
  @session.headers['Accept'] = 'application/json'
                  
  @session.username  = username
  @session.password  = password
  @session.auth_type = :digest
end

Instance Method Details

#create_bookmark(url, name = '') ⇒ Hash

Creates a bookmark

Parameters:

  • URL, (String, Name)

    name of bookmark

Returns:

  • (Hash)

    New bookmark information

Raises:



78
79
80
81
82
83
84
85
86
87
# File 'lib/shroud.rb', line 78

def create_bookmark( url, name='' )
  @session.base_url = "http://my.cl.ly"
  bookmark = {:item => {:name => name, :redirect_url => url} }
 
  resp = @session.post("/items", bookmark.to_json)
  
  raise ItemNotFound if resp.status == 404
  raise AuthorizationError if resp.status == 401
  Crack::JSON.parse(resp.body)
end

#delete_item(item) ⇒ Hash

Deletes an item

Parameters:

  • slug (String)

    item to delete

Returns:

  • (Hash)

    response body

Raises:



125
126
127
128
129
130
131
132
133
# File 'lib/shroud.rb', line 125

def delete_item( item )
  to_delete = get_item( item )
  @session.base_url = "http://my.cl.ly"
  resp = @session.delete( to_delete['href'].gsub!('http://my.cl.ly', '') )
  
  raise ItemNotFound if resp.status == 404
  raise AuthorizationError if resp.status == 401
  true if resp.status == 200
end

#get_item(item) ⇒ Hash

Gets an items information

Parameters:

  • slug (String)

    item to get

Returns:

  • (Hash)

    response body

Raises:



39
40
41
42
43
44
45
# File 'lib/shroud.rb', line 39

def get_item( item )
  @session.base_url = "http://cl.ly"
  resp = @session.get( "/" + item )
  
  raise ItemNotFound if resp.status == 404
  Crack::JSON.parse(resp.body)
end

#list_items(args = {}) ⇒ Array<Hash>

Gets a list of items

Parameters:

  • args (Hash) (defaults to: {})

    The options to list items

Options Hash (args):

  • :page (Integer)

    Page to start at

  • :per_page (Integer)

    Number of items per page

  • :type (String)

    Type of item to return

  • :deleted (Boolean)

    Show deleted items

Returns:

  • (Array<Hash>)

    list of item hashes

Raises:



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/shroud.rb', line 56

def list_items( args={} )
  @session.base_url = "http://my.cl.ly"
  
  url = "/items"
  args.each do |k, v|
    # probably a nicer way to do this
    if url == "/items"
      url << "?#{k.to_s}=#{v.to_s}"
    else
      url << "&#{k.to_s}=#{v.to_s}"
    end
  end
  resp = @session.get( url )
  
  raise AuthorizationError if resp.status == 401
  Crack::JSON.parse(resp.body)
end

#upload_file(file) ⇒ Object

TODO:

Get this to work!!!

Uploads an item

Parameters:

  • file (String)

    Relative or absolute path to item to upload

Raises:



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/shroud.rb', line 93

def upload_file( file )
  raise FileNotFound unless File.exists?(file)
  
  # get data to build POST
  @session.base_url = "http://my.cl.ly"
  post_data = @session.get("/items/new")
  
  raise AuthorizationError if post_data.status == 401
  
  r = Crack::JSON.parse(post_data.body)
  puts "", "1ST RESPONSE", r.to_yaml
  
  params = r['params']
  params['file'] = File.open(file, "r")
  
  puts '', 'PARAMS'
  params.each do |k, v|
    puts "#{k}: '#{v}'"
  end
  puts ''
  
  @session.base_url = r['url']
  @session.headers['Content-Type'] = 'multipart/form-data'
  
  resp = @session.post("", params.to_json)
  resp.body
end