forked from aoyagikouhei/sinatra-inquiry
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.rb
More file actions
67 lines (59 loc) · 1.6 KB
/
Copy pathapp.rb
File metadata and controls
67 lines (59 loc) · 1.6 KB
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
#coding: utf-8
require 'sinatra/base'
require 'active_support/core_ext' # for blank?
require 'rack/session/mongo'
require './models/link'
require 'json'
require './mongo_logger'
class MyApp < Sinatra::Base
SHORT_HOST = "http://short.krsgw.net"
configure do
conn = Mongo::Connection.new('localhost', 27017)
use Rack::Session::Mongo, {
connection: conn,
db: 'krsgw',
expire_after: 24 * 3600
}
set :haml, {format: :html5, escape_html: true}
Mongoid.configure do |conf|
conf.master = conn['krsgw']
end
syslog = conn['krsgw']['syslog']
set :logger, MongoLogger.new({collection: syslog, safe: true})
set :syslog, syslog
end
def logger
settings.logger
end
helpers do
# for escape
include Rack::Utils; alias_method :h, :escape_html
def make_time(src)
src.getlocal.strftime('%Y-%m-%d %H:%M:%S')
end
end
get '/short' do
content_type :json
long_url = params["longUrl"]
if long_url.blank?
status 500
return {status_code: 500, status_txt: "MISSING_ARG_LONGURL"}.to_json
end
link = Link.get_by_long_url(long_url)
p link
{}.to_json
#{status_code: 200, status_txt: "OK", data: {url: MyApp::SHORT_HOST + "/" + link.short_url}}.to_json
end
get '/log' do
syslog = settings.syslog
@cpp = params[:cpp] ? params[:cpp].to_i : 10
@page = params[:page] ? params[:page].to_i : 1
@count = syslog.count()
@list = syslog.find({}, {limit: @cpp, sort: [:i, :desc], skip: (@page - 1) * @cpp})
haml :log
end
get '*' do
logger.info(request.path_info)
request.path_info
end
end