nyara 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/example/design.rb +62 -0
  3. data/example/fib.rb +15 -0
  4. data/example/hello.rb +5 -0
  5. data/example/stream.rb +10 -0
  6. data/ext/accept.c +133 -0
  7. data/ext/event.c +89 -0
  8. data/ext/extconf.rb +34 -0
  9. data/ext/hashes.c +130 -0
  10. data/ext/http-parser/AUTHORS +41 -0
  11. data/ext/http-parser/CONTRIBUTIONS +4 -0
  12. data/ext/http-parser/LICENSE-MIT +23 -0
  13. data/ext/http-parser/contrib/parsertrace.c +156 -0
  14. data/ext/http-parser/contrib/url_parser.c +44 -0
  15. data/ext/http-parser/http_parser.c +2175 -0
  16. data/ext/http-parser/http_parser.h +304 -0
  17. data/ext/http-parser/test.c +3425 -0
  18. data/ext/http_parser.c +1 -0
  19. data/ext/inc/epoll.h +60 -0
  20. data/ext/inc/kqueue.h +77 -0
  21. data/ext/inc/status_codes.inc +64 -0
  22. data/ext/inc/str_intern.h +66 -0
  23. data/ext/inc/version.inc +1 -0
  24. data/ext/mime.c +107 -0
  25. data/ext/multipart-parser-c/README.md +18 -0
  26. data/ext/multipart-parser-c/multipart_parser.c +309 -0
  27. data/ext/multipart-parser-c/multipart_parser.h +48 -0
  28. data/ext/multipart_parser.c +1 -0
  29. data/ext/nyara.c +56 -0
  30. data/ext/nyara.h +59 -0
  31. data/ext/request.c +474 -0
  32. data/ext/route.cc +325 -0
  33. data/ext/url_encoded.c +304 -0
  34. data/hello.rb +5 -0
  35. data/lib/nyara/config.rb +64 -0
  36. data/lib/nyara/config_hash.rb +51 -0
  37. data/lib/nyara/controller.rb +336 -0
  38. data/lib/nyara/cookie.rb +31 -0
  39. data/lib/nyara/cpu_counter.rb +65 -0
  40. data/lib/nyara/header_hash.rb +18 -0
  41. data/lib/nyara/mime_types.rb +612 -0
  42. data/lib/nyara/nyara.rb +82 -0
  43. data/lib/nyara/param_hash.rb +5 -0
  44. data/lib/nyara/request.rb +144 -0
  45. data/lib/nyara/route.rb +138 -0
  46. data/lib/nyara/route_entry.rb +43 -0
  47. data/lib/nyara/session.rb +104 -0
  48. data/lib/nyara/view.rb +317 -0
  49. data/lib/nyara.rb +25 -0
  50. data/nyara.gemspec +20 -0
  51. data/rakefile +91 -0
  52. data/readme.md +35 -0
  53. data/spec/ext_mime_match_spec.rb +27 -0
  54. data/spec/ext_parse_accept_value_spec.rb +29 -0
  55. data/spec/ext_parse_spec.rb +138 -0
  56. data/spec/ext_route_spec.rb +70 -0
  57. data/spec/hashes_spec.rb +71 -0
  58. data/spec/path_helper_spec.rb +77 -0
  59. data/spec/request_delegate_spec.rb +67 -0
  60. data/spec/request_spec.rb +56 -0
  61. data/spec/route_entry_spec.rb +12 -0
  62. data/spec/route_spec.rb +84 -0
  63. data/spec/session_spec.rb +66 -0
  64. data/spec/spec_helper.rb +52 -0
  65. data/spec/view_spec.rb +87 -0
  66. data/tools/bench-cookie.rb +22 -0
  67. 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
@@ -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
@@ -0,0 +1,5 @@
1
+ module Nyara
2
+ class ParamHash
3
+ alias has_key? key?
4
+ end
5
+ end