diff --git a/library/server/ewsgi/ewsgi-safe.ecf b/library/server/ewsgi/ewsgi-safe.ecf
index ec9e40bf..410aff17 100644
--- a/library/server/ewsgi/ewsgi-safe.ecf
+++ b/library/server/ewsgi/ewsgi-safe.ecf
@@ -18,5 +18,7 @@
+
+
diff --git a/library/server/ewsgi/ewsgi.ecf b/library/server/ewsgi/ewsgi.ecf
index 964539f5..bd4fee59 100644
--- a/library/server/ewsgi/ewsgi.ecf
+++ b/library/server/ewsgi/ewsgi.ecf
@@ -18,5 +18,7 @@
+
+
diff --git a/library/server/ewsgi/specification/service/wgi_service.e b/library/server/ewsgi/specification/service/wgi_service.e
index cfd30540..910bbc42 100644
--- a/library/server/ewsgi/specification/service/wgi_service.e
+++ b/library/server/ewsgi/specification/service/wgi_service.e
@@ -1,5 +1,8 @@
note
- description: "Summary description for {WGI_SERVICE}."
+ description: "[
+ WGI_SERVICE
+ ]"
+ specification: "EWSGI specification https://github.com/Eiffel-World/Eiffel-Web-Framework/wiki/EWSGI-specification"
legal: "See notice at end of class."
status: "See notice at end of class."
date: "$Date$"
@@ -8,23 +11,22 @@ note
deferred class
WGI_SERVICE
-feature {NONE} -- Execution
+feature {WGI_CONNECTOR} -- Execution
execute (req: WGI_REQUEST; res: WGI_RESPONSE)
-- Execute the request
-- See `req.input' for input stream
- -- `req.environment' for the Gateway environment
- -- and `res' for the output buffer
+ -- `req.meta_variables' for the CGI meta variable
+ -- and `res' for output buffer
require
res_status_unset: not res.status_is_set
deferred
ensure
res_status_set: res.status_is_set
- res_committed: res.message_committed
end
note
- copyright: "2011-2011, Eiffel Software and others"
+ copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
@@ -33,4 +35,5 @@ note
Website http://www.eiffel.com
Customer support http://support.eiffel.com
]"
+
end
diff --git a/library/server/ewsgi/specification/stream/wgi_chunked_input_stream.e b/library/server/ewsgi/specification/stream/wgi_chunked_input_stream.e
index 84c129cd..42db419f 100644
--- a/library/server/ewsgi/specification/stream/wgi_chunked_input_stream.e
+++ b/library/server/ewsgi/specification/stream/wgi_chunked_input_stream.e
@@ -4,12 +4,212 @@ note
date: "$Date$"
revision: "$Revision$"
-deferred
class
WGI_CHUNKED_INPUT_STREAM
-note
- copyright: "2011-2012, Eiffel Software and others"
+create
+ make
+
+feature {NONE} -- Implementation
+
+ make (an_input: like input)
+ do
+ create tmp_hex_chunk_size.make_empty
+ input := an_input
+ end
+
+feature -- Input
+
+ data: STRING_8
+ local
+ d: like internal_data
+ do
+ d := internal_data
+ if d = Void then
+ d := fetched_data
+ internal_data := d
+ end
+ Result := d
+ end
+
+feature {NONE} -- Parser
+
+ internal_data: detachable STRING_8
+
+ tmp_hex_chunk_size: STRING_8
+ last_chunk_size: INTEGER
+ last_chunk: detachable STRING_8
+
+ fetched_data: STRING_8
+ -- Read all the data in a chunked stream.
+ -- Make the result available in `last_chunked'.
+ -- Chunked-Body = *chunk
+ -- last-chunk
+ -- trailer
+ -- CRLF
+ -- chunk = chunk-size [ chunk-extension ] CRLF
+ -- chunk-data CRLF
+ -- chunk-size = 1*HEX
+ -- last-chunk = 1*("0") [ chunk-extension ] CRLF
+ -- chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
+ -- chunk-ext-name = token
+ -- chunk-ext-val = token | quoted-string
+ -- chunk-data = chunk-size(OCTET)
+ -- trailer = *(entity-header CRLF)
+ local
+ eoc: BOOLEAN
+ s: STRING_8
+ do
+ from
+ create s.make (1024)
+ until
+ eoc
+ loop
+ read_chunk
+ if attached last_chunk as l_last_chunk then
+ s.append (l_last_chunk)
+ else
+ eoc := True
+ end
+ if last_chunk_size = 0 then
+ eoc := True
+ end
+ end
+
+ read_trailer
+
+ Result := s
+ end
+
+ reset_chunk
+ do
+ last_chunk := Void
+ last_chunk_size := 0
+ end
+
+ read_chunk
+ do
+ reset_chunk
+ read_chunk_size
+ if last_chunk_size > 0 then
+ read_chunk_data
+ end
+ end
+
+ read_chunk_data
+ require
+ last_chunk_size > 0
+ local
+ l_input: like input
+ do
+ l_input := input
+ l_input.read_string (last_chunk_size)
+ last_chunk := l_input.last_string
+
+ -- read CRLF
+ l_input.read_character
+ if l_input.last_character = '%R' then
+ l_input.read_character
+ end
+ ensure
+ last_chunk_attached: attached last_chunk as el_last_chunk
+ last_chunk_size_ok: el_last_chunk.count = last_chunk_size
+ end
+
+ read_chunk_size
+ require
+ tmp_hex_chunk_size_is_empty: tmp_hex_chunk_size.is_empty
+ local
+ eol : BOOLEAN
+ c: CHARACTER
+ hex : HEXADECIMAL_STRING_TO_INTEGER_CONVERTER
+ l_input: like input
+ do
+ l_input := input
+ from
+ l_input.read_character
+ until
+ eol
+ loop
+ c := l_input.last_character
+ inspect c
+ when '%R' then
+ -- We are in the end of the line, we need to read the next character to start the next line.
+ eol := True
+ l_input.read_character
+ when ';' then
+ -- We are in an extension chunk data
+ read_extension_chunk
+ else
+ tmp_hex_chunk_size.append_character (c)
+ l_input.read_character
+ end
+ end
+ if tmp_hex_chunk_size.same_string ("0") then
+ last_chunk_size := 0
+ else
+ create hex.make
+ hex.parse_string_with_type (tmp_hex_chunk_size, hex.type_integer)
+ if hex.parse_successful then
+ last_chunk_size := hex.parsed_integer
+ else
+ last_chunk_size := 0 -- ERROR ...
+ end
+ end
+ tmp_hex_chunk_size.wipe_out
+ end
+
+ read_extension_chunk
+ local
+ l_input: like input
+ do
+ l_input := input
+ debug
+ print (" Reading extension chunk ")
+ end
+ from
+ l_input.read_character
+ until
+ l_input.last_character = '%R'
+ loop
+ debug
+ print (l_input.last_character)
+ end
+ l_input.read_character
+ end
+ end
+
+ read_trailer
+ local
+ l_input: like input
+ do
+ l_input := input
+ if not l_input.end_of_input then
+ debug
+ print (" Reading trailer ")
+ end
+ from
+ l_input.read_character
+ until
+ l_input.last_character = '%R'
+ loop
+ debug
+ print (l_input.last_character)
+ end
+ l_input.read_character
+ end
+ -- read the LF
+ l_input.read_character
+ end
+ end
+
+feature {NONE} -- Implementation
+
+ input: WGI_INPUT_STREAM
+ -- Input Stream
+
+;note
+ copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
diff --git a/library/server/ewsgi/specification/stream/wgi_input_stream.e b/library/server/ewsgi/specification/stream/wgi_input_stream.e
index 940c2367..ab224ca6 100644
--- a/library/server/ewsgi/specification/stream/wgi_input_stream.e
+++ b/library/server/ewsgi/specification/stream/wgi_input_stream.e
@@ -2,6 +2,7 @@ note
description : "[
Objects that represents the input stream
]"
+ specification: "EWSGI/connector specification https://github.com/Eiffel-World/Eiffel-Web-Framework/wiki/EWSGI-specification"
legal: "See notice at end of class."
status: "See notice at end of class."
date: "$Date$"
@@ -10,25 +11,154 @@ note
deferred class
WGI_INPUT_STREAM
+feature -- Input
+
+ read_character
+ -- Read the next character in input stream.
+ -- Make the result available in `last_character'
+ require
+ is_open_read: is_open_read
+ not_end_of_input: not end_of_input
+ deferred
+ end
+
+ read_string (nb: INTEGER)
+ -- Read the next `nb' characters and
+ -- make the string result available in `last_string'
+ require
+ is_open_read: is_open_read
+ not_end_of_input: not end_of_input
+ nb_large_enough: nb > 0
+ deferred
+ ensure
+ last_string_count_small_enough: not end_of_input implies last_string.count <= nb
+ character_read: not end_of_input implies last_string.count > 0
+ end
+
+ read_to_string (a_string: STRING; pos, nb: INTEGER): INTEGER
+ -- Fill `a_string', starting at position `pos', with
+ -- at most `nb' characters read from input stream.
+ -- Return the number of characters actually read.
+ -- (Note that even if at least `nb' characters are available
+ -- in the input stream, there is no guarantee that they
+ -- will all be read.)
+ require
+ is_open_read: is_open_read
+ not_end_of_input: not end_of_input
+ a_string_not_void: a_string /= Void
+ valid_position: a_string.valid_index (pos)
+ nb_large_enough: nb > 0
+ nb_small_enough: nb <= a_string.count - pos + 1
+ local
+ i, end_pos: INTEGER
+ do
+ end_pos := pos + nb - 1
+ from
+ i := pos
+ until
+ i > end_pos
+ loop
+ read_character
+ if not end_of_input then
+ a_string.put (last_character, i)
+ i := i + 1
+ else
+ Result := i - pos - nb
+ -- Jump out of the loop.
+ i := end_pos + 1
+ end
+ end
+ Result := Result + i - pos
+ ensure
+ nb_char_read_large_enough: Result >= 0
+ nb_char_read_small_enough: Result <= nb
+ character_read: not end_of_input implies Result > 0
+ end
+
+ append_to_string (a_string: STRING; nb: INTEGER)
+ -- Append at most `nb' characters read from input stream
+ -- to `a_string'
+ -- Set `last_appended_count' to the number of characters actually read.
+ -- (Note that even if at least `nb' characters are available
+ -- in the input stream, there is no guarantee that they
+ -- will all be read.)
+ require
+ is_open_read: is_open_read
+ not_end_of_input: not end_of_input
+ a_string_not_void: a_string /= Void
+ nb_large_enough: nb > 0
+ local
+ i, end_pos: INTEGER
+ l_count: INTEGER
+ do
+ from
+ i := a_string.count + 1
+ end_pos := i + nb - 1
+ a_string.grow (end_pos)
+ until
+ i > end_pos
+ loop
+ read_character
+ if not end_of_input then
+ a_string.extend (last_character)
+ i := i + 1
+ else
+ l_count := i - nb
+ -- Jump out of the loop.
+ i := end_pos + 1
+ end
+ end
+ last_appended_count := l_count + i
+ ensure
+ nb_char_read_large_enough: last_appended_count >= 0
+ nb_char_read_small_enough: last_appended_count <= nb
+ character_read: not end_of_input implies last_appended_count > 0
+ end
+
feature -- Access
last_string: STRING_8
- -- Last read string from stream
+ -- Last string read.
+ --
+ -- Note: this query *might* return the same object.
+ -- Therefore a clone should be used if the result
+ -- is to be kept beyond the next call to this feature.
+ -- However `last_string' is not shared between file objects.)
+ require
+ is_open_read: is_open_read
+ not_end_of_input: not end_of_input
+ deferred
+ ensure
+ last_string_not_void: Result /= Void
+ end
+
+ last_character: CHARACTER_8
+ -- Last item read.
+ require
+ is_open_read: is_open_read
+ not_end_of_input: not end_of_input
deferred
end
-feature -- Basic operation
+ last_appended_count: INTEGER
+ -- Count of characters actually read by last `append_to_string' call.
- read_stream (n: INTEGER)
- require
- n_positive: n > 0
+feature -- Status report
+
+ is_open_read: BOOLEAN
+ -- Can items be read from input stream?
+ deferred
+ end
+
+ end_of_input: BOOLEAN
+ -- Has the end of input stream been reached?
+ require
+ is_open_read: is_open_read
deferred
- ensure
- at_max_n: last_string.count <= n
end
note
- copyright: "2011-2011, Eiffel Software and others"
+ copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
diff --git a/library/server/ewsgi/specification/stream/wgi_output_stream.e b/library/server/ewsgi/specification/stream/wgi_output_stream.e
index 4e7e85fc..9289378e 100644
--- a/library/server/ewsgi/specification/stream/wgi_output_stream.e
+++ b/library/server/ewsgi/specification/stream/wgi_output_stream.e
@@ -2,6 +2,7 @@ note
description : "[
Objects that represents the output stream
]"
+ specification: "EWSGI/connector specification https://github.com/Eiffel-World/Eiffel-Web-Framework/wiki/EWSGI-specification"
legal: "See notice at end of class."
status: "See notice at end of class."
date: "$Date$"
@@ -10,18 +11,54 @@ note
deferred class
WGI_OUTPUT_STREAM
-feature -- Core operation
+feature -- Output
- put_string (s: STRING_8)
- -- Write `s' into the output stream
+ put_string (a_string: READABLE_STRING_8)
+ -- Write `a_string' to output stream.
require
- s_not_empty: s /= Void and then not s.is_empty
+ is_open_write: is_open_write
+ a_string_not_void: a_string /= Void
deferred
end
- flush
- -- Flush the output stream
+ put_substring (a_string: READABLE_STRING_8; s, e: INTEGER)
+ -- Write substring of `a_string' between indexes
+ -- `s' and `e' to output stream.
+ --| Could be redefined for optimization
+ require
+ is_open_write: is_open_write
+ a_string_not_void: a_string /= Void
+ s_large_enough: s >= 1
+ e_small_enough: e <= a_string.count
+ valid_interval: s <= e + 1
do
+ if s <= e then
+ put_string (a_string.substring (s, e))
+ end
+ end
+
+ put_character_8 (c: CHARACTER_8)
+ -- Write `c' to output stream.
+ --| Could be redefined for optimization
+ require
+ is_open_write: is_open_write
+ do
+ put_string (c.out)
+ end
+
+feature -- Specific output
+
+ put_header_line (s: READABLE_STRING_8)
+ -- Send `s' to http client as header line
+ do
+ put_string (s)
+ put_crlf
+ end
+
+ put_crlf
+ -- Send "%R%N" string
+ do
+ put_string (crlf)
end
feature -- Status writing
@@ -33,25 +70,28 @@ feature -- Status writing
deferred
end
-feature -- Basic operation
+feature -- Status report
- put_substring (s: STRING; start_index, end_index: INTEGER)
- -- Write `s[start_index:end_index]' into the output stream
+ is_open_write: BOOLEAN
+ -- Can items be written to output stream?
+ deferred
+ end
+
+feature -- Basic operations
+
+ flush
+ -- Flush buffered data to disk.
require
- s_not_empty: s /= Void and then not s.is_empty
- do
- put_string (s.substring (start_index, end_index))
+ is_open_write: is_open_write
+ deferred
end
- put_header_line (s: STRING)
- -- Send `s' to http client as header line
- do
- put_string (s)
- put_string ("%R%N")
- end
+feature -- Constant
+
+ crlf: STRING = "%R%N"
note
- copyright: "2011-2011, Eiffel Software and others"
+ copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
source: "[
Eiffel Software
diff --git a/library/server/ewsgi/src/wgi_chunked_input_stream.e b/library/server/ewsgi/src/wgi_chunked_input_stream.e
deleted file mode 100644
index 42db419f..00000000
--- a/library/server/ewsgi/src/wgi_chunked_input_stream.e
+++ /dev/null
@@ -1,221 +0,0 @@
-note
- description: "Summary description for {WGI_CHUNKED_INPUT_STREAM}."
- author: ""
- date: "$Date$"
- revision: "$Revision$"
-
-class
- WGI_CHUNKED_INPUT_STREAM
-
-create
- make
-
-feature {NONE} -- Implementation
-
- make (an_input: like input)
- do
- create tmp_hex_chunk_size.make_empty
- input := an_input
- end
-
-feature -- Input
-
- data: STRING_8
- local
- d: like internal_data
- do
- d := internal_data
- if d = Void then
- d := fetched_data
- internal_data := d
- end
- Result := d
- end
-
-feature {NONE} -- Parser
-
- internal_data: detachable STRING_8
-
- tmp_hex_chunk_size: STRING_8
- last_chunk_size: INTEGER
- last_chunk: detachable STRING_8
-
- fetched_data: STRING_8
- -- Read all the data in a chunked stream.
- -- Make the result available in `last_chunked'.
- -- Chunked-Body = *chunk
- -- last-chunk
- -- trailer
- -- CRLF
- -- chunk = chunk-size [ chunk-extension ] CRLF
- -- chunk-data CRLF
- -- chunk-size = 1*HEX
- -- last-chunk = 1*("0") [ chunk-extension ] CRLF
- -- chunk-extension= *( ";" chunk-ext-name [ "=" chunk-ext-val ] )
- -- chunk-ext-name = token
- -- chunk-ext-val = token | quoted-string
- -- chunk-data = chunk-size(OCTET)
- -- trailer = *(entity-header CRLF)
- local
- eoc: BOOLEAN
- s: STRING_8
- do
- from
- create s.make (1024)
- until
- eoc
- loop
- read_chunk
- if attached last_chunk as l_last_chunk then
- s.append (l_last_chunk)
- else
- eoc := True
- end
- if last_chunk_size = 0 then
- eoc := True
- end
- end
-
- read_trailer
-
- Result := s
- end
-
- reset_chunk
- do
- last_chunk := Void
- last_chunk_size := 0
- end
-
- read_chunk
- do
- reset_chunk
- read_chunk_size
- if last_chunk_size > 0 then
- read_chunk_data
- end
- end
-
- read_chunk_data
- require
- last_chunk_size > 0
- local
- l_input: like input
- do
- l_input := input
- l_input.read_string (last_chunk_size)
- last_chunk := l_input.last_string
-
- -- read CRLF
- l_input.read_character
- if l_input.last_character = '%R' then
- l_input.read_character
- end
- ensure
- last_chunk_attached: attached last_chunk as el_last_chunk
- last_chunk_size_ok: el_last_chunk.count = last_chunk_size
- end
-
- read_chunk_size
- require
- tmp_hex_chunk_size_is_empty: tmp_hex_chunk_size.is_empty
- local
- eol : BOOLEAN
- c: CHARACTER
- hex : HEXADECIMAL_STRING_TO_INTEGER_CONVERTER
- l_input: like input
- do
- l_input := input
- from
- l_input.read_character
- until
- eol
- loop
- c := l_input.last_character
- inspect c
- when '%R' then
- -- We are in the end of the line, we need to read the next character to start the next line.
- eol := True
- l_input.read_character
- when ';' then
- -- We are in an extension chunk data
- read_extension_chunk
- else
- tmp_hex_chunk_size.append_character (c)
- l_input.read_character
- end
- end
- if tmp_hex_chunk_size.same_string ("0") then
- last_chunk_size := 0
- else
- create hex.make
- hex.parse_string_with_type (tmp_hex_chunk_size, hex.type_integer)
- if hex.parse_successful then
- last_chunk_size := hex.parsed_integer
- else
- last_chunk_size := 0 -- ERROR ...
- end
- end
- tmp_hex_chunk_size.wipe_out
- end
-
- read_extension_chunk
- local
- l_input: like input
- do
- l_input := input
- debug
- print (" Reading extension chunk ")
- end
- from
- l_input.read_character
- until
- l_input.last_character = '%R'
- loop
- debug
- print (l_input.last_character)
- end
- l_input.read_character
- end
- end
-
- read_trailer
- local
- l_input: like input
- do
- l_input := input
- if not l_input.end_of_input then
- debug
- print (" Reading trailer ")
- end
- from
- l_input.read_character
- until
- l_input.last_character = '%R'
- loop
- debug
- print (l_input.last_character)
- end
- l_input.read_character
- end
- -- read the LF
- l_input.read_character
- end
- end
-
-feature {NONE} -- Implementation
-
- input: WGI_INPUT_STREAM
- -- Input Stream
-
-;note
- copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
- license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
- source: "[
- Eiffel Software
- 5949 Hollister Ave., Goleta, CA 93117 USA
- Telephone 805-685-1006, Fax 805-685-6869
- Website http://www.eiffel.com
- Customer support http://support.eiffel.com
- ]"
-end
diff --git a/library/server/ewsgi/src/wgi_input_stream.e b/library/server/ewsgi/src/wgi_input_stream.e
deleted file mode 100644
index 2e5cf2ac..00000000
--- a/library/server/ewsgi/src/wgi_input_stream.e
+++ /dev/null
@@ -1,127 +0,0 @@
-note
- description : "[
- Objects that represents the input stream
- ]"
- specification: "EWSGI/connector specification https://github.com/Eiffel-World/Eiffel-Web-Framework/wiki/EWSGI-specification"
- legal: "See notice at end of class."
- status: "See notice at end of class."
- date: "$Date$"
- revision: "$Revision$"
-
-deferred class
- WGI_INPUT_STREAM
-
-feature -- Input
-
- read_character
- -- Read the next character in input stream.
- -- Make the result available in `last_character'
- require
- is_open_read: is_open_read
- not_end_of_input: not end_of_input
- deferred
- end
-
- read_string (nb: INTEGER)
- -- Read the next `nb' characters and
- -- make the string result available in `last_string'
- require
- is_open_read: is_open_read
- not_end_of_input: not end_of_input
- nb_large_enough: nb > 0
- deferred
- ensure
- last_string_count_small_enough: not end_of_input implies last_string.count <= nb
- character_read: not end_of_input implies last_string.count > 0
- end
-
- read_to_string (a_string: STRING; pos, nb: INTEGER): INTEGER
- -- Fill `a_string', starting at position `pos', with
- -- at most `nb' characters read from input stream.
- -- Return the number of characters actually read.
- -- (Note that even if at least `nb' characters are available
- -- in the input stream, there is no guarantee that they
- -- will all be read.)
- require
- is_open_read: is_open_read
- not_end_of_input: not end_of_input
- a_string_not_void: a_string /= Void
- valid_position: a_string.valid_index (pos)
- nb_large_enough: nb > 0
- nb_small_enough: nb <= a_string.count - pos + 1
- local
- i, end_pos: INTEGER
- do
- end_pos := pos + nb - 1
- from
- i := pos
- until
- i > end_pos
- loop
- read_character
- if not end_of_input then
- a_string.put (last_character, i)
- i := i + 1
- else
- Result := i - pos - nb
- -- Jump out of the loop.
- i := end_pos + 1
- end
- end
- Result := Result + i - pos
- ensure
- nb_char_read_large_enough: Result >= 0
- nb_char_read_small_enough: Result <= nb
- character_read: not end_of_input implies Result > 0
- end
-
-feature -- Access
-
- last_string: STRING_8
- -- Last string read.
- --
- -- Note: this query *might* return the same object.
- -- Therefore a clone should be used if the result
- -- is to be kept beyond the next call to this feature.
- -- However `last_string' is not shared between file objects.)
- require
- is_open_read: is_open_read
- not_end_of_input: not end_of_input
- deferred
- ensure
- last_string_not_void: Result /= Void
- end
-
- last_character: CHARACTER_8
- -- Last item read.
- require
- is_open_read: is_open_read
- not_end_of_input: not end_of_input
- deferred
- end
-
-feature -- Status report
-
- is_open_read: BOOLEAN
- -- Can items be read from input stream?
- deferred
- end
-
- end_of_input: BOOLEAN
- -- Has the end of input stream been reached?
- require
- is_open_read: is_open_read
- deferred
- end
-
-note
- copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
- license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
- source: "[
- Eiffel Software
- 5949 Hollister Ave., Goleta, CA 93117 USA
- Telephone 805-685-1006, Fax 805-685-6869
- Website http://www.eiffel.com
- Customer support http://support.eiffel.com
- ]"
-end
diff --git a/library/server/ewsgi/src/wgi_output_stream.e b/library/server/ewsgi/src/wgi_output_stream.e
deleted file mode 100644
index 9289378e..00000000
--- a/library/server/ewsgi/src/wgi_output_stream.e
+++ /dev/null
@@ -1,103 +0,0 @@
-note
- description : "[
- Objects that represents the output stream
- ]"
- specification: "EWSGI/connector specification https://github.com/Eiffel-World/Eiffel-Web-Framework/wiki/EWSGI-specification"
- legal: "See notice at end of class."
- status: "See notice at end of class."
- date: "$Date$"
- revision: "$Revision$"
-
-deferred class
- WGI_OUTPUT_STREAM
-
-feature -- Output
-
- put_string (a_string: READABLE_STRING_8)
- -- Write `a_string' to output stream.
- require
- is_open_write: is_open_write
- a_string_not_void: a_string /= Void
- deferred
- end
-
- put_substring (a_string: READABLE_STRING_8; s, e: INTEGER)
- -- Write substring of `a_string' between indexes
- -- `s' and `e' to output stream.
- --| Could be redefined for optimization
- require
- is_open_write: is_open_write
- a_string_not_void: a_string /= Void
- s_large_enough: s >= 1
- e_small_enough: e <= a_string.count
- valid_interval: s <= e + 1
- do
- if s <= e then
- put_string (a_string.substring (s, e))
- end
- end
-
- put_character_8 (c: CHARACTER_8)
- -- Write `c' to output stream.
- --| Could be redefined for optimization
- require
- is_open_write: is_open_write
- do
- put_string (c.out)
- end
-
-feature -- Specific output
-
- put_header_line (s: READABLE_STRING_8)
- -- Send `s' to http client as header line
- do
- put_string (s)
- put_crlf
- end
-
- put_crlf
- -- Send "%R%N" string
- do
- put_string (crlf)
- end
-
-feature -- Status writing
-
- put_status_line (a_code: INTEGER)
- -- Put status code line for `a_code'
- --| Note this is a default implementation, and could be redefined
- --| for instance in relation to NPH CGI script
- deferred
- end
-
-feature -- Status report
-
- is_open_write: BOOLEAN
- -- Can items be written to output stream?
- deferred
- end
-
-feature -- Basic operations
-
- flush
- -- Flush buffered data to disk.
- require
- is_open_write: is_open_write
- deferred
- end
-
-feature -- Constant
-
- crlf: STRING = "%R%N"
-
-note
- copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
- license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
- source: "[
- Eiffel Software
- 5949 Hollister Ave., Goleta, CA 93117 USA
- Telephone 805-685-1006, Fax 805-685-6869
- Website http://www.eiffel.com
- Customer support http://support.eiffel.com
- ]"
-end
diff --git a/library/server/ewsgi/src/wgi_service.e b/library/server/ewsgi/src/wgi_service.e
deleted file mode 100644
index 910bbc42..00000000
--- a/library/server/ewsgi/src/wgi_service.e
+++ /dev/null
@@ -1,39 +0,0 @@
-note
- description: "[
- WGI_SERVICE
- ]"
- specification: "EWSGI specification https://github.com/Eiffel-World/Eiffel-Web-Framework/wiki/EWSGI-specification"
- legal: "See notice at end of class."
- status: "See notice at end of class."
- date: "$Date$"
- revision: "$Revision$"
-
-deferred class
- WGI_SERVICE
-
-feature {WGI_CONNECTOR} -- Execution
-
- execute (req: WGI_REQUEST; res: WGI_RESPONSE)
- -- Execute the request
- -- See `req.input' for input stream
- -- `req.meta_variables' for the CGI meta variable
- -- and `res' for output buffer
- require
- res_status_unset: not res.status_is_set
- deferred
- ensure
- res_status_set: res.status_is_set
- end
-
-note
- copyright: "2011-2012, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
- license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
- source: "[
- Eiffel Software
- 5949 Hollister Ave., Goleta, CA 93117 USA
- Telephone 805-685-1006, Fax 805-685-6869
- Website http://www.eiffel.com
- Customer support http://support.eiffel.com
- ]"
-
-end