-
Notifications
You must be signed in to change notification settings - Fork 0
/
sine.rb
65 lines (52 loc) · 1.3 KB
/
sine.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
# Clone of r.sine.com
# Displays random image when page is loaded
# Coded by ABrambleNinja, released under MIT license
# <http://abrambleninja.mit-license.org>
# Config Variables
IMAGE_DIRECTORY = "images"
IMAGE_EXTENSIONS = ['.jpg', '.jpeg', '.gif', '.png']
SERVER_NAME = "better than urs" # shows up on HTTP headers
NOT_FOUND = "noneed.gif" # image to display on 404
# End Config Variables
$images = []
Dir.foreach(IMAGE_DIRECTORY) do |f|
next if File.directory?(f) # if f is a directory, skip it
next unless IMAGE_EXTENSIONS.include? File.extname(f) # if f does not match one of the extensions, skip it
$images << f
end
require 'sinatra'
require 'thin'
require 'mime/types'
class ChangeServer
def initialize(app)
@app = app
end
def call(env)
res = @app.call(env)
res[1]['Server'] = SERVER_NAME
return res
end
end
use ChangeServer
get '/' do
image = get_image
send_image image
end
get '/:image' do
if File.exist? IMAGE_DIRECTORY + "/" + params[:image]
send_image params[:image]
else
halt 404
end
end
not_found do
status 404
send_image NOT_FOUND
end
def get_image
$images.sample # choose random image
end
def send_image image
content_type MIME::Types.of(image).first.content_type
File.open("#{Dir.pwd}/#{IMAGE_DIRECTORY}/#{image}").read # send image to user
end