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.
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