nitro 0.8.0 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. data/AUTHORS +3 -4
  2. data/ChangeLog +418 -0
  3. data/LICENSE +1 -1
  4. data/README +157 -89
  5. data/RELEASES +50 -0
  6. data/Rakefile +5 -7
  7. data/benchmark/nitro/bench.rb +5 -0
  8. data/benchmark/nitro/simple-webrick-n-200.txt +44 -0
  9. data/benchmark/nitro/static-webrick-n-200.txt +43 -0
  10. data/benchmark/nitro/tiny-lhttpd-n-200-c-5.txt +43 -0
  11. data/benchmark/nitro/tiny-webrick-n-200-c-5.txt +44 -0
  12. data/benchmark/nitro/tiny-webrick-n-200.txt +44 -0
  13. data/benchmark/nitro/tiny2-webrick-n-200.txt +44 -0
  14. data/{lib/nitro/server/cluster.rb → bin/cluster} +26 -30
  15. data/bin/proto/README +2 -2
  16. data/bin/proto/{apache.conf → conf/apache.conf} +0 -0
  17. data/bin/proto/conf/app.conf.rb +22 -0
  18. data/bin/proto/conf/lhttpd.conf +236 -0
  19. data/bin/proto/ctl +4 -0
  20. data/bin/proto/lib/README +5 -0
  21. data/bin/proto/log/README +3 -0
  22. data/bin/proto/root/fcgi.rb +6 -0
  23. data/bin/proto/root/index.xhtml +65 -7
  24. data/bin/proto/root/m/nitro.png +0 -0
  25. data/examples/blog/README +7 -5
  26. data/examples/blog/{apache.conf → conf/apache.conf} +0 -0
  27. data/examples/blog/conf/app.conf.rb +56 -0
  28. data/examples/blog/conf/lhttpd.conf +236 -0
  29. data/examples/blog/ctl +4 -0
  30. data/examples/blog/lib/blog.rb +11 -136
  31. data/examples/blog/lib/blog/controller.rb +99 -0
  32. data/examples/blog/lib/blog/model.rb +39 -0
  33. data/examples/blog/log/README +3 -0
  34. data/examples/blog/root/comments.xhtml +2 -2
  35. data/examples/blog/root/fcgi.rb +6 -0
  36. data/examples/blog/root/index.xhtml +4 -5
  37. data/examples/blog/root/login.xhtml +2 -2
  38. data/examples/blog/root/style.xsl +9 -9
  39. data/examples/blog/root/view_entry.xhtml +2 -2
  40. data/examples/flash/conf/app.conf.rb +23 -0
  41. data/examples/flash/ctl +4 -0
  42. data/examples/flash/log/README +3 -0
  43. data/examples/flash/root/index.xhtml +0 -9
  44. data/examples/flash/root/show_inline_text.xhtml +10 -5
  45. data/examples/no_xsl_blog/README +12 -0
  46. data/examples/no_xsl_blog/conf/apache.conf +0 -0
  47. data/examples/no_xsl_blog/conf/app.conf.rb +57 -0
  48. data/examples/no_xsl_blog/conf/lhttpd.conf +236 -0
  49. data/examples/no_xsl_blog/ctl +4 -0
  50. data/examples/no_xsl_blog/lib/blog.rb +20 -0
  51. data/examples/no_xsl_blog/lib/blog/controller.rb +102 -0
  52. data/examples/no_xsl_blog/lib/blog/model.rb +39 -0
  53. data/examples/no_xsl_blog/lib/blog/template.rb +134 -0
  54. data/examples/no_xsl_blog/log/README +3 -0
  55. data/examples/no_xsl_blog/root/comments.xhtml +41 -0
  56. data/examples/no_xsl_blog/root/entry_form.xhtml +22 -0
  57. data/examples/no_xsl_blog/root/fcgi.rb +6 -0
  58. data/examples/no_xsl_blog/root/index.xhtml +39 -0
  59. data/examples/no_xsl_blog/root/login.xhtml +21 -0
  60. data/examples/no_xsl_blog/root/m/bubbles.gif +0 -0
  61. data/examples/no_xsl_blog/root/m/comments_curve.gif +0 -0
  62. data/examples/no_xsl_blog/root/m/down.gif +0 -0
  63. data/examples/no_xsl_blog/root/m/footer_bg.gif +0 -0
  64. data/examples/no_xsl_blog/root/m/garrow.gif +0 -0
  65. data/examples/no_xsl_blog/root/m/gbull.gif +0 -0
  66. data/examples/no_xsl_blog/root/m/grbull.gif +0 -0
  67. data/examples/no_xsl_blog/root/m/h1_bg.gif +0 -0
  68. data/examples/no_xsl_blog/root/m/header_bg.gif +0 -0
  69. data/examples/no_xsl_blog/root/m/nitro.gif +0 -0
  70. data/examples/no_xsl_blog/root/m/obull.gif +0 -0
  71. data/examples/no_xsl_blog/root/m/page_bg.gif +0 -0
  72. data/examples/no_xsl_blog/root/m/rss.gif +0 -0
  73. data/examples/no_xsl_blog/root/m/side_title_bg.gif +0 -0
  74. data/examples/no_xsl_blog/root/m/sidebar_bg.gif +0 -0
  75. data/examples/no_xsl_blog/root/recent_posts.xhtml +14 -0
  76. data/examples/no_xsl_blog/root/style.css +301 -0
  77. data/examples/no_xsl_blog/root/view_entry.xhtml +25 -0
  78. data/examples/no_xsl_blog/root/view_entry.xml +12 -0
  79. data/examples/og/run.rb +2 -2
  80. data/examples/tiny/README +2 -2
  81. data/examples/tiny/conf/apache.conf +5 -0
  82. data/examples/tiny/conf/app.conf.rb +21 -0
  83. data/examples/tiny/conf/lhttpd.conf +236 -0
  84. data/examples/tiny/ctl +4 -0
  85. data/examples/tiny/log/README +3 -0
  86. data/examples/tiny/root/fcgi.rb +6 -0
  87. data/examples/tiny/root/index.xhtml +7 -4
  88. data/examples/tiny/root/nitro.png +0 -0
  89. data/lib/glue.rb +13 -9
  90. data/lib/glue/array.rb +1 -1
  91. data/lib/glue/cache.rb +1 -1
  92. data/lib/glue/flexob.rb +12 -0
  93. data/lib/glue/hash.rb +1 -1
  94. data/lib/glue/inflector.rb +2 -2
  95. data/lib/glue/logger.rb +4 -8
  96. data/lib/glue/misc.rb +14 -0
  97. data/lib/glue/number.rb +1 -1
  98. data/lib/glue/object.rb +26 -0
  99. data/lib/glue/pool.rb +1 -1
  100. data/lib/glue/property.rb +84 -91
  101. data/lib/glue/string.rb +1 -1
  102. data/lib/glue/time.rb +1 -1
  103. data/lib/glue/validation.rb +1 -1
  104. data/lib/nitro.rb +18 -6
  105. data/lib/nitro/adaptors/cgi.rb +291 -0
  106. data/lib/nitro/adaptors/fastcgi.rb +42 -0
  107. data/lib/nitro/adaptors/runner.rb +123 -0
  108. data/lib/nitro/adaptors/webrick.rb +110 -0
  109. data/lib/nitro/buffering.rb +43 -0
  110. data/lib/nitro/builders/form.rb +1 -1
  111. data/lib/nitro/builders/rss.rb +1 -1
  112. data/{bin → lib/nitro}/cluster.rb +26 -30
  113. data/lib/nitro/context.rb +82 -0
  114. data/lib/nitro/controller.rb +50 -0
  115. data/lib/nitro/cookie.rb +46 -0
  116. data/lib/nitro/dispatcher.rb +105 -0
  117. data/lib/nitro/filters.rb +9 -10
  118. data/lib/nitro/localization.rb +42 -0
  119. data/lib/nitro/mail.rb +11 -14
  120. data/lib/nitro/render.rb +275 -0
  121. data/lib/nitro/request.rb +128 -0
  122. data/lib/nitro/response.rb +38 -0
  123. data/lib/nitro/scaffold.rb +11 -11
  124. data/lib/nitro/session.rb +84 -0
  125. data/lib/nitro/{server/shaders.rb → shaders.rb} +56 -36
  126. data/lib/nitro/ui/pager.rb +23 -26
  127. data/lib/nitro/{sitemap.rb → ui/sitemap.rb} +4 -12
  128. data/lib/nitro/uri.rb +1 -1
  129. data/lib/nitro/version.rb +10 -8
  130. data/lib/og.rb +66 -65
  131. data/lib/og/backend.rb +1 -1
  132. data/lib/og/backends/mysql.rb +48 -52
  133. data/lib/og/backends/psql.rb +34 -37
  134. data/lib/og/connection.rb +15 -15
  135. data/lib/og/enchant.rb +16 -9
  136. data/lib/og/meta.rb +127 -54
  137. data/lib/og/mock.rb +18 -18
  138. data/lib/og/version.rb +6 -4
  139. data/lib/parts/content.rb +4 -8
  140. data/test/glue/tc_logger.rb +3 -0
  141. data/test/glue/tc_property.rb +19 -3
  142. data/test/nitro/adaptors/tc_cgi.rb +63 -0
  143. data/test/nitro/adaptors/tc_webrick.rb +15 -0
  144. data/test/nitro/builders/tc_xml.rb +2 -2
  145. data/test/nitro/tc_context.rb +13 -0
  146. data/test/nitro/tc_controller.rb +47 -0
  147. data/test/nitro/tc_dispatcher.rb +64 -0
  148. data/test/nitro/tc_session.rb +20 -0
  149. data/test/nitro/{tc_sitemap.rb → ui/tc_sitemap.rb} +1 -1
  150. data/test/root/blog/list.xhtml +6 -0
  151. data/test/tc_og.rb +41 -4
  152. metadata +115 -59
  153. data/bin/proto/app.rb +0 -20
  154. data/bin/proto/config.rb +0 -77
  155. data/examples/blog/app.rb +0 -21
  156. data/examples/blog/config.rb +0 -95
  157. data/examples/blog/env.rb +0 -22
  158. data/examples/flash/README +0 -34
  159. data/examples/flash/app.rb +0 -20
  160. data/examples/flash/config.rb +0 -38
  161. data/examples/flash/lib/flash.rb +0 -40
  162. data/examples/flash/tmp.swf +0 -0
  163. data/examples/tiny/app.rb +0 -19
  164. data/examples/tiny/config.rb +0 -29
  165. data/examples/tiny/root/nitro-small.png +0 -0
  166. data/lib/nitro/application.rb +0 -217
  167. data/lib/nitro/config.rb +0 -128
  168. data/lib/nitro/events.rb +0 -122
  169. data/lib/nitro/html.rb +0 -151
  170. data/lib/nitro/http.rb +0 -102
  171. data/lib/nitro/l10n.rb +0 -30
  172. data/lib/nitro/server.rb +0 -59
  173. data/lib/nitro/server/appserver.rb +0 -67
  174. data/lib/nitro/server/cookie.rb +0 -87
  175. data/lib/nitro/server/dispatcher.rb +0 -62
  176. data/lib/nitro/server/filters.rb +0 -75
  177. data/lib/nitro/server/filters/autologin.rb +0 -51
  178. data/lib/nitro/server/fragment.rb +0 -70
  179. data/lib/nitro/server/handlers.rb +0 -127
  180. data/lib/nitro/server/render.rb +0 -426
  181. data/lib/nitro/server/request.rb +0 -658
  182. data/lib/nitro/server/requestpart.rb +0 -54
  183. data/lib/nitro/server/script.rb +0 -387
  184. data/lib/nitro/server/server.rb +0 -57
  185. data/lib/nitro/server/session.rb +0 -220
  186. data/lib/nitro/server/user.rb +0 -46
  187. data/lib/nitro/server/webrick.rb +0 -180
  188. data/lib/nitro/service.rb +0 -26
  189. data/lib/xsl/ui.xsl +0 -51
  190. data/lib/xsl/xforms.xsl +0 -28
  191. data/test/nitro/server/tc_cookie.rb +0 -34
  192. data/test/nitro/server/tc_filters.rb +0 -38
  193. data/test/nitro/server/tc_request.rb +0 -70
  194. data/test/nitro/server/tc_requestpart.rb +0 -28
  195. data/test/nitro/server/tc_session.rb +0 -34
  196. data/test/nitro/tc_events.rb +0 -44
  197. data/test/nitro/tc_html.rb +0 -79
  198. data/test/nitro/tc_http.rb +0 -18
@@ -1,128 +0,0 @@
1
- # = Configuration
2
- #
3
- # Configuration parameters.
4
- #
5
- # code:
6
- # * George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2004 Navel, all rights reserved.
9
- # $Id: config.rb 167 2004-11-23 14:03:10Z gmosx $
10
-
11
- require 'glue/logger'
12
- require 'glue/hash'
13
- require 'nitro/version'
14
- require 'nitro/service'
15
- require 'nitro/server/shaders'
16
-
17
- # monitor scripts for changes
18
- #--
19
- # gmosx, FIXME: replace this with reload_scripts ??
20
- #++
21
- $srv_monitor_scripts = true
22
-
23
- # The root (public) directory.
24
- $root_dir = "root"
25
-
26
- # the default file to view in a direcotry
27
- $index_filename = "index.sx"
28
-
29
- # seconds till the autologin cookie expires
30
- # TODO: move to filter.
31
- $srv_autologin_expires = 60*60*24*30
32
-
33
- # session timeout (in seconds)
34
- $srv_session_timeout = 35*60
35
-
36
- # session timeout for anonymous user (in seconds)
37
- $srv_anon_session_timeout = 30*60
38
-
39
- # enable distributed state?
40
- $drb_state = false
41
-
42
- # use the default error page.
43
- $error_page_url = nil
44
-
45
- # default encoding for the app.
46
- $encoding = 'iso-8859-1'
47
-
48
- # Default template extesnion.
49
- $template_ext = 'xhtml'
50
-
51
- # Default xml template extension.
52
- $xml_template_ext = 'xml'
53
-
54
- # Default template.
55
- $index_template = 'index.xhtml'
56
-
57
- # default content type.
58
- $default_content_type = 'text/html'
59
-
60
- # The services map.
61
- # :index represents the '/' mount point
62
- $services = { :index => N::Service }
63
-
64
- # The service method map.
65
- $methods = N::SafeHash.new
66
-
67
- # The shader. The default shader is very simple, here
68
- # is a typical example of a production shader pipeline:
69
- #
70
- # <tt>
71
- # $shader = N::XSLTShader.new("#$root_dir/style.xsl",
72
- # N::RubyShader.new(
73
- # N::CompressShader.new
74
- # )
75
- # )
76
- # </tt>
77
- $shader = N::RubyShader.new
78
-
79
- if $DBG
80
-
81
- puts "\nRunning DEBUG configuration.\n\n"
82
-
83
- # Logger (redirect to STDERR)
84
-
85
- Logger.set(Logger.new(STDERR))
86
- Logger.get.level = Logger::DEBUG
87
-
88
- # If set to true disables xsl caching. Usefull when debugging xsls.
89
-
90
- $reload_xsl = true
91
-
92
- # If set to true disables script compilation. Usefull when debugging
93
- # statically included scripts.
94
-
95
- $reload_scripts = true
96
-
97
- # Standard server setup for debugging.
98
-
99
- $srv_address = $appsrv_address = "127.0.0.1"
100
- $srv_port = 8080
101
- $appsrv_port = 8080
102
- $srv_url = "http://#$srv_address:#$srv_port"
103
-
104
- else
105
-
106
- puts "\nRunning LIVE configuration.\n\n"
107
-
108
- Logger.set(Logger.new("log/app.log", 10))
109
- Logger.get.level = Logger::INFO
110
-
111
- # If set to true disables xsl caching. Usefull when debugging xsls.
112
-
113
- $reload_xsl = false
114
-
115
- # If set to true disables script compilation. Usefull when debugging
116
- # statically included scripts.
117
-
118
- $reload_scripts = false
119
-
120
- # Standard server setup for live server. You probably
121
- # want to override this.
122
-
123
- $srv_address = $appsrv_address = "127.0.0.1"
124
- $srv_port = 8080
125
- $appsrv_port = 9090
126
- $srv_url = "http://#$srv_address:#$srv_port"
127
-
128
- end
@@ -1,122 +0,0 @@
1
- # = Events
2
- #
3
- # A simple events mechanism.
4
- #
5
- # code:
6
- # George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2002-2003 Navel, all rights reserved.
9
- # $Id: events.rb 98 2004-10-22 07:36:20Z gmosx $
10
-
11
- module N;
12
-
13
- # = EventManager
14
- #
15
- # A simple events mechanism.
16
- #
17
- # === Design:
18
- #
19
- # As always we try to keep the design simple:
20
- # Events = strings (hiearchical notation)
21
- # Handlers = named Procs
22
- # The handlers are named so that we can remove them
23
- # by name. Also usefull for documentation purposes.
24
- #
25
- # === TODO:
26
- #
27
- # Add a class of events to allow filtering of certain
28
- # events. Perhaps name can be used for this!
29
- #
30
- # === Example:
31
- #
32
- # $ev.event("id/user/login", user)
33
- # $ev.add_handler("id/user/login", "login-score", proc { |user|
34
- # user["score"] += 1
35
- # })
36
- #
37
- class EventManager
38
- attr :events
39
- attr_accessor :logger
40
-
41
- def initialize(logger = nil)
42
- @events = Hash.new
43
- @logger = logger
44
- end
45
-
46
- # Register an event handler.
47
- #
48
- # === Input:
49
- # event = the event
50
- # name = the name of the handler
51
- # proc = the proc of the hadler
52
- #
53
- def add_handler(event, name, proc)
54
- unless event_handlers = @events[event]
55
- @events[event] = event_handlers = Hash.new
56
- end
57
- event_handlers[name] = proc
58
- end
59
-
60
- # Remove the named handler from the event.
61
- #
62
- def remove_handler(event, name)
63
- if event_handlers = @events[event]
64
- event_handlers.delete(name)
65
- else
66
- Logger.debug "ev: cannot remove, handler #{name} not found for event #{event}" if $DBG
67
- end
68
- end
69
-
70
- # Remove all handlers for the event.
71
- #
72
- # === Input:
73
- # event = the event
74
- # name = the name of the handler
75
- #
76
- def remove_all_handlers(event)
77
- @events[event] = Hash.new
78
- end
79
-
80
- # Fire an event
81
- #
82
- # === Input:
83
- # event = the event to fire
84
- # param = parameters for the handler, use an array
85
- # for multiple parameters.
86
- #
87
- def event(event, params)
88
- if event_handlers = @events[event]
89
- # call all event handler procs
90
- for handler in event_handlers.values
91
- # call the handler with the params.
92
- handler.call(params)
93
- end
94
- end
95
- if @logger
96
- if params.is_a?(Array)
97
- pstr = params.collect{|i| i.to_s()}.join(", ")
98
- else
99
- pstr = params.to_s()
100
- end
101
- @logger.info("#{event}: #{pstr}")
102
- end
103
- end
104
- alias_method :fire, :event
105
- end
106
-
107
- # = Event
108
- #
109
- # Encapsulates an Event
110
- #
111
- class Event
112
- @@manager = EventManager.new()
113
-
114
- def self.add_handler(event, name, proc)
115
- end
116
-
117
- def self.fire(event, params)
118
- @@manager.fire(event, params)
119
- end
120
- end
121
-
122
- end # module
@@ -1,151 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- # * Anastasios Koutoumanos <ak@navel.gr>
4
- # * Elias Karakoulakis <ekarak@ktismata.com>
5
- #
6
- # (c) 2004 Navel, all rights reserved.
7
- # $Id: html.rb 167 2004-11-23 14:03:10Z gmosx $
8
-
9
- require "uri"
10
- require "cgi"
11
-
12
- module N;
13
-
14
- # = HtmlUtils
15
- #
16
- # HTML utilities collection.
17
- #
18
- # === Design:
19
- #
20
- # Implement as a module to avoid class polution. You can still Ruby's
21
- # advanced features to include the module in your class.
22
- # Passing the object to act upon allows to check for nil, which isn't
23
- # possible if you use self.
24
- #
25
- # The older text_sum, text_block methods are not needed in the latest
26
- # code
27
- #
28
- # === TODO:
29
- #
30
- # - add xxx! versions
31
- #
32
- module HtmlUtils
33
-
34
- # escape html tags.
35
- # usefull to make text entered by end users html safe.
36
- #
37
- # Input:
38
- # the string to be escaped
39
- #
40
- # Output:
41
- # the escaped string
42
- #
43
- def self.escape(string)
44
- # gmosx: no need to return "" on nil, will be interpolated to ""
45
- return nil unless string
46
- return CGI::escapeHTML(string)
47
- end
48
-
49
- # TODO: move to markup!
50
- #
51
- # Expands the urls found in the given string. Use the target parameter
52
- # to apply presentation semantics (ie open in new window)
53
- #
54
- # Example:
55
- # text = "visit this site: www.navel.gr"
56
- # text = Web::Utils::Html::expand_urls(text)
57
- # p text # =>
58
- # "visit this site: <a href='http://www.navel.gr'>http://www.navel.gr</a>"
59
- #
60
- def self.expand_urls(string, target = nil)
61
- return nil unless string
62
-
63
- xstring = string.gsub(/\s(www\.[^\s]*)/, " http://\\1")
64
- xstring.gsub!(/\s(ftp\.[^\s]*)/, " ftp://\\1")
65
-
66
- xstring.gsub!(URI::REGEXP::ABS_URI_REF) { |uriref|
67
- if /(http|ftp):/.match(uriref)
68
- "<a" + (target.nil?? "" : " target='#{target}'") +
69
- " href='#{uriref}'>#{uriref}</a>"
70
- else
71
- uriref
72
- end
73
- }
74
-
75
- return xstring
76
- end
77
-
78
- # Strips potentially dangerous html tags, leaving only safe
79
- # tags. Usefull for simple Html formatting.
80
- #
81
- # === Design:
82
- #
83
- # Escapes ALL quotes for security, use html without quotes:
84
- #
85
- # <font size=+1>kok</font>
86
- # <a href=http://www.navel.gr
87
- # ...
88
- #
89
- # Should handle the following case:
90
- #
91
- # <tr><td><a href='koko</td></tr>...
92
- # passes with obvious results :(
93
- # even the following fucks up browsers:
94
- # <tr><td><p href='koko</td></tr>
95
- #
96
- # We HAVE TO CHECK VALID XHTML/XML before using this method.
97
- #
98
- # <img> is NOT a safe tag, because it can fuckup the
99
- # layout, so it is not included in the default safe tags
100
- #
101
- # on open
102
- #
103
- # === Input:
104
- # the string to be filtered
105
- # extra exclude_tags
106
- # extra include_tags
107
- #
108
- # === Output:
109
- # the filtered string, only contains safe html tags
110
-
111
- OPEN_TAGS = /<([^<>]*)(?=<)/
112
- VALID_TAGS = /<([^<>]*)>(?=<)/
113
- OPEN_QUOTES = /['"]([^'"]*)(?!['"])/
114
-
115
- def self.only_safe_tags(string, exclude_tags = nil, include_tags = nil)
116
- return nil unless string
117
-
118
- # default safe tags
119
- # FIXME: move the array outside of the method to avoid
120
- # excessive array creation
121
-
122
- safe_tags = ["A", "B", "I", "U", "BR", "STRONG", "LI"]
123
-
124
- # customize if necessary
125
- safe_tags += exclude_tags if exclude_tags
126
- safe_tags -= include_tags if include_tags
127
-
128
- # try to fix up invalid XHTML tags: close brackets, and
129
- # escape quotes of open tags.
130
- # SOS: keep the order of the escapes!
131
-
132
- escaped = string.gsub(OPEN_TAGS, '<\1>')
133
- escaped = CGI::escapeHTML(escaped)
134
- escaped = CGI::unescapeElement(escaped, safe_tags)
135
- escaped.gsub!(/"/, '&quot;')
136
- escaped.gsub!(/'/, '&#39;')
137
-
138
- return escaped
139
- end
140
-
141
- # convert plain newlines into line breaks <br/>
142
-
143
- def self.convert_newlines(string)
144
- return nil unless N::StringUtils.valid?(string)
145
- xstring = string.gsub(/\n/, "<br/>")
146
- return xstring;
147
- end
148
-
149
- end
150
-
151
- end # module
@@ -1,102 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- # * Elias Karakoulakis <ekarak@ktismata.com>
4
- #
5
- # (c) 2004 Navel, all rights reserved.
6
- # $Id: http.rb 164 2004-11-18 11:47:50Z gmosx $
7
-
8
- require "uri"
9
- require "cgi"
10
- require "net/http"
11
-
12
- module N
13
-
14
- # = HTTP
15
- #
16
- # HTTP protocol constants.
17
- #
18
- module HTTP
19
- # HTTP protocol EOL constants
20
-
21
- CR = "\x0d"
22
- LF = "\x0a"
23
- CRLF = "\x0d\x0a"
24
- EOL = CRLF
25
-
26
- # Http protocol status codes maps.
27
-
28
- # constants for readable code
29
-
30
- STATUS_OK = 200
31
- STATUS_PARTIAL_CONTENT = 206
32
- STATUS_MOVED = 301
33
- STATUS_REDIRECT = 302
34
- STATUS_SEE_OTHER = 303 # gmosx: VERIFY THIS
35
- STATUS_SEE_OTHER_307 = 307 # gmosx: VERIFY THIS
36
- STATUS_NOT_MODIFIED = 304
37
- STATUS_BAD_REQUEST = 400
38
- STATUS_AUTH_REQUIRED = 401
39
- STATUS_FORBIDDEN = 403
40
- STATUS_NOT_FOUND = 404
41
- STATUS_METHOD_NOT_ALLOWED = 405
42
- STATUS_NOT_ACCEPTABLE = 406
43
- STATUS_LENGTH_REQUIRED = 411
44
- STATUS_PRECONDITION_FAILED = 412
45
- STATUS_SERVER_ERROR = 500
46
- STATUS_NOT_IMPLEMENTED = 501
47
- STATUS_BAD_GATEWAY = 502
48
- STATUS_VARIANT_ALSO_VARIES = 506
49
-
50
- # hash to allow id to description maping.
51
-
52
- STATUS_STRINGS = {
53
- 200 => "OK",
54
- 206 => "Partial Content",
55
- 300 => "Multiple Choices",
56
- 301 => "Moved Permanently",
57
- 302 => "Found",
58
- 303 => "See other", # gmosx: VERIFY THIS
59
- 304 => "Not Modified",
60
- 307 => "See other 07", # gmosx: VERIFY THIS
61
- 400 => "Bad Request",
62
- 401 => "Authorization Required",
63
- 403 => "Forbidden",
64
- 404 => "Not Found",
65
- 405 => "Method Not Allowed",
66
- 406 => "Not Acceptable",
67
- 411 => "Length Required",
68
- 412 => "Rrecondition Failed",
69
- 500 => "Internal Server Error",
70
- 501 => "Method Not Implemented",
71
- 502 => "Bad Gateway",
72
- 506 => "Variant Also Negotiates"
73
- }
74
- end
75
-
76
- # = HttpUtils
77
- #
78
- # HTTP utilities collection
79
- #
80
- module HttpUtils
81
-
82
- # Converts the given time object to an http time string.
83
- # Example:
84
- # Sat, 01 Jan 2000 00:00:00 GMT
85
- #
86
- def self.time_to_string(time)
87
- return CGI::rfc1123_date(time)
88
- end
89
-
90
- # NOT IMPLEMENTED
91
- #
92
- # Converts an http time string to a time object.
93
- # Example:
94
- # Sat, 01 Jan 2000 00:00:00 GMT
95
- #
96
- def self.string_to_time(string)
97
- raise "Not implemented"
98
- end
99
-
100
- end
101
-
102
- end # module