forked from oscardelben/github-trends
/
github_trends.rb
70 lines (51 loc) · 2.06 KB
/
github_trends.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
require 'rubygems'
require 'bundler'
Bundler.setup
require 'sinatra'
require 'nokogiri'
require 'open-uri'
require 'builder'
require 'sinatra/cache'
$:.unshift File.dirname(__FILE__)
require 'parser'
disable :run
set :root, File.dirname(__FILE__) + '/../'
set :cache_enabled, true # production
LANGUAGES = ['ActionScript', 'Ada', 'Arc', 'Asp', 'Assembly', 'Boo', 'C', 'C#', 'C++', 'Clojure', 'CoffeeScript', 'ColdFusion', 'Common Lisp', 'D', 'Delphi', 'Dubi', 'Eiffel', 'Emacs Lisp', 'Erlang', 'F#', 'Factor', 'FORTRAN', 'Go', 'Groovy', 'Haskell', 'HaXe', 'Io', 'Java', 'JavaScript', 'Lua', 'Max/MSP', 'Nu', 'Objective-C', 'Objective-J', 'OCaml', 'ooc', 'Perl', 'PHP', 'Pure Data', 'Python', 'R', 'Racket', 'Ruby', 'Scala', 'Scheme', 'sclang', 'Self', 'Shell', 'SmallTalk', 'SuperCollider', 'Tcl', 'Vala', 'Verilog', 'VHDL', 'VimL', 'Visual Basic', 'XQuery']
CONTEXTS = ['most_watched_today', 'most_watched_this_week', 'most_watched_this_month', 'most_watched_overall', 'most_forked_today', 'most_forked_this_week', 'most_forked_this_month', 'most_forked_overall']
get "/" do
@languages = LANGUAGES
@contexts = CONTEXTS
haml(:index)
end
get "/explore/:context.xml" do
if !['today', 'week', 'month', 'forever'].include?(params['context'])
return 404
end
url = "https://github.com/explore/#{params['context']}"
@repos = Parser.new(url).trending_repos
@title = "Trending Repos - #{params['context'].capitalize}"
builder :show
end
get "/languages/:language/:context.xml" do
if !LANGUAGES.include?(params['language']) || !CONTEXTS.include?(params['context'])
return 404
end
url = "https://github.com/languages/#{params['language']}"
@repos = Parser.new(url).send(params['context'])
@title = "#{params['language']} #{params['context'].gsub('_', ' ').capitalize}"
builder :show
end
get "/languages/:language.opml" do
if !LANGUAGES.include?(params['language'])
return 404
end
@language = params['language']
@contexts = CONTEXTS
builder :language
end
get "/trends.opml" do
@languages = LANGUAGES
@contexts = CONTEXTS
builder :trends
end