pig-media-server 1500 → 2000
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pig-media-server/version.rb +1 -1
- data/lib/pig-media-server/web.rb +58 -49
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dab850bdae7c3e0de1ef2cd2b31a041892e008e7
|
4
|
+
data.tar.gz: 34defff9f55b15ade326f44c716f21d432f62631
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ada348c8e28316f833e98bbe86b374036465ae2403e4d6f70fbee0120e34576a5c62daaccd9791063c0eebeaea8443de66b6d0f1cf7660a53db2b26eb343c5ab
|
7
|
+
data.tar.gz: beb055da9f66b87cfcfea986589b1f936e1a76d692de985637651201a4154c1159ad9a000e83441f229eecbedc5da9e1d9faa9ebff1fdc5aaf81cda583764831
|
data/lib/pig-media-server/web.rb
CHANGED
@@ -15,6 +15,8 @@ require 'redcarpet'
|
|
15
15
|
require 'json'
|
16
16
|
require 'twitter'
|
17
17
|
require 'tempfile'
|
18
|
+
require 'tmpdir'
|
19
|
+
|
18
20
|
|
19
21
|
module PigMediaServer
|
20
22
|
CONFIG = Pit.get 'Pig Media Sever'
|
@@ -30,36 +32,39 @@ module PigMediaServer
|
|
30
32
|
|
31
33
|
class Gyazo
|
32
34
|
def self.tweet url, comment, key, secret, token, token_secret, c
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
35
|
+
Dir.mktmpdir do |dir|
|
36
|
+
name = dir + "/#{rand(256**16).to_s(16)}.png"
|
37
|
+
jpg = name.sub(/png$/, 'jpg')
|
38
|
+
img = url.sub(/data:image\/png;base64,/, '').unpack('m').first
|
39
|
+
open(name, 'w'){|f| f.puts img}
|
40
|
+
system "gm", "convert", name, jpg
|
41
|
+
client = Twitter::REST::Client.new do |config|
|
42
|
+
config.consumer_key = key
|
43
|
+
config.consumer_secret = secret
|
44
|
+
config.access_token = token
|
45
|
+
config.access_token_secret = token_secret
|
46
|
+
end
|
47
|
+
|
48
|
+
client.update_with_media(comment.to_s, open(jpg))# rescue nil
|
49
|
+
FileUtils.rm name
|
50
|
+
FileUtils.rm jpg
|
51
|
+
end
|
48
52
|
end
|
53
|
+
|
49
54
|
def self.post url, point
|
50
55
|
imagedata = url.sub(/data:image\/png;base64,/, '').unpack('m').first
|
51
56
|
boundary = '----BOUNDARYBOUNDARY----'
|
52
|
-
id = rand(256**16).to_s(16)
|
57
|
+
id = rand(256**16).to_s(16)
|
53
58
|
|
54
59
|
data = <<EOF
|
55
60
|
--#{boundary}\r
|
56
61
|
content-disposition: form-data; name="id"\r
|
57
62
|
\r
|
58
|
-
#{id}\r
|
63
|
+
#{id}\r
|
59
64
|
--#{boundary}\r
|
60
65
|
content-disposition: form-data; name="imagedata"; filename="gyazo.com"\r
|
61
66
|
\r
|
62
|
-
#{imagedata}\r
|
67
|
+
#{imagedata}\r
|
63
68
|
--#{boundary}--\r
|
64
69
|
EOF
|
65
70
|
header ={
|
@@ -80,14 +85,14 @@ EOF
|
|
80
85
|
class Web < Sinatra::Base
|
81
86
|
register Sinatra::Flash
|
82
87
|
include PigMediaServer::API
|
83
|
-
|
88
|
+
|
84
89
|
configure do
|
85
90
|
set :haml, escape_html: true
|
86
91
|
set :haml, attr_wrapper: '"'
|
87
92
|
set :logging, true
|
88
93
|
use Rack::Session::Cookie, key: 'pigmeidaserver', secret: $session_secret || rand(256**16).to_s(16)
|
89
94
|
end
|
90
|
-
|
95
|
+
|
91
96
|
get '/' do
|
92
97
|
haml :react
|
93
98
|
end
|
@@ -114,6 +119,7 @@ EOF
|
|
114
119
|
get('/meta/:key') do
|
115
120
|
haml :react
|
116
121
|
end
|
122
|
+
|
117
123
|
get('/sub/:key'){@p = Pig.find(params[:key]);haml :sub}
|
118
124
|
get('/webvtt/:key'){@p = Pig.find(params[:key]); content_type :text; @p.webvtt}
|
119
125
|
get '/delete/:key' do
|
@@ -125,7 +131,6 @@ EOF
|
|
125
131
|
redirect params[:href]
|
126
132
|
end
|
127
133
|
|
128
|
-
|
129
134
|
get '/read/:key' do
|
130
135
|
if request.xhr?
|
131
136
|
@record = Pig.find params[:key] rescue nil
|
@@ -135,6 +140,7 @@ EOF
|
|
135
140
|
raise
|
136
141
|
end
|
137
142
|
end
|
143
|
+
|
138
144
|
get('/book/info/:key'){ content_type :json; Pig.find(params[:key]).comic.info(params[:page]).to_json}
|
139
145
|
get '/book/image' do
|
140
146
|
image, type = Pig.find(params[:id]).comic.page(params[:page])
|
@@ -152,6 +158,7 @@ EOF
|
|
152
158
|
content_type :json
|
153
159
|
{url: url}.to_json
|
154
160
|
end
|
161
|
+
|
155
162
|
post '/gyazo/tweet' do
|
156
163
|
consumer_key = UserData.load session[:user_id], 'consumer_key'
|
157
164
|
consumer_secret = UserData.load session[:user_id], 'consumer_secret'
|
@@ -161,15 +168,14 @@ EOF
|
|
161
168
|
true
|
162
169
|
end
|
163
170
|
|
164
|
-
|
165
171
|
get '/remote' do
|
166
172
|
if request.xhr? and params[:key]
|
167
173
|
return partial :_link, locals: {l: Pig.find(params[:key])}
|
168
174
|
end
|
175
|
+
|
169
176
|
return haml :remote
|
170
177
|
end
|
171
178
|
|
172
|
-
|
173
179
|
get '/sessions' do
|
174
180
|
if session[:user_id]
|
175
181
|
session[:user_id] = nil
|
@@ -189,7 +195,6 @@ EOF
|
|
189
195
|
end
|
190
196
|
end
|
191
197
|
|
192
|
-
|
193
198
|
post '/sessions' do
|
194
199
|
session[:user_id] = params[:user_id]
|
195
200
|
p session
|
@@ -226,13 +231,14 @@ EOF
|
|
226
231
|
get('/*.css'){scss params[:splat].first.to_sym}
|
227
232
|
get('/bundle.js'){content_type :js; open(File::dirname(__FILE__)+"/views/bundle.js").read}
|
228
233
|
get('/*.js'){coffee params[:splat].first.to_sym}
|
229
|
-
|
234
|
+
|
230
235
|
post '/api/save' do
|
231
236
|
key = Digest::MD5.hexdigest(params[:name]).to_s
|
232
237
|
FileUtils.mkdir_p "#{config['user_data_path']}/api_data"
|
233
238
|
open("#{config['user_data_path']}/api_data/#{key}", 'w'){|x| x.puts params[:body]}
|
234
239
|
true
|
235
240
|
end
|
241
|
+
|
236
242
|
get '/api/get' do
|
237
243
|
key = Digest::MD5.hexdigest(params[:name]).to_s
|
238
244
|
FileUtils.mkdir_p "#{config['user_data_path']}/api_data"
|
@@ -242,6 +248,7 @@ EOF
|
|
242
248
|
nil
|
243
249
|
end
|
244
250
|
end
|
251
|
+
|
245
252
|
post '/api/capapi' do
|
246
253
|
record = Groonga['Files'][params[:key]]
|
247
254
|
name = "#{rand(256**16).to_s(16)}.jpg"
|
@@ -262,17 +269,19 @@ EOF
|
|
262
269
|
haml :index
|
263
270
|
end
|
264
271
|
|
265
|
-
|
266
272
|
helpers do
|
267
273
|
def config
|
268
274
|
$config = Pit.get("Pig Media Server") unless $config
|
269
275
|
$config['page_title'] = 'Pig Media Server' unless $config['page_title']
|
270
276
|
$config
|
271
277
|
end
|
278
|
+
|
272
279
|
def h str; CGI.escapeHTML str.to_s; end
|
280
|
+
|
273
281
|
def remote?
|
274
282
|
UserData.load(session[:user_id], 'remote')
|
275
283
|
end
|
284
|
+
|
276
285
|
def partial(template, *args)
|
277
286
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
278
287
|
options.merge!(:layout => false)
|
@@ -283,40 +292,41 @@ EOF
|
|
283
292
|
else
|
284
293
|
haml(template, options)
|
285
294
|
end
|
286
|
-
end
|
295
|
+
end
|
287
296
|
|
288
297
|
def star? key
|
289
298
|
Stars.star?(session[:user_id], key)
|
290
299
|
end
|
291
|
-
|
300
|
+
|
292
301
|
def markdown str
|
293
|
-
|
294
|
-
|
302
|
+
str = str.to_s
|
303
|
+
Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(hard_wrap: true), autolink: true, fenced_code_blocks: true).render(str)
|
295
304
|
end
|
296
|
-
|
305
|
+
|
297
306
|
def number_to_human_size(number, precision = 1)
|
298
307
|
number = begin
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
308
|
+
Float(number)
|
309
|
+
rescue ArgumentError, TypeError
|
310
|
+
return number
|
311
|
+
end
|
312
|
+
|
303
313
|
case
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
314
|
+
when number.to_i == 1 then
|
315
|
+
"1 Byte"
|
316
|
+
when number < 1024 then
|
317
|
+
"%d Bytes" % number
|
318
|
+
when number < 1048576 then
|
319
|
+
"%.#{precision}f KB" % (number / 1024)
|
320
|
+
when number < 1073741824 then
|
321
|
+
"%.#{precision}f MB" % (number / 1048576)
|
322
|
+
when number < 1099511627776 then
|
323
|
+
"%.#{precision}f GB" % (number / 1073741824)
|
324
|
+
else
|
325
|
+
"%.#{precision}f TB" % (number / 1099511627776)
|
316
326
|
end.sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ').encode('UTF-8')
|
317
327
|
rescue
|
318
328
|
""
|
319
|
-
end
|
329
|
+
end
|
320
330
|
|
321
331
|
def title
|
322
332
|
base = $config['page_title']
|
@@ -326,5 +336,4 @@ EOF
|
|
326
336
|
end
|
327
337
|
end
|
328
338
|
end
|
329
|
-
|
330
339
|
end
|