nyara 0.0.1.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/example/design.rb +62 -0
- data/example/fib.rb +15 -0
- data/example/hello.rb +5 -0
- data/example/stream.rb +10 -0
- data/ext/accept.c +133 -0
- data/ext/event.c +89 -0
- data/ext/extconf.rb +34 -0
- data/ext/hashes.c +130 -0
- data/ext/http-parser/AUTHORS +41 -0
- data/ext/http-parser/CONTRIBUTIONS +4 -0
- data/ext/http-parser/LICENSE-MIT +23 -0
- data/ext/http-parser/contrib/parsertrace.c +156 -0
- data/ext/http-parser/contrib/url_parser.c +44 -0
- data/ext/http-parser/http_parser.c +2175 -0
- data/ext/http-parser/http_parser.h +304 -0
- data/ext/http-parser/test.c +3425 -0
- data/ext/http_parser.c +1 -0
- data/ext/inc/epoll.h +60 -0
- data/ext/inc/kqueue.h +77 -0
- data/ext/inc/status_codes.inc +64 -0
- data/ext/inc/str_intern.h +66 -0
- data/ext/inc/version.inc +1 -0
- data/ext/mime.c +107 -0
- data/ext/multipart-parser-c/README.md +18 -0
- data/ext/multipart-parser-c/multipart_parser.c +309 -0
- data/ext/multipart-parser-c/multipart_parser.h +48 -0
- data/ext/multipart_parser.c +1 -0
- data/ext/nyara.c +56 -0
- data/ext/nyara.h +59 -0
- data/ext/request.c +474 -0
- data/ext/route.cc +325 -0
- data/ext/url_encoded.c +304 -0
- data/hello.rb +5 -0
- data/lib/nyara/config.rb +64 -0
- data/lib/nyara/config_hash.rb +51 -0
- data/lib/nyara/controller.rb +336 -0
- data/lib/nyara/cookie.rb +31 -0
- data/lib/nyara/cpu_counter.rb +65 -0
- data/lib/nyara/header_hash.rb +18 -0
- data/lib/nyara/mime_types.rb +612 -0
- data/lib/nyara/nyara.rb +82 -0
- data/lib/nyara/param_hash.rb +5 -0
- data/lib/nyara/request.rb +144 -0
- data/lib/nyara/route.rb +138 -0
- data/lib/nyara/route_entry.rb +43 -0
- data/lib/nyara/session.rb +104 -0
- data/lib/nyara/view.rb +317 -0
- data/lib/nyara.rb +25 -0
- data/nyara.gemspec +20 -0
- data/rakefile +91 -0
- data/readme.md +35 -0
- data/spec/ext_mime_match_spec.rb +27 -0
- data/spec/ext_parse_accept_value_spec.rb +29 -0
- data/spec/ext_parse_spec.rb +138 -0
- data/spec/ext_route_spec.rb +70 -0
- data/spec/hashes_spec.rb +71 -0
- data/spec/path_helper_spec.rb +77 -0
- data/spec/request_delegate_spec.rb +67 -0
- data/spec/request_spec.rb +56 -0
- data/spec/route_entry_spec.rb +12 -0
- data/spec/route_spec.rb +84 -0
- data/spec/session_spec.rb +66 -0
- data/spec/spec_helper.rb +52 -0
- data/spec/view_spec.rb +87 -0
- data/tools/bench-cookie.rb +22 -0
- metadata +111 -0
@@ -0,0 +1,612 @@
|
|
1
|
+
module Nyara
|
2
|
+
MIME_TYPES = Hash.[] %w|
|
3
|
+
123 application/vnd.lotus-1-2-3
|
4
|
+
3dml text/vnd.in3d.3dml
|
5
|
+
3g2 video/3gpp2
|
6
|
+
3gp video/3gpp
|
7
|
+
a application/octet-stream
|
8
|
+
acc application/vnd.americandynamics.acc
|
9
|
+
ace application/x-ace-compressed
|
10
|
+
acu application/vnd.acucobol
|
11
|
+
aep application/vnd.audiograph
|
12
|
+
afp application/vnd.ibm.modcap
|
13
|
+
ai application/postscript
|
14
|
+
aif audio/x-aiff
|
15
|
+
aiff audio/x-aiff
|
16
|
+
ami application/vnd.amiga.ami
|
17
|
+
appcache text/cache-manifest
|
18
|
+
apr application/vnd.lotus-approach
|
19
|
+
asc application/pgp-signature
|
20
|
+
asf video/x-ms-asf
|
21
|
+
asm text/x-asm
|
22
|
+
aso application/vnd.accpac.simply.aso
|
23
|
+
asx video/x-ms-asf
|
24
|
+
atc application/vnd.acucorp
|
25
|
+
atom application/atom+xml
|
26
|
+
atomcat application/atomcat+xml
|
27
|
+
atomsvc application/atomsvc+xml
|
28
|
+
atx application/vnd.antix.game-component
|
29
|
+
au audio/basic
|
30
|
+
avi video/x-msvideo
|
31
|
+
bat application/x-msdownload
|
32
|
+
bcpio application/x-bcpio
|
33
|
+
bdm application/vnd.syncml.dm+wbxml
|
34
|
+
bh2 application/vnd.fujitsu.oasysprs
|
35
|
+
bin application/octet-stream
|
36
|
+
bmi application/vnd.bmi
|
37
|
+
bmp image/bmp
|
38
|
+
box application/vnd.previewsystems.box
|
39
|
+
btif image/prs.btif
|
40
|
+
bz application/x-bzip
|
41
|
+
bz2 application/x-bzip2
|
42
|
+
c text/x-c
|
43
|
+
c4g application/vnd.clonk.c4group
|
44
|
+
cab application/vnd.ms-cab-compressed
|
45
|
+
cc text/x-c
|
46
|
+
ccxml application/ccxml+xml
|
47
|
+
cdbcmsg application/vnd.contact.cmsg
|
48
|
+
cdkey application/vnd.mediastation.cdkey
|
49
|
+
cdx chemical/x-cdx
|
50
|
+
cdxml application/vnd.chemdraw+xml
|
51
|
+
cdy application/vnd.cinderella
|
52
|
+
cer application/pkix-cert
|
53
|
+
cgm image/cgm
|
54
|
+
chat application/x-chat
|
55
|
+
chm application/vnd.ms-htmlhelp
|
56
|
+
chrt application/vnd.kde.kchart
|
57
|
+
cif chemical/x-cif
|
58
|
+
cii application/vnd.anser-web-certificate-issue-initiation
|
59
|
+
cil application/vnd.ms-artgalry
|
60
|
+
cla application/vnd.claymore
|
61
|
+
class application/octet-stream
|
62
|
+
clkk application/vnd.crick.clicker.keyboard
|
63
|
+
clkp application/vnd.crick.clicker.palette
|
64
|
+
clkt application/vnd.crick.clicker.template
|
65
|
+
clkw application/vnd.crick.clicker.wordbank
|
66
|
+
clkx application/vnd.crick.clicker
|
67
|
+
clp application/x-msclip
|
68
|
+
cmc application/vnd.cosmocaller
|
69
|
+
cmdf chemical/x-cmdf
|
70
|
+
cml chemical/x-cml
|
71
|
+
cmp application/vnd.yellowriver-custom-menu
|
72
|
+
cmx image/x-cmx
|
73
|
+
com application/x-msdownload
|
74
|
+
conf text/plain
|
75
|
+
cpio application/x-cpio
|
76
|
+
cpp text/x-c
|
77
|
+
cpt application/mac-compactpro
|
78
|
+
crd application/x-mscardfile
|
79
|
+
crl application/pkix-crl
|
80
|
+
crt application/x-x509-ca-cert
|
81
|
+
csh application/x-csh
|
82
|
+
csml chemical/x-csml
|
83
|
+
csp application/vnd.commonspace
|
84
|
+
css text/css
|
85
|
+
csv text/csv
|
86
|
+
curl application/vnd.curl
|
87
|
+
cww application/prs.cww
|
88
|
+
cxx text/x-c
|
89
|
+
daf application/vnd.mobius.daf
|
90
|
+
davmount application/davmount+xml
|
91
|
+
dcr application/x-director
|
92
|
+
dd2 application/vnd.oma.dd2+xml
|
93
|
+
ddd application/vnd.fujixerox.ddd
|
94
|
+
deb application/x-debian-package
|
95
|
+
der application/x-x509-ca-cert
|
96
|
+
dfac application/vnd.dreamfactory
|
97
|
+
diff text/x-diff
|
98
|
+
dis application/vnd.mobius.dis
|
99
|
+
djv image/vnd.djvu
|
100
|
+
djvu image/vnd.djvu
|
101
|
+
dll application/x-msdownload
|
102
|
+
dmg application/octet-stream
|
103
|
+
dna application/vnd.dna
|
104
|
+
doc application/msword
|
105
|
+
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
106
|
+
dot application/msword
|
107
|
+
dp application/vnd.osgi.dp
|
108
|
+
dpg application/vnd.dpgraph
|
109
|
+
dsc text/prs.lines.tag
|
110
|
+
dtd application/xml-dtd
|
111
|
+
dts audio/vnd.dts
|
112
|
+
dtshd audio/vnd.dts.hd
|
113
|
+
dv video/x-dv
|
114
|
+
dvi application/x-dvi
|
115
|
+
dwf model/vnd.dwf
|
116
|
+
dwg image/vnd.dwg
|
117
|
+
dxf image/vnd.dxf
|
118
|
+
dxp application/vnd.spotfire.dxp
|
119
|
+
ear application/java-archive
|
120
|
+
ecelp4800 =>dio/vnd.nuera.ecelp4800
|
121
|
+
ecelp7470 =>dio/vnd.nuera.ecelp7470
|
122
|
+
ecelp9600 =>dio/vnd.nuera.ecelp9600
|
123
|
+
ecma application/ecmascript
|
124
|
+
edm application/vnd.novadigm.edm
|
125
|
+
edx application/vnd.novadigm.edx
|
126
|
+
efif application/vnd.picsel
|
127
|
+
ei6 application/vnd.pg.osasli
|
128
|
+
eml message/rfc822
|
129
|
+
eol audio/vnd.digital-winds
|
130
|
+
eot application/vnd.ms-fontobject
|
131
|
+
eps application/postscript
|
132
|
+
es3 application/vnd.eszigno3+xml
|
133
|
+
esf application/vnd.epson.esf
|
134
|
+
etx text/x-setext
|
135
|
+
exe application/x-msdownload
|
136
|
+
ext application/vnd.novadigm.ext
|
137
|
+
ez application/andrew-inset
|
138
|
+
ez2 application/vnd.ezpix-album
|
139
|
+
ez3 application/vnd.ezpix-package
|
140
|
+
f text/x-fortran
|
141
|
+
f77 text/x-fortran
|
142
|
+
f90 text/x-fortran
|
143
|
+
fbs image/vnd.fastbidsheet
|
144
|
+
fdf application/vnd.fdf
|
145
|
+
fe_launch =>plication/vnd.denovo.fcselayout-link
|
146
|
+
fg5 application/vnd.fujitsu.oasysgp
|
147
|
+
fli video/x-fli
|
148
|
+
flo application/vnd.micrografx.flo
|
149
|
+
flv video/x-flv
|
150
|
+
flw application/vnd.kde.kivio
|
151
|
+
flx text/vnd.fmi.flexstor
|
152
|
+
fly text/vnd.fly
|
153
|
+
fm application/vnd.framemaker
|
154
|
+
fnc application/vnd.frogans.fnc
|
155
|
+
for text/x-fortran
|
156
|
+
fpx image/vnd.fpx
|
157
|
+
fsc application/vnd.fsc.weblaunch
|
158
|
+
fst image/vnd.fst
|
159
|
+
ftc application/vnd.fluxtime.clip
|
160
|
+
fti application/vnd.anser-web-funds-transfer-initiation
|
161
|
+
fvt video/vnd.fvt
|
162
|
+
fzs application/vnd.fuzzysheet
|
163
|
+
g3 image/g3fax
|
164
|
+
gac application/vnd.groove-account
|
165
|
+
gdl model/vnd.gdl
|
166
|
+
gem application/octet-stream
|
167
|
+
gemspec text/x-script.ruby
|
168
|
+
ghf application/vnd.groove-help
|
169
|
+
gif image/gif
|
170
|
+
gim application/vnd.groove-identity-message
|
171
|
+
gmx application/vnd.gmx
|
172
|
+
gph application/vnd.flographit
|
173
|
+
gqf application/vnd.grafeq
|
174
|
+
gram application/srgs
|
175
|
+
grv application/vnd.groove-injector
|
176
|
+
grxml application/srgs+xml
|
177
|
+
gtar application/x-gtar
|
178
|
+
gtm application/vnd.groove-tool-message
|
179
|
+
gtw model/vnd.gtw
|
180
|
+
gv text/vnd.graphviz
|
181
|
+
gz application/x-gzip
|
182
|
+
h text/x-c
|
183
|
+
h261 video/h261
|
184
|
+
h263 video/h263
|
185
|
+
h264 video/h264
|
186
|
+
hbci application/vnd.hbci
|
187
|
+
hdf application/x-hdf
|
188
|
+
hh text/x-c
|
189
|
+
hlp application/winhlp
|
190
|
+
hpgl application/vnd.hp-hpgl
|
191
|
+
hpid application/vnd.hp-hpid
|
192
|
+
hps application/vnd.hp-hps
|
193
|
+
hqx application/mac-binhex40
|
194
|
+
htc text/x-component
|
195
|
+
htke application/vnd.kenameaapp
|
196
|
+
htm text/html
|
197
|
+
html text/html
|
198
|
+
hvd application/vnd.yamaha.hv-dic
|
199
|
+
hvp application/vnd.yamaha.hv-voice
|
200
|
+
hvs application/vnd.yamaha.hv-script
|
201
|
+
icc application/vnd.iccprofile
|
202
|
+
ice x-conference/x-cooltalk
|
203
|
+
ico image/vnd.microsoft.icon
|
204
|
+
ics text/calendar
|
205
|
+
ief image/ief
|
206
|
+
ifb text/calendar
|
207
|
+
ifm application/vnd.shana.informed.formdata
|
208
|
+
igl application/vnd.igloader
|
209
|
+
igs model/iges
|
210
|
+
igx application/vnd.micrografx.igx
|
211
|
+
iif application/vnd.shana.informed.interchange
|
212
|
+
imp application/vnd.accpac.simply.imp
|
213
|
+
ims application/vnd.ms-ims
|
214
|
+
ipk application/vnd.shana.informed.package
|
215
|
+
irm application/vnd.ibm.rights-management
|
216
|
+
irp application/vnd.irepository.package+xml
|
217
|
+
iso application/octet-stream
|
218
|
+
itp application/vnd.shana.informed.formtemplate
|
219
|
+
ivp application/vnd.immervision-ivp
|
220
|
+
ivu application/vnd.immervision-ivu
|
221
|
+
jad text/vnd.sun.j2me.app-descriptor
|
222
|
+
jam application/vnd.jam
|
223
|
+
jar application/java-archive
|
224
|
+
java text/x-java-source
|
225
|
+
jisp application/vnd.jisp
|
226
|
+
jlt application/vnd.hp-jlyt
|
227
|
+
jnlp application/x-java-jnlp-file
|
228
|
+
joda application/vnd.joost.joda-archive
|
229
|
+
jp2 image/jp2
|
230
|
+
jpeg image/jpeg
|
231
|
+
jpg image/jpeg
|
232
|
+
jpgv video/jpeg
|
233
|
+
jpm video/jpm
|
234
|
+
js application/javascript
|
235
|
+
json application/json
|
236
|
+
karbon application/vnd.kde.karbon
|
237
|
+
kfo application/vnd.kde.kformula
|
238
|
+
kia application/vnd.kidspiration
|
239
|
+
kml application/vnd.google-earth.kml+xml
|
240
|
+
kmz application/vnd.google-earth.kmz
|
241
|
+
kne application/vnd.kinar
|
242
|
+
kon application/vnd.kde.kontour
|
243
|
+
kpr application/vnd.kde.kpresenter
|
244
|
+
ksp application/vnd.kde.kspread
|
245
|
+
ktz application/vnd.kahootz
|
246
|
+
kwd application/vnd.kde.kword
|
247
|
+
latex application/x-latex
|
248
|
+
lbd application/vnd.llamagraphics.life-balance.desktop
|
249
|
+
lbe application/vnd.llamagraphics.life-balance.exchange+xml
|
250
|
+
les application/vnd.hhe.lesson-player
|
251
|
+
link66 application/vnd.route66.link66+xml
|
252
|
+
log text/plain
|
253
|
+
lostxml application/lost+xml
|
254
|
+
lrm application/vnd.ms-lrm
|
255
|
+
ltf application/vnd.frogans.ltf
|
256
|
+
lvp audio/vnd.lucent.voice
|
257
|
+
lwp application/vnd.lotus-wordpro
|
258
|
+
m3u audio/x-mpegurl
|
259
|
+
m4a audio/mp4a-latm
|
260
|
+
m4v video/mp4
|
261
|
+
ma application/mathematica
|
262
|
+
mag application/vnd.ecowin.chart
|
263
|
+
man text/troff
|
264
|
+
manifest text/cache-manifest
|
265
|
+
mathml application/mathml+xml
|
266
|
+
mbk application/vnd.mobius.mbk
|
267
|
+
mbox application/mbox
|
268
|
+
mc1 application/vnd.medcalcdata
|
269
|
+
mcd application/vnd.mcd
|
270
|
+
mdb application/x-msaccess
|
271
|
+
mdi image/vnd.ms-modi
|
272
|
+
mdoc text/troff
|
273
|
+
me text/troff
|
274
|
+
mfm application/vnd.mfmp
|
275
|
+
mgz application/vnd.proteus.magazine
|
276
|
+
mid audio/midi
|
277
|
+
midi audio/midi
|
278
|
+
mif application/vnd.mif
|
279
|
+
mime message/rfc822
|
280
|
+
mj2 video/mj2
|
281
|
+
mlp application/vnd.dolby.mlp
|
282
|
+
mmd application/vnd.chipnuts.karaoke-mmd
|
283
|
+
mmf application/vnd.smaf
|
284
|
+
mml application/mathml+xml
|
285
|
+
mmr image/vnd.fujixerox.edmics-mmr
|
286
|
+
mng video/x-mng
|
287
|
+
mny application/x-msmoney
|
288
|
+
mov video/quicktime
|
289
|
+
movie video/x-sgi-movie
|
290
|
+
mp3 audio/mpeg
|
291
|
+
mp4 video/mp4
|
292
|
+
mp4a audio/mp4
|
293
|
+
mp4s application/mp4
|
294
|
+
mp4v video/mp4
|
295
|
+
mpc application/vnd.mophun.certificate
|
296
|
+
mpeg video/mpeg
|
297
|
+
mpg video/mpeg
|
298
|
+
mpga audio/mpeg
|
299
|
+
mpkg application/vnd.apple.installer+xml
|
300
|
+
mpm application/vnd.blueice.multipass
|
301
|
+
mpn application/vnd.mophun.application
|
302
|
+
mpp application/vnd.ms-project
|
303
|
+
mpy application/vnd.ibm.minipay
|
304
|
+
mqy application/vnd.mobius.mqy
|
305
|
+
mrc application/marc
|
306
|
+
ms text/troff
|
307
|
+
mscml application/mediaservercontrol+xml
|
308
|
+
mseq application/vnd.mseq
|
309
|
+
msf application/vnd.epson.msf
|
310
|
+
msh model/mesh
|
311
|
+
msi application/x-msdownload
|
312
|
+
msl application/vnd.mobius.msl
|
313
|
+
msty application/vnd.muvee.style
|
314
|
+
mts model/vnd.mts
|
315
|
+
mus application/vnd.musician
|
316
|
+
mvb application/x-msmediaview
|
317
|
+
mwf application/vnd.mfer
|
318
|
+
mxf application/mxf
|
319
|
+
mxl application/vnd.recordare.musicxml
|
320
|
+
mxml application/xv+xml
|
321
|
+
mxs application/vnd.triscape.mxs
|
322
|
+
mxu video/vnd.mpegurl
|
323
|
+
n application/vnd.nokia.n-gage.symbian.install
|
324
|
+
nc application/x-netcdf
|
325
|
+
ngdat application/vnd.nokia.n-gage.data
|
326
|
+
nlu application/vnd.neurolanguage.nlu
|
327
|
+
nml application/vnd.enliven
|
328
|
+
nnd application/vnd.noblenet-directory
|
329
|
+
nns application/vnd.noblenet-sealer
|
330
|
+
nnw application/vnd.noblenet-web
|
331
|
+
npx image/vnd.net-fpx
|
332
|
+
nsf application/vnd.lotus-notes
|
333
|
+
oa2 application/vnd.fujitsu.oasys2
|
334
|
+
oa3 application/vnd.fujitsu.oasys3
|
335
|
+
oas application/vnd.fujitsu.oasys
|
336
|
+
obd application/x-msbinder
|
337
|
+
oda application/oda
|
338
|
+
odc application/vnd.oasis.opendocument.chart
|
339
|
+
odf application/vnd.oasis.opendocument.formula
|
340
|
+
odg application/vnd.oasis.opendocument.graphics
|
341
|
+
odi application/vnd.oasis.opendocument.image
|
342
|
+
odp application/vnd.oasis.opendocument.presentation
|
343
|
+
ods application/vnd.oasis.opendocument.spreadsheet
|
344
|
+
odt application/vnd.oasis.opendocument.text
|
345
|
+
oga audio/ogg
|
346
|
+
ogg application/ogg
|
347
|
+
ogv video/ogg
|
348
|
+
ogx application/ogg
|
349
|
+
org application/vnd.lotus-organizer
|
350
|
+
otc application/vnd.oasis.opendocument.chart-template
|
351
|
+
otf application/vnd.oasis.opendocument.formula-template
|
352
|
+
otg application/vnd.oasis.opendocument.graphics-template
|
353
|
+
oth application/vnd.oasis.opendocument.text-web
|
354
|
+
oti application/vnd.oasis.opendocument.image-template
|
355
|
+
otm application/vnd.oasis.opendocument.text-master
|
356
|
+
ots application/vnd.oasis.opendocument.spreadsheet-template
|
357
|
+
ott application/vnd.oasis.opendocument.text-template
|
358
|
+
oxt application/vnd.openofficeorg.extension
|
359
|
+
p text/x-pascal
|
360
|
+
p10 application/pkcs10
|
361
|
+
p12 application/x-pkcs12
|
362
|
+
p7b application/x-pkcs7-certificates
|
363
|
+
p7m application/pkcs7-mime
|
364
|
+
p7r application/x-pkcs7-certreqresp
|
365
|
+
p7s application/pkcs7-signature
|
366
|
+
pas text/x-pascal
|
367
|
+
pbd application/vnd.powerbuilder6
|
368
|
+
pbm image/x-portable-bitmap
|
369
|
+
pcl application/vnd.hp-pcl
|
370
|
+
pclxl application/vnd.hp-pclxl
|
371
|
+
pcx image/x-pcx
|
372
|
+
pdb chemical/x-pdb
|
373
|
+
pdf application/pdf
|
374
|
+
pem application/x-x509-ca-cert
|
375
|
+
pfr application/font-tdpfr
|
376
|
+
pgm image/x-portable-graymap
|
377
|
+
pgn application/x-chess-pgn
|
378
|
+
pgp application/pgp-encrypted
|
379
|
+
pic image/x-pict
|
380
|
+
pict image/pict
|
381
|
+
pkg application/octet-stream
|
382
|
+
pki application/pkixcmp
|
383
|
+
pkipath application/pkix-pkipath
|
384
|
+
pl text/x-script.perl
|
385
|
+
plb application/vnd.3gpp.pic-bw-large
|
386
|
+
plc application/vnd.mobius.plc
|
387
|
+
plf application/vnd.pocketlearn
|
388
|
+
pls application/pls+xml
|
389
|
+
pm text/x-script.perl-module
|
390
|
+
pml application/vnd.ctc-posml
|
391
|
+
png image/png
|
392
|
+
pnm image/x-portable-anymap
|
393
|
+
pntg image/x-macpaint
|
394
|
+
portpkg application/vnd.macports.portpkg
|
395
|
+
ppd application/vnd.cups-ppd
|
396
|
+
ppm image/x-portable-pixmap
|
397
|
+
pps application/vnd.ms-powerpoint
|
398
|
+
ppt application/vnd.ms-powerpoint
|
399
|
+
prc application/vnd.palm
|
400
|
+
pre application/vnd.lotus-freelance
|
401
|
+
prf application/pics-rules
|
402
|
+
ps application/postscript
|
403
|
+
psb application/vnd.3gpp.pic-bw-small
|
404
|
+
psd image/vnd.adobe.photoshop
|
405
|
+
ptid application/vnd.pvi.ptid1
|
406
|
+
pub application/x-mspublisher
|
407
|
+
pvb application/vnd.3gpp.pic-bw-var
|
408
|
+
pwn application/vnd.3m.post-it-notes
|
409
|
+
py text/x-script.python
|
410
|
+
pya audio/vnd.ms-playready.media.pya
|
411
|
+
pyv video/vnd.ms-playready.media.pyv
|
412
|
+
qam application/vnd.epson.quickanime
|
413
|
+
qbo application/vnd.intu.qbo
|
414
|
+
qfx application/vnd.intu.qfx
|
415
|
+
qps application/vnd.publishare-delta-tree
|
416
|
+
qt video/quicktime
|
417
|
+
qtif image/x-quicktime
|
418
|
+
qxd application/vnd.quark.quarkxpress
|
419
|
+
ra audio/x-pn-realaudio
|
420
|
+
rake text/x-script.ruby
|
421
|
+
ram audio/x-pn-realaudio
|
422
|
+
rar application/x-rar-compressed
|
423
|
+
ras image/x-cmu-raster
|
424
|
+
rb text/x-script.ruby
|
425
|
+
rcprofile =>plication/vnd.ipunplugged.rcprofile
|
426
|
+
rdf application/rdf+xml
|
427
|
+
rdz application/vnd.data-vision.rdz
|
428
|
+
rep application/vnd.businessobjects
|
429
|
+
rgb image/x-rgb
|
430
|
+
rif application/reginfo+xml
|
431
|
+
rl application/resource-lists+xml
|
432
|
+
rlc image/vnd.fujixerox.edmics-rlc
|
433
|
+
rld application/resource-lists-diff+xml
|
434
|
+
rm application/vnd.rn-realmedia
|
435
|
+
rmp audio/x-pn-realaudio-plugin
|
436
|
+
rms application/vnd.jcp.javame.midlet-rms
|
437
|
+
rnc application/relax-ng-compact-syntax
|
438
|
+
roff text/troff
|
439
|
+
rpm application/x-redhat-package-manager
|
440
|
+
rpss application/vnd.nokia.radio-presets
|
441
|
+
rpst application/vnd.nokia.radio-preset
|
442
|
+
rq application/sparql-query
|
443
|
+
rs application/rls-services+xml
|
444
|
+
rsd application/rsd+xml
|
445
|
+
rss application/rss+xml
|
446
|
+
rtf application/rtf
|
447
|
+
rtx text/richtext
|
448
|
+
ru text/x-script.ruby
|
449
|
+
s text/x-asm
|
450
|
+
saf application/vnd.yamaha.smaf-audio
|
451
|
+
sbml application/sbml+xml
|
452
|
+
sc application/vnd.ibm.secure-container
|
453
|
+
scd application/x-msschedule
|
454
|
+
scm application/vnd.lotus-screencam
|
455
|
+
scq application/scvp-cv-request
|
456
|
+
scs application/scvp-cv-response
|
457
|
+
sdkm application/vnd.solent.sdkm+xml
|
458
|
+
sdp application/sdp
|
459
|
+
see application/vnd.seemail
|
460
|
+
sema application/vnd.sema
|
461
|
+
semd application/vnd.semd
|
462
|
+
semf application/vnd.semf
|
463
|
+
setpay application/set-payment-initiation
|
464
|
+
setreg application/set-registration-initiation
|
465
|
+
sfd application/vnd.hydrostatix.sof-data
|
466
|
+
sfs application/vnd.spotfire.sfs
|
467
|
+
sgm text/sgml
|
468
|
+
sgml text/sgml
|
469
|
+
sh application/x-sh
|
470
|
+
shar application/x-shar
|
471
|
+
shf application/shf+xml
|
472
|
+
sig application/pgp-signature
|
473
|
+
sit application/x-stuffit
|
474
|
+
sitx application/x-stuffitx
|
475
|
+
skp application/vnd.koan
|
476
|
+
slt application/vnd.epson.salt
|
477
|
+
smi application/smil+xml
|
478
|
+
snd audio/basic
|
479
|
+
so application/octet-stream
|
480
|
+
spf application/vnd.yamaha.smaf-phrase
|
481
|
+
spl application/x-futuresplash
|
482
|
+
spot text/vnd.in3d.spot
|
483
|
+
spp application/scvp-vp-response
|
484
|
+
spq application/scvp-vp-request
|
485
|
+
src application/x-wais-source
|
486
|
+
srx application/sparql-results+xml
|
487
|
+
sse application/vnd.kodak-descriptor
|
488
|
+
ssf application/vnd.epson.ssf
|
489
|
+
ssml application/ssml+xml
|
490
|
+
stf application/vnd.wt.stf
|
491
|
+
stk application/hyperstudio
|
492
|
+
str application/vnd.pg.format
|
493
|
+
sus application/vnd.sus-calendar
|
494
|
+
sv4cpio application/x-sv4cpio
|
495
|
+
sv4crc application/x-sv4crc
|
496
|
+
svd application/vnd.svd
|
497
|
+
svg image/svg+xml
|
498
|
+
svgz image/svg+xml
|
499
|
+
swf application/x-shockwave-flash
|
500
|
+
swi application/vnd.arastra.swi
|
501
|
+
t text/troff
|
502
|
+
tao application/vnd.tao.intent-module-archive
|
503
|
+
tar application/x-tar
|
504
|
+
tbz application/x-bzip-compressed-tar
|
505
|
+
tcap application/vnd.3gpp2.tcap
|
506
|
+
tcl application/x-tcl
|
507
|
+
tex application/x-tex
|
508
|
+
texi application/x-texinfo
|
509
|
+
texinfo application/x-texinfo
|
510
|
+
text text/plain
|
511
|
+
tif image/tiff
|
512
|
+
tiff image/tiff
|
513
|
+
tmo application/vnd.tmobile-livetv
|
514
|
+
torrent application/x-bittorrent
|
515
|
+
tpl application/vnd.groove-tool-template
|
516
|
+
tpt application/vnd.trid.tpt
|
517
|
+
tr text/troff
|
518
|
+
tra application/vnd.trueapp
|
519
|
+
trm application/x-msterminal
|
520
|
+
tsv text/tab-separated-values
|
521
|
+
ttf application/octet-stream
|
522
|
+
twd application/vnd.simtech-mindmapper
|
523
|
+
txd application/vnd.genomatix.tuxedo
|
524
|
+
txf application/vnd.mobius.txf
|
525
|
+
txt text/plain
|
526
|
+
ufd application/vnd.ufdl
|
527
|
+
umj application/vnd.umajin
|
528
|
+
unityweb application/vnd.unity
|
529
|
+
uoml application/vnd.uoml+xml
|
530
|
+
uri text/uri-list
|
531
|
+
ustar application/x-ustar
|
532
|
+
utz application/vnd.uiq.theme
|
533
|
+
uu text/x-uuencode
|
534
|
+
vcd application/x-cdlink
|
535
|
+
vcf text/x-vcard
|
536
|
+
vcg application/vnd.groove-vcard
|
537
|
+
vcs text/x-vcalendar
|
538
|
+
vcx application/vnd.vcx
|
539
|
+
vis application/vnd.visionary
|
540
|
+
viv video/vnd.vivo
|
541
|
+
vrml model/vrml
|
542
|
+
vsd application/vnd.visio
|
543
|
+
vsf application/vnd.vsf
|
544
|
+
vtu model/vnd.vtu
|
545
|
+
vxml application/voicexml+xml
|
546
|
+
war application/java-archive
|
547
|
+
wav audio/x-wav
|
548
|
+
wax audio/x-ms-wax
|
549
|
+
wbmp image/vnd.wap.wbmp
|
550
|
+
wbs application/vnd.criticaltools.wbs+xml
|
551
|
+
wbxml application/vnd.wap.wbxml
|
552
|
+
webm video/webm
|
553
|
+
wm video/x-ms-wm
|
554
|
+
wma audio/x-ms-wma
|
555
|
+
wmd application/x-ms-wmd
|
556
|
+
wmf application/x-msmetafile
|
557
|
+
wml text/vnd.wap.wml
|
558
|
+
wmlc application/vnd.wap.wmlc
|
559
|
+
wmls text/vnd.wap.wmlscript
|
560
|
+
wmlsc application/vnd.wap.wmlscriptc
|
561
|
+
wmv video/x-ms-wmv
|
562
|
+
wmx video/x-ms-wmx
|
563
|
+
wmz application/x-ms-wmz
|
564
|
+
woff application/font-woff
|
565
|
+
wpd application/vnd.wordperfect
|
566
|
+
wpl application/vnd.ms-wpl
|
567
|
+
wps application/vnd.ms-works
|
568
|
+
wqd application/vnd.wqd
|
569
|
+
wri application/x-mswrite
|
570
|
+
wrl model/vrml
|
571
|
+
wsdl application/wsdl+xml
|
572
|
+
wspolicy application/wspolicy+xml
|
573
|
+
wtb application/vnd.webturbo
|
574
|
+
wvx video/x-ms-wvx
|
575
|
+
x3d application/vnd.hzn-3d-crossword
|
576
|
+
xar application/vnd.xara
|
577
|
+
xbd application/vnd.fujixerox.docuworks.binder
|
578
|
+
xbm image/x-xbitmap
|
579
|
+
xdm application/vnd.syncml.dm+xml
|
580
|
+
xdp application/vnd.adobe.xdp+xml
|
581
|
+
xdw application/vnd.fujixerox.docuworks
|
582
|
+
xenc application/xenc+xml
|
583
|
+
xer application/patch-ops-error+xml
|
584
|
+
xfdf application/vnd.adobe.xfdf
|
585
|
+
xfdl application/vnd.xfdl
|
586
|
+
xhtml application/xhtml+xml
|
587
|
+
xif image/vnd.xiff
|
588
|
+
xls application/vnd.ms-excel
|
589
|
+
xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
|
590
|
+
xml application/xml
|
591
|
+
xo application/vnd.olpc-sugar
|
592
|
+
xop application/xop+xml
|
593
|
+
xpm image/x-xpixmap
|
594
|
+
xpr application/vnd.is-xpr
|
595
|
+
xps application/vnd.ms-xpsdocument
|
596
|
+
xpw application/vnd.intercon.formnet
|
597
|
+
xsl application/xml
|
598
|
+
xslt application/xslt+xml
|
599
|
+
xsm application/vnd.syncml+xml
|
600
|
+
xspf application/xspf+xml
|
601
|
+
xul application/vnd.mozilla.xul+xml
|
602
|
+
xwd image/x-xwindowdump
|
603
|
+
xyz chemical/x-xyz
|
604
|
+
yaml text/yaml
|
605
|
+
yml text/yaml
|
606
|
+
zaz application/vnd.zzazz.deck+xml
|
607
|
+
zip application/zip
|
608
|
+
zmm application/vnd.handheld-entertainment+xml
|
609
|
+
|.map(&:freeze).each_slice(2).to_a
|
610
|
+
|
611
|
+
# MIME_TYPES is not frozen, so you can add your own
|
612
|
+
end
|
data/lib/nyara/nyara.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
# master require
|
2
|
+
require "fiber"
|
3
|
+
require "cgi"
|
4
|
+
require "openssl"
|
5
|
+
require "json"
|
6
|
+
require "base64"
|
7
|
+
require "socket"
|
8
|
+
require "tilt"
|
9
|
+
|
10
|
+
require_relative "../../ext/nyara"
|
11
|
+
require_relative "param_hash"
|
12
|
+
require_relative "header_hash"
|
13
|
+
require_relative "config_hash"
|
14
|
+
require_relative "mime_types"
|
15
|
+
require_relative "controller"
|
16
|
+
require_relative "request"
|
17
|
+
require_relative "cookie"
|
18
|
+
require_relative "session"
|
19
|
+
require_relative "config"
|
20
|
+
require_relative "route"
|
21
|
+
require_relative "route_entry"
|
22
|
+
require_relative "view"
|
23
|
+
require_relative "cpu_counter"
|
24
|
+
|
25
|
+
module Nyara
|
26
|
+
HTTP_STATUS_FIRST_LINES = Hash[HTTP_STATUS_CODES.map{|k,v|[k, "HTTP/1.1 #{k} #{v}\r\n".freeze]}].freeze
|
27
|
+
|
28
|
+
# base header response for 200
|
29
|
+
# caveat: these entries can not be deleted
|
30
|
+
OK_RESP_HEADER = HeaderHash.new
|
31
|
+
OK_RESP_HEADER['Content-Type'] = 'text/html; charset=UTF-8'
|
32
|
+
OK_RESP_HEADER['Cache-Control'] = 'no-cache'
|
33
|
+
OK_RESP_HEADER['Transfer-Encoding'] = 'chunked'
|
34
|
+
OK_RESP_HEADER['X-XSS-Protection'] = '1; mode=block'
|
35
|
+
OK_RESP_HEADER['X-Content-Type-Options'] = 'nosniff'
|
36
|
+
OK_RESP_HEADER['X-Frame-Options'] = 'SAMEORIGIN'
|
37
|
+
|
38
|
+
class << self
|
39
|
+
def config
|
40
|
+
raise ArgumentError, 'block not accepted, did you mean Nyara::Config.config?' if block_given?
|
41
|
+
Config
|
42
|
+
end
|
43
|
+
|
44
|
+
def start_server
|
45
|
+
port = Config[:port] || 3000
|
46
|
+
workers = Config[:workers] || (CpuCounter.count - 1)
|
47
|
+
|
48
|
+
puts "starting #{Config[:env]} server at 0.0.0.0:#{port}"
|
49
|
+
case Config[:env].to_s
|
50
|
+
|
51
|
+
when 'production'
|
52
|
+
server = TCPServer.new '0.0.0.0', port
|
53
|
+
server.listen 1000
|
54
|
+
trap :INT do
|
55
|
+
@workers.each do |w|
|
56
|
+
Process.kill :KILL, w
|
57
|
+
end
|
58
|
+
end
|
59
|
+
GC.start
|
60
|
+
@workers = workers.times.map do
|
61
|
+
fork {
|
62
|
+
Ext.init_queue
|
63
|
+
Ext.run_queue server.fileno
|
64
|
+
}
|
65
|
+
end
|
66
|
+
Process.waitall
|
67
|
+
|
68
|
+
when 'test'
|
69
|
+
# don't
|
70
|
+
|
71
|
+
else
|
72
|
+
t = Thread.new do
|
73
|
+
server = TCPServer.new '0.0.0.0', port
|
74
|
+
server.listen 1000
|
75
|
+
Ext.init_queue
|
76
|
+
Ext.run_queue server.fileno
|
77
|
+
end
|
78
|
+
t.join
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|