forked from smgt/flattr-what
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.rb
83 lines (66 loc) · 1.77 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
78
79
80
81
82
83
require "rubygems"
require "sinatra/base"
require "neography"
require "flattr"
require './lib/graph'
require './lib/scrape'
require './lib/user_node'
require './lib/thing_node'
class App < Sinatra::Base
if development?
Flattr.configure do |config|
config.endpoint = "https://api.flattr.dev/"
end
end
not_found do
erb :not_found
end
layout :default
get "/" do
erb :index
end
get "/node/:id" do
g = Graph.new
n = g.get_node params[:id]
erb :node, :locals => {:node => n}
end
get "/user/:username" do
g = Graph.new
user = g.get_user params[:username]
halt 404, params[:username] if user.nil?
r = g.cypher("START root_user = node(#{user.node_id}) MATCH root_user-[:flattr]->()<-[:flattr]-user-[:flattr]->things WHERE not(root_user-->things) RETURN things.thing_id, things.title, count(*) AS count ORDER BY count DESC LIMIT 10")
things = r["data"]
erb :user, :locals => { :user => user, :r => r, :things => things }
end
get "/thing/:id" do
g = Graph.new
thing = g.get_thing params[:id]
redirect to "/fetch/thing/#{params[:id]}" if thing.nil?
erb :thing, :locals => { :thing => thing }
end
get "/fetch/thing/:id" do
g = Graph.new
result = g.create_or_update_thing params[:id]
if result
redirect to "/thing/#{params[:id]}"
else
return "ERROR"
end
end
post "/fetch/user" do
g = Graph.new
#user = g.get_user params[:username]
Scrape.user params[:username]
puts "Scraped user #{params[:username]}"
redirect to "/user/#{params[:username]}"
end
get "/fetch/user/:username" do
g = Graph.new
result = g.create_user params[:username]
if result
redirect to "/user/#{params[:username]}"
else
return "ERROR"
end
end
end