This repository has been archived by the owner on Mar 16, 2021. It is now read-only.
/
app.rb
77 lines (59 loc) · 1.62 KB
/
app.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
require "#{File.dirname(__FILE__)}/setup.rb"
set :app_file, __FILE__ # Unbreak Bundler.
get "/" do
haml :index, :layout => :layout
end
get "/stylesheets/:stylesheet.css" do
content_type 'text/css', :charset => 'utf-8'
sass :"sass/#{params[:stylesheet]}"
end
get '/:user/set_image' do
setup_image
@image = Image.new(:image_url => Image.image_url_for_item_url_and_user(@url, @user))
haml :set_image, :layout => :'layout/set_image'
end
post '/:user/set_image' do
setup_image
@image = Image.new(:item_url => @url, :image_url => params[:image_url], :username => @user.name, :ip => request.ip)
if @image.save
haml :set_image_done, :layout => :'layout/set_image'
else
haml :set_image, :layout => :'layout/set_image'
end
end
def setup_image
@user = User.new(params[:user])
@title, @url, @id = params.values_at(:title, :url, :id)
@previous_image_urls = Image.suggestions_for_url(@url)
end
get '/scrape_images' do
content_type 'application/json', :charset => 'utf-8'
ImageScraper.new(params[:url]).to_json
end
post "/expire_cache" do
ObjectCache.new(settings.cache).expire(params[:user])
"OK"
end
get "/:user" do
get_list
end
get "/:user/:tags" do
get_list
end
def get_list
username = params[:user]
@list = ObjectCache.new(settings.cache).fetch(username, settings.cache_seconds) {
List.new(username)
}
@tags = params[:tags].to_s.split(/[+ ]/)
@list.filter_to_tags(@tags)
if params[:by] == List::ORDER_RECENT
@list.sort_by_recent
else
@list.sort_by_rating
end
@user = @list.user
haml :list
rescue Delicious::NoSuchUser, Pinboard::NoSuchUser
haml :no_such_user
end