diff --git a/draft/library/server/request/rest/license.lic b/draft/library/server/request/rest/license.lic deleted file mode 100644 index c929225f..00000000 --- a/draft/library/server/request/rest/license.lic +++ /dev/null @@ -1 +0,0 @@ -reference:forum2 diff --git a/draft/library/server/request/rest/rest-safe.ecf b/draft/library/server/request/rest/rest-safe.ecf deleted file mode 100644 index 1db36b15..00000000 --- a/draft/library/server/request/rest/rest-safe.ecf +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - /EIFGENs$ - /\.git$ - /\.svn$ - - - - - - - - - - /html$ - - - - - /contrib$ - - - - diff --git a/draft/library/server/request/rest/rest.ecf b/draft/library/server/request/rest/rest.ecf deleted file mode 100644 index 7b6563ee..00000000 --- a/draft/library/server/request/rest/rest.ecf +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - /EIFGENs$ - /\.git$ - /\.svn$ - - - diff --git a/draft/library/server/request/rest/src/contrib/doc/html/html_page.e b/draft/library/server/request/rest/src/contrib/doc/html/html_page.e deleted file mode 100644 index 030b9a1a..00000000 --- a/draft/library/server/request/rest/src/contrib/doc/html/html_page.e +++ /dev/null @@ -1,184 +0,0 @@ -note - description: "Summary description for {HTML_PAGE}." - date: "$Date$" - revision: "$Revision$" - -class - HTML_PAGE - -inherit - HTML_UTILITIES - -create - make - -feature {NONE} -- Initialization - - make (a_title: like title) - do - create {ARRAYED_LIST [like html_attributes.item]} html_attributes.make (0) - create head.make (a_title) - create {ARRAYED_LIST [like body_attributes.item]} body_attributes.make (0) - create body.make_empty - initialize - end - - initialize - -- Initialize - do - create headers.make - end - -feature -- Access - - headers: HTTP_HEADER - -feature -- Recycle - - recycle - do - html_attributes.wipe_out - headers.recycle - head.recycle - body_attributes.wipe_out - body.wipe_out - internal_header_string := Void - internal_message_string := Void - end - -feature -- Access - - html_attributes: LIST [TUPLE [name: STRING; value: STRING]] - - head: HTML_PAGE_HEAD - - body_attributes: LIST [TUPLE [name: STRING; value: STRING]] - - body: STRING - -feature -- Query - - title: detachable STRING - do - Result := head.title - end - - add_html_ttribute (a: like html_attributes.item) - do - html_attributes.force (a) - end - - add_body_attribute (a: like body_attributes.item) - do - body_attributes.force (a) - end - - set_body (s: like body) - -- Set `body' to `s' - do - body := s - end - -feature -- Element change - - set_title (t: like title) - do - head.title := t - end - -feature -- Output - - compute - -- Compute the string output - local - s, t: STRING - do - --| HTML beginning - create s.make (128) - s.append_string ("%N") - - --| Head - head.compute --| Be sure to have a fresh string - t := head.string - if not t.is_empty then - s.append_string (t) - s.append_character ('%N') - end - - --| Body - s.append_string ("%N") - s.append_string (body) - s.append_string ("") - - --| End - s.append_string ("") - - --| Http headers - headers.put_content_length (s.count) - internal_header_string := headers.string - internal_message_string := s - end - - header_string: STRING - local - o: like internal_header_string - do - o := internal_header_string - if o = Void then - compute - o := internal_header_string - if o = Void then - check output_computed: False end - create o.make_empty - end - end - Result := o - end - - message_string: STRING - local - o: like internal_message_string - do - o := internal_message_string - if o = Void then - compute - o := internal_message_string - if o = Void then - check output_computed: False end - create o.make_empty - end - end - Result := o - end - - send (buf: WSF_RESPONSE) - do - buf.set_status_code (200) - buf.put_header_text (header_string) - buf.put_string (message_string) - end - -feature {NONE} -- Implementation: output - - internal_header_string: detachable like header_string - - internal_message_string: detachable like message_string - -invariant - header_attached: headers /= Void - -;note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/src/contrib/doc/html/html_page_head.e b/draft/library/server/request/rest/src/contrib/doc/html/html_page_head.e deleted file mode 100644 index c51d930e..00000000 --- a/draft/library/server/request/rest/src/contrib/doc/html/html_page_head.e +++ /dev/null @@ -1,111 +0,0 @@ -note - description: "Summary description for {HTML_PAGE_HEAD}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - HTML_PAGE_HEAD - -inherit - HTML_UTILITIES - -create - make - -feature {NONE} -- Initialization - - make (a_title: like title) - do - initialize - title := a_title - end - - initialize - do - create text.make_empty - create {ARRAYED_LIST [like attributes.item]} attributes.make (0) - end - -feature -- Recycle - - recycle - do - attributes.wipe_out - title := Void - text.wipe_out - internal_string := Void - end - -feature -- Access - - attributes: LIST [TUPLE [name: STRING; value: STRING]] - - title: detachable STRING assign set_title - - text: STRING - -feature -- Element change - - set_title (t: like title) - do - title := t - end - -feature -- Output - - compute - -- Compute the string output - local - s: STRING - do - create s.make_empty - if attached title as t then - s.append_string ("" + t + "%N") - end - if text.count > 0 then - s.append_string (text) - s.append_character ('%N') - end - if s.count > 0 then - internal_string := "%N" + s + "" - else - internal_string := s - end - end - - string: STRING - -- - local - o: like internal_string - do - o := internal_string - if o = Void then - compute - o := internal_string - if o = Void then - check output_computed: False end - create o.make_empty - end - end - Result := o - end - -feature {NONE} -- Implementation: output - - internal_string: detachable like string - -invariant - text_attached: text /= Void - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/src/contrib/doc/html/html_utilities.e b/draft/library/server/request/rest/src/contrib/doc/html/html_utilities.e deleted file mode 100644 index 18261931..00000000 --- a/draft/library/server/request/rest/src/contrib/doc/html/html_utilities.e +++ /dev/null @@ -1,90 +0,0 @@ -note - description: "Summary description for {HTML_UTILITIES}." - date: "$Date$" - revision: "$Revision$" - -class - HTML_UTILITIES - -feature -- Encoding - - html_special_chars_encoded_string (s: STRING): STRING - local - c: CHARACTER - i,n: INTEGER - do - from - i := 1 - n := s.count - create Result.make (n + 10) - until - i > n - loop - c := s[i] - inspect c - when '&' then - Result.append_string ("&") - when '%"' then - Result.append_string (""") - when '%'' then - Result.append_string ("'") - when '<' then - Result.append_string ("<") - when '>' then - Result.append_string (">") - else - Result.extend (c) - end - i := i + 1 - end - end - -feature -- Helpers - - strings_to_string (lst: LIST [STRING]; sep: STRING): STRING - do - create Result.make_empty - if lst.count > 0 then - from - lst.start - until - lst.after - loop - Result.append_string (lst.item) - Result.append_string (sep) - lst.forth - end - end - end - - attributes_to_string (atts: LIST [TUPLE [name: STRING; value: STRING]]): STRING - do - create Result.make_empty - if atts.count > 0 then - from - atts.start - until - atts.after - loop - Result.append_character (' ') - Result.append_string (atts.item.name) - Result.append_character ('=') - Result.append_character ('%"') - Result.append_string (html_special_chars_encoded_string (atts.item.value)) - Result.append_character ('%"') - atts.forth - end - end - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/src/contrib/doc/rest_api_documentation_html_page.e b/draft/library/server/request/rest/src/contrib/doc/rest_api_documentation_html_page.e deleted file mode 100644 index 953cb482..00000000 --- a/draft/library/server/request/rest/src/contrib/doc/rest_api_documentation_html_page.e +++ /dev/null @@ -1,124 +0,0 @@ -note - description: "Summary description for {REST_API_DOCUMENTATION_HTML_PAGE}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - REST_API_DOCUMENTATION_HTML_PAGE - -inherit - HTML_PAGE - redefine - head, - initialize, - recycle, - compute - end - -create - make - -feature {NONE} -- Initialization - - initialize - do - Precursor - create {LINKED_LIST [like shortcuts.item]} shortcuts.make - end - -feature -- Recyle - - recycle - do - Precursor - shortcuts.wipe_out - end - -feature -- Access - - head: REST_API_DOCUMENTATION_HTML_PAGE_HEAD - - big_title: detachable STRING - - shortcuts: LIST [TUPLE [name: STRING; anchor: STRING]] - - add_shortcut (s: STRING) - local - t: STRING - do - t := s.string - t.replace_substring_all ("/", "-") - shortcuts.force ([s,t]) - end - - last_added_shortcut: STRING - do - if shortcuts.count > 0 and then attached shortcuts.last as sht then - Result := sht.anchor - else - create Result.make_empty - end - end - - shortcuts_to_html: detachable STRING - do - if not shortcuts.is_empty then - from - create Result.make_from_string ("Shortcuts: | ") - shortcuts.start - until - shortcuts.after - loop - Result.append_string (""+ shortcuts.item.name +" | ") - shortcuts.forth - end - end - end - -feature -- Element change - - set_big_title (t: like big_title) - do - big_title := t - end - -feature -- Basic operation - - compute - local - l_old_body: STRING - sh, bt: detachable STRING - do - sh := shortcuts_to_html - bt := big_title - if sh /= Void or bt /= Void then - l_old_body := body - if bt /= Void then - bt := "

" + bt + "

%N" - if sh /= Void then - body := bt + sh + l_old_body - else - body := bt + l_old_body - end - elseif sh /= Void then - body := sh + l_old_body - end - Precursor - body := l_old_body - else - Precursor - end - end - -;note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/src/contrib/doc/rest_api_documentation_html_page_head.e b/draft/library/server/request/rest/src/contrib/doc/rest_api_documentation_html_page_head.e deleted file mode 100644 index aa57b34f..00000000 --- a/draft/library/server/request/rest/src/contrib/doc/rest_api_documentation_html_page_head.e +++ /dev/null @@ -1,75 +0,0 @@ -note - description: "Summary description for {REST_API_DOCUMENTATION_HTML_PAGE_HEAD}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - REST_API_DOCUMENTATION_HTML_PAGE_HEAD - -inherit - HTML_PAGE_HEAD - redefine - initialize, - compute - end - -create - make - -feature {NONE} -- Initialization - - initialize - do - Precursor - style := "[ - body {margin: 0px;} - a { text-decoration: none; } - h1 { padding: 10px; border: solid 2px #000; background-color: #009; color: #fff;} - div.api { padding: 5px; margin-bottom: 10px;} - div.api .api-description { padding: 5px 5px 5px 0px; font-style: italic; color: #090;} - div.api div.inner { padding-left: 40px;} - div.api h2>a { color: #009; text-decoration: none;} - div.api a.api-format { color: #009; text-decoration: none;} - div.api a.api-format.selected { padding: 0 4px 0 4px; color: #009; text-decoration: none; border: solid 1px #99c; background-color: #eeeeff;} - div.api>h2 { margin: 2px; padding: 2px 2px 2px 10px; display: inline-block; border: dotted 1px #cce; width: 100%; color: #009; background-color: #E7F3F8; text-decoration: none; font-weight: bold; font-size: 120%;} - div.api span.note { font-style: italic;} - ]" - end - -feature {REST_API_DOCUMENTATION_HTML_PAGE} -- Access - - style: STRING - -feature -- Output - - compute - -- Compute the string output - local - s: detachable STRING - p: INTEGER - do - Precursor - s := internal_string - if s /= Void then - p := s.substring_index ("", 1) - if p > 0 then - s.insert_string ("%N", p) - else - s.append_string ("%N") - end - end - end - - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/src/handler/rest_request_group_handler.e- b/draft/library/server/request/rest/src/handler/rest_request_group_handler.e- deleted file mode 100644 index 12bfe4b0..00000000 --- a/draft/library/server/request/rest/src/handler/rest_request_group_handler.e- +++ /dev/null @@ -1,47 +0,0 @@ -note - description: "Summary description for REST_REQUEST_GROUP_HANDLER." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - REST_REQUEST_GROUP_HANDLER [H -> REST_REQUEST_HANDLER [C], C -> REST_REQUEST_HANDLER_CONTEXT] - -inherit - REQUEST_ROUTING_HANDLER [H, C] - redefine - execute - end - - REST_REQUEST_HANDLER [C] - redefine - execute - select - execute_application - end - -create - make - -feature -- status - - authentication_required: BOOLEAN - -feature -- Execution - - execute (ctx: C; req: WGI_REQUEST; res: WGI_RESPONSE_BUFFER) - do - Precursor {REST_REQUEST_HANDLER} (ctx, req, res) - end - -;note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/src/response/rest_response.e b/draft/library/server/request/rest/src/response/rest_response.e deleted file mode 100644 index 405eeaf9..00000000 --- a/draft/library/server/request/rest/src/response/rest_response.e +++ /dev/null @@ -1,56 +0,0 @@ -note - description: "Summary description for {REST_RESPONSE}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - REST_RESPONSE - -inherit - WSF_PAGE_RESPONSE - rename - header as headers, - body as message, - set_body as set_message, - put_string as append_message, - make as page_make, - send_to as send - end - -create - make - -feature {NONE} -- Initialization - - make (a_api: like api) - do - api := a_api - page_make - end - -feature -- Recycle - - recycle - do - headers.recycle - message := Void - end - -feature -- Access - - api: STRING - -- Associated api query string. - -invariant -note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/rest_request_agent_handler.e b/draft/library/server/request/rest/src/rest_request_agent_handler.e deleted file mode 100644 index 8b3c1e73..00000000 --- a/draft/library/server/request/rest/src/rest_request_agent_handler.e +++ /dev/null @@ -1,47 +0,0 @@ -class - REST_REQUEST_AGENT_HANDLER [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - WSF_URI_TEMPLATE_AGENT_CONTEXT_HANDLER [C] - rename - execute as execute_application - end - - REST_REQUEST_HANDLER [C] - select - execute - end - -create - make - -feature -- status - - authentication_required (req: WSF_REQUEST): BOOLEAN - do - Result := internal_authentication_required - end - -feature -- Element change - - set_authentication_required (b: like authentication_required) - do - internal_authentication_required := b - end - -feature {NONE} -- Implementation - - internal_authentication_required: BOOLEAN - -invariant -note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/rest_request_handler.e b/draft/library/server/request/rest/src/rest_request_handler.e deleted file mode 100644 index 7503d844..00000000 --- a/draft/library/server/request/rest/src/rest_request_handler.e +++ /dev/null @@ -1,332 +0,0 @@ -note - description: "Summary description for {REST_REQUEST_HANDLER}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - REST_REQUEST_HANDLER [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - WSF_URI_TEMPLATE_CONTEXT_HANDLER [C] - - WSF_HANDLER_HELPER - -feature -- Access - - authentication_required (req: WSF_REQUEST): BOOLEAN - -- Is authentication required - -- might depend on the request environment - -- or the associated resources - deferred - end - - description: detachable STRING - -- Optional description - -feature -- Element change - - set_description (s: like description) - -- Set `description' to `s' - do - description := s - end - -feature -- Execution - - execute (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - -- Execute request handler - do - if request_method_name_supported (req.request_method) then - if authentication_required (req) and then not authenticated (ctx) then - execute_unauthorized (ctx, req, res) - else - pre_execute (ctx, req, res) - execute_application (ctx, req, res) - post_execute (ctx, req, res) - end - else - execute_request_method_not_allowed (req, res, supported_request_method_names) - end - rescue - execute_rescue (ctx, req, res) - end - - execute_application (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - deferred - end - - pre_execute (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - do - end - - post_execute (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - do - end - - execute_rescue (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - do - post_execute (ctx, req, res) - rescue - --| Just in case, the rescue is raising other exceptions ... - end - - execute_unauthorized (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - do - res.put_header ({HTTP_STATUS_CODE}.unauthorized, Void) - res.put_string ("Unauthorized") - end - -feature -- Auth - - authenticated (ctx: C): BOOLEAN - -- Is authenticated? - do - --| To redefine if needed - end - -feature {NONE} -- Implementation - - supported_formats: INTEGER - -- Support request format result such as json, xml, ... - -feature {NONE} -- Status report - - format_id_supported (a_id: INTEGER): BOOLEAN - do - Result := (supported_formats & a_id) = a_id - end - - format_name_supported (n: STRING): BOOLEAN - -- Is format `n' supported? - do - Result := format_id_supported (format_constants.format_id (n)) - end - - format_constants: HTTP_FORMAT_CONSTANTS - once - create Result - end - -feature -- Status report - - supported_format_names: LIST [STRING] - -- Supported format names ... - do - create {LINKED_LIST [STRING]} Result.make - if format_json_supported then - Result.extend (format_constants.json_name) - end - if format_xml_supported then - Result.extend (format_constants.xml_name) - end - if format_text_supported then - Result.extend (format_constants.text_name) - end - if format_html_supported then - Result.extend (format_constants.html_name) - end - if format_rss_supported then - Result.extend (format_constants.rss_name) - end - if format_atom_supported then - Result.extend (format_constants.atom_name) - end - end - - format_json_supported: BOOLEAN - do - Result := format_id_supported ({HTTP_FORMAT_CONSTANTS}.json) - end - - format_xml_supported: BOOLEAN - do - Result := format_id_supported ({HTTP_FORMAT_CONSTANTS}.xml) - end - - format_text_supported: BOOLEAN - do - Result := format_id_supported ({HTTP_FORMAT_CONSTANTS}.text) - end - - format_html_supported: BOOLEAN - do - Result := format_id_supported ({HTTP_FORMAT_CONSTANTS}.html) - end - - format_rss_supported: BOOLEAN - do - Result := format_id_supported ({HTTP_FORMAT_CONSTANTS}.rss) - end - - format_atom_supported: BOOLEAN - do - Result := format_id_supported ({HTTP_FORMAT_CONSTANTS}.atom) - end - -feature -- Element change: formats - - reset_supported_formats - do - supported_formats := 0 - end - - enable_format_json - do - enable_format ({HTTP_FORMAT_CONSTANTS}.json) - end - - enable_format_xml - do - enable_format ({HTTP_FORMAT_CONSTANTS}.xml) - end - - enable_format_text - do - enable_format ({HTTP_FORMAT_CONSTANTS}.text) - end - - enable_format_html - do - enable_format ({HTTP_FORMAT_CONSTANTS}.html) - end - - enable_format (f: INTEGER) - do - supported_formats := supported_formats | f - end - -feature {NONE} -- Implementation - - supported_request_methods: INTEGER - -- Support request method such as GET, POST, ... - -feature {NONE} -- Status report - - request_method_id_supported (a_id: INTEGER): BOOLEAN - do - Result := (supported_request_methods & a_id) = a_id - end - - request_method_name_supported (n: STRING): BOOLEAN - -- Is request method `n' supported? - do - Result := request_method_id_supported (request_method_constants.method_id (n)) - end - - request_method_constants: HTTP_REQUEST_METHOD_CONSTANTS - once - create Result - end - -feature -- Status report - - supported_request_method_names: LIST [STRING] - -- Support request method such as GET, POST, ... - do - create {LINKED_LIST [STRING]} Result.make - if method_get_supported then - Result.extend (request_method_constants.method_get) - end - if method_post_supported then - Result.extend (request_method_constants.method_post) - end - if method_put_supported then - Result.extend (request_method_constants.method_put) - end - if method_patch_supported then - Result.extend (request_method_constants.method_patch) - end - if method_delete_supported then - Result.extend (request_method_constants.method_delete) - end - if method_head_supported then - Result.extend (request_method_constants.method_head) - end - end - - method_get_supported: BOOLEAN - do - Result := request_method_id_supported ({HTTP_REQUEST_METHOD_CONSTANTS}.get) - end - - method_post_supported: BOOLEAN - do - Result := request_method_id_supported ({HTTP_REQUEST_METHOD_CONSTANTS}.post) - end - - method_put_supported: BOOLEAN - do - Result := request_method_id_supported ({HTTP_REQUEST_METHOD_CONSTANTS}.put) - end - - method_patch_supported: BOOLEAN - do - Result := request_method_id_supported ({HTTP_REQUEST_METHOD_CONSTANTS}.patch) - end - - method_delete_supported: BOOLEAN - do - Result := request_method_id_supported ({HTTP_REQUEST_METHOD_CONSTANTS}.delete) - end - - method_head_supported: BOOLEAN - do - Result := request_method_id_supported ({HTTP_REQUEST_METHOD_CONSTANTS}.head) - end - -feature -- Element change: request methods - - reset_supported_request_methods - do - supported_request_methods := 0 - end - - enable_request_method_get - do - enable_request_method ({HTTP_REQUEST_METHOD_CONSTANTS}.get) - end - - enable_request_method_post - do - enable_request_method ({HTTP_REQUEST_METHOD_CONSTANTS}.post) - end - - enable_request_method_put - do - enable_request_method ({HTTP_REQUEST_METHOD_CONSTANTS}.put) - end - - enable_request_method_patch - do - enable_request_method ({HTTP_REQUEST_METHOD_CONSTANTS}.patch) - end - - enable_request_method_delete - do - enable_request_method ({HTTP_REQUEST_METHOD_CONSTANTS}.delete) - end - - enable_request_method_head - do - enable_request_method ({HTTP_REQUEST_METHOD_CONSTANTS}.head) - end - - enable_request_method (m: INTEGER) - do - supported_request_methods := supported_request_methods | m - end - - - -note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/rest_request_handler_context.e b/draft/library/server/request/rest/src/rest_request_handler_context.e deleted file mode 100644 index b05908a1..00000000 --- a/draft/library/server/request/rest/src/rest_request_handler_context.e +++ /dev/null @@ -1,133 +0,0 @@ -note - description: "Summary description for {REST_REQUEST_HANDLER_CONTEXT}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - REST_REQUEST_HANDLER_CONTEXT - -inherit - WSF_HANDLER_CONTEXT - - WSF_REQUEST_UTILITY_PROXY - -feature -- Accept: Content-Type - - accepted_content_type: detachable READABLE_STRING_8 - do - if internal_accepted_content_type = Void then - get_accepted_content_type (Void) - end - Result := internal_accepted_content_type - end - - get_accepted_content_type (a_supported_content_types: detachable ARRAY [STRING_8]) - do - if internal_accepted_content_type = Void then - internal_accepted_content_type := request_accepted_content_type (a_supported_content_types) - end - end - -feature -- Format name - - accepted_format_name: detachable READABLE_STRING_8 - do - if internal_accepted_format_name = Void then - get_accepted_format_name (Void, Void) - end - Result := internal_accepted_format_name - end - - get_accepted_format_name (a_format_variable_name: detachable READABLE_STRING_8; a_supported_content_types: detachable ARRAY [STRING_8]) - do - if internal_accepted_format_name = Void then - internal_accepted_format_name := request_accepted_format (a_format_variable_name, a_supported_content_types) - end - end - -feature -- Format id - - accepted_format_id: INTEGER - do - if internal_accepted_format_id = 0 then - get_accepted_format_id (Void, Void) - end - Result := internal_accepted_format_id - end - - get_accepted_format_id (a_format_variable_name: detachable READABLE_STRING_8; a_supported_content_types: detachable ARRAY [STRING_8]) - do - if internal_accepted_format_id = 0 then - internal_accepted_format_id := request_accepted_format_id (a_format_variable_name, a_supported_content_types) - end - end - -feature {NONE} -- Constants - - Format_constants: HTTP_FORMAT_CONSTANTS - once - create Result - end - -feature -- Format - - request_accepted_format (a_format_variable_name: detachable READABLE_STRING_8; a_supported_content_types: detachable ARRAY [READABLE_STRING_8]): detachable READABLE_STRING_8 - -- Format id for the request based on {HTTP_FORMAT_CONSTANTS} - do - if a_format_variable_name /= Void and then attached {WSF_STRING} request.item (a_format_variable_name) as ctx_format then - Result := ctx_format.value - else - Result := request_format_from_content_type (request_accepted_content_type (a_supported_content_types)) - end - end - - request_accepted_format_id (a_format_variable_name: detachable READABLE_STRING_8; a_supported_content_types: detachable ARRAY [READABLE_STRING_8]): INTEGER - -- Format id for the request based on {HTTP_FORMAT_CONSTANTS} - do - if attached request_accepted_format (a_format_variable_name, a_supported_content_types) as l_format then - Result := Format_constants.format_id (l_format) - else - Result := 0 - end - end - -feature {NONE} -- Format/Content type implementation - - request_format_from_content_type (a_content_type: detachable READABLE_STRING_8): detachable READABLE_STRING_8 - -- `a_content_type' converted into a request format name - do - if a_content_type /= Void then - if a_content_type.same_string ({HTTP_MIME_TYPES}.text_json) then - Result := {HTTP_FORMAT_CONSTANTS}.json_name - elseif a_content_type.same_string ({HTTP_MIME_TYPES}.application_json) then - Result := {HTTP_FORMAT_CONSTANTS}.json_name - elseif a_content_type.same_string ({HTTP_MIME_TYPES}.text_xml) then - Result := {HTTP_FORMAT_CONSTANTS}.xml_name - elseif a_content_type.same_string ({HTTP_MIME_TYPES}.text_html) then - Result := {HTTP_FORMAT_CONSTANTS}.html_name - elseif a_content_type.same_string ({HTTP_MIME_TYPES}.text_plain) then - Result := {HTTP_FORMAT_CONSTANTS}.text_name - end - end - end - -feature {NONE} -- Internal - - internal_accepted_content_type: like accepted_content_type - - internal_accepted_format_id: like accepted_format_id - - internal_accepted_format_name: like accepted_format_name - -;note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/rest_service.e b/draft/library/server/request/rest/src/rest_service.e deleted file mode 100644 index ca694d3f..00000000 --- a/draft/library/server/request/rest/src/rest_service.e +++ /dev/null @@ -1,23 +0,0 @@ -note - description: "Summary description for {DEFAULT_REST_SERVICE}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - REST_SERVICE [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - REST_SERVICE_I [C] - -note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/rest_service_i.e b/draft/library/server/request/rest/src/rest_service_i.e deleted file mode 100644 index ad6dfa89..00000000 --- a/draft/library/server/request/rest/src/rest_service_i.e +++ /dev/null @@ -1,23 +0,0 @@ -note - description: "Summary description for {REST_SERVICE}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - REST_SERVICE_I [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - WSF_URI_TEMPLATE_CONTEXT_ROUTED_SERVICE [C] - -;note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/uri_template/rest_request_uri_template_handler.e b/draft/library/server/request/rest/src/uri_template/rest_request_uri_template_handler.e deleted file mode 100644 index ff307d74..00000000 --- a/draft/library/server/request/rest/src/uri_template/rest_request_uri_template_handler.e +++ /dev/null @@ -1,24 +0,0 @@ -note - description: "Summary description for {DEFAULT_REST_REQUEST_URI_TEMPLATE_HANDLER}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - REST_REQUEST_URI_TEMPLATE_HANDLER [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - REST_REQUEST_HANDLER [C] - - -;note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/uri_template/rest_request_uri_template_handler_context.e b/draft/library/server/request/rest/src/uri_template/rest_request_uri_template_handler_context.e deleted file mode 100644 index d44f0eae..00000000 --- a/draft/library/server/request/rest/src/uri_template/rest_request_uri_template_handler_context.e +++ /dev/null @@ -1,28 +0,0 @@ -note - description: "Summary description for {WSF_URI_TEMPLATE_HANDLER_CONTEXT}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - REST_REQUEST_URI_TEMPLATE_HANDLER_CONTEXT - -inherit - WSF_HANDLER_CONTEXT - - REST_REQUEST_HANDLER_CONTEXT - -create - make - -note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/uri_template/rest_uri_template_routing_handler.e b/draft/library/server/request/rest/src/uri_template/rest_uri_template_routing_handler.e deleted file mode 100644 index d9b14a24..00000000 --- a/draft/library/server/request/rest/src/uri_template/rest_uri_template_routing_handler.e +++ /dev/null @@ -1,67 +0,0 @@ -note - description : "Objects that ..." - author : "$Author$" - date : "$Date$" - revision : "$Revision$" - -class - REST_URI_TEMPLATE_ROUTING_HANDLER [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - WSF_URI_TEMPLATE_ROUTING_CONTEXT_HANDLER [C] - rename - execute as old_execute, - uri_template_execute as execute - redefine - execute - end - - REST_REQUEST_HANDLER [C] - undefine - execute - end - -create - make, - make_with_router - -feature -- Status report - - authentication_required (req: WSF_REQUEST): BOOLEAN - do - Result := internal_authentication_required - end - -feature {NONE} -- Implementation - - internal_authentication_required: BOOLEAN - -feature -- Execution - - execute (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - do - pre_execute (ctx, req, res) - Precursor {WSF_URI_TEMPLATE_ROUTING_CONTEXT_HANDLER} (ctx, req, res) - post_execute (ctx, req, res) - end - - execute_application (ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE) - do - check should_not_occur: False end - end - - -invariant --- invariant_clause: True - -note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/src/uri_template/rest_uri_template_service.e b/draft/library/server/request/rest/src/uri_template/rest_uri_template_service.e deleted file mode 100644 index e295faad..00000000 --- a/draft/library/server/request/rest/src/uri_template/rest_uri_template_service.e +++ /dev/null @@ -1,23 +0,0 @@ -note - description: "Summary description for {DEFAULT_URI_TEMPLATE_REST_SERVICE}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - REST_URI_TEMPLATE_SERVICE [C -> WSF_HANDLER_CONTEXT create make end] - -inherit - REST_SERVICE_I [C] - -;note - copyright: "Copyright (c) 1984-2012, 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/draft/library/server/request/rest/tests/htdocs/.htaccess b/draft/library/server/request/rest/tests/htdocs/.htaccess deleted file mode 100644 index 10b1467c..00000000 --- a/draft/library/server/request/rest/tests/htdocs/.htaccess +++ /dev/null @@ -1,26 +0,0 @@ -Options Indexes FollowSymLinks ExecCGI - - -AddHandler fcgid-script .eapp -FcgidWrapper c:/_dev/Dev-Process/web-framework/library/server/request/rest/tests/htdocs/../EIFGENs/rest_sample_cgi/W_code/sample.exe .eapp - - - -Options +ExecCGI -AddHandler cgi-script exe - - - - RewriteEngine on - RewriteBase /REST - - - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_URI} !=/favicon.ico - RewriteRule ^(.*)$ sample.eapp/$1 - -# To let CGI app knows about HTTP_AUTHORIZATION -RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] - - diff --git a/draft/library/server/request/rest/tests/htdocs/README.txt b/draft/library/server/request/rest/tests/htdocs/README.txt deleted file mode 100644 index 13bd0686..00000000 --- a/draft/library/server/request/rest/tests/htdocs/README.txt +++ /dev/null @@ -1,31 +0,0 @@ -= How to make this works with Apache = -* In the apache's configuration file, be sure to add the following, or similar - LoadModule fcgid_module modules/mod_fcgid.so - - FcgidIdleTimeout 60 - FcgidBusyScanInterval 120 - FcgidProcessLifeTime 1600 - #7200 - FcgidMaxProcesses 5 - FcgidMaxProcessesPerClass 100 - FcgidMinProcessesPerClass 100 - FcgidConnectTimeout 8 - FcgidIOTimeout 3000 - FcgidBusyTimeout 3200 - FcgidMaxRequestLen 10000000 - FcgidPassHeader Authorization - - - - alias /REST/ "c:/_dev/Dev-Process/src/server/htdocs/" - - AllowOverride All - Order allow,deny - Allow from all - - -* You can use , but then the AllowOverride All, should be somewhere else, since does not allow it. - -* And then, check the .htaccess from this folder for additional settings (but required) - - diff --git a/draft/library/server/request/rest/tests/htdocs/build.eant b/draft/library/server/request/rest/tests/htdocs/build.eant deleted file mode 100644 index 2a5a919b..00000000 --- a/draft/library/server/request/rest/tests/htdocs/build.eant +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/draft/library/server/request/rest/tests/htdocs/htaccess b/draft/library/server/request/rest/tests/htdocs/htaccess deleted file mode 100644 index a36c2b28..00000000 --- a/draft/library/server/request/rest/tests/htdocs/htaccess +++ /dev/null @@ -1,26 +0,0 @@ -Options Indexes FollowSymLinks ExecCGI - - -AddHandler fcgid-script .eapp -FcgidWrapper ##SAMPLE-CGI-DIR##/sample.exe .eapp - - - -Options +ExecCGI -AddHandler cgi-script exe - - - - RewriteEngine on - RewriteBase /REST - - - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_URI} !=/favicon.ico - RewriteRule ^(.*)$ sample.eapp/$1 - -# To let CGI app knows about HTTP_AUTHORIZATION -RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] - - diff --git a/draft/library/server/request/rest/tests/htdocs/sample.eapp b/draft/library/server/request/rest/tests/htdocs/sample.eapp deleted file mode 100644 index e69de29b..00000000 diff --git a/draft/library/server/request/rest/tests/sample.ecf b/draft/library/server/request/rest/tests/sample.ecf deleted file mode 100644 index 268c4245..00000000 --- a/draft/library/server/request/rest/tests/sample.ecf +++ /dev/null @@ -1,56 +0,0 @@ - - - - - /EIFGENs$ - /\.git$ - /\.svn$ - - - - - - - - - - - - - - - - - /gateway$ - - - - - - - - - - - /gateway$ - - - - - - - - - - - - - - - /gateway$ - - - - - diff --git a/draft/library/server/request/rest/tests/src/app/app_account_verify_credential.e b/draft/library/server/request/rest/tests/src/app/app_account_verify_credential.e deleted file mode 100644 index 01b82e59..00000000 --- a/draft/library/server/request/rest/tests/src/app/app_account_verify_credential.e +++ /dev/null @@ -1,112 +0,0 @@ -note - description: "Summary description for {APP_ACCOUNT_VERIFY_CREDENTIAL}." - date: "$Date$" - revision: "$Revision$" - -class - APP_ACCOUNT_VERIFY_CREDENTIAL - -inherit - APP_REQUEST_HANDLER - redefine - initialize, - execute_unauthorized - end - -create - make - -feature {NONE} -- Initialization - - make - do - description := "Verify credentials" - initialize - end - - initialize - do - Precursor - enable_request_method_get - enable_format_json - enable_format_xml - enable_format_text - end - -feature -- Access - - authentication_required (req: WSF_REQUEST): BOOLEAN - do - Result := True - end - -feature -- Execution - - execute_unauthorized (a_hdl_context: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - local - s: STRING - lst: LIST [STRING] - do - res.set_status_code ({HTTP_STATUS_CODE}.unauthorized) - res.put_header ({HTTP_STATUS_CODE}.unauthorized, <<["WWW-Authenticate", "Basic realm=%"My Silly demo auth, password must be the same as login such as foo:foo%""]>>) - res.put_string ("Unauthorized") - end - - execute_application (ctx: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - local - l_full: BOOLEAN - h: HTTP_HEADER - l_login: STRING_8 - s: STRING - content_type_supported: ARRAY [STRING] - l_format_id: INTEGER - do - content_type_supported := <<{HTTP_CONSTANTS}.application_json, {HTTP_CONSTANTS}.text_xml, {HTTP_CONSTANTS}.text_plain>> - l_format_id := ctx.request_accepted_format_id ("format", content_type_supported) - if authenticated (ctx) then - l_full := attached req.query_parameter ("details") as v and then v.is_case_insensitive_equal ("true") - if attached authenticated_identifier (ctx) as log then - l_login := log.as_string_8 - - create h.make - - create s.make_empty - inspect l_format_id - when {HTTP_FORMAT_CONSTANTS}.json then - h.put_content_type_text_plain - s.append_string ("{ %"login%": %"" + l_login + "%" }%N") - when {HTTP_FORMAT_CONSTANTS}.xml then - h.put_content_type_text_xml - s.append_string ("" + l_login + "%N") - when {HTTP_FORMAT_CONSTANTS}.text then -- Default - h.put_content_type_text_plain - s.append_string ("login: " + l_login + "%N") - else - execute_content_type_not_allowed (req, res, content_type_supported, - <<{HTTP_FORMAT_CONSTANTS}.json_name, {HTTP_FORMAT_CONSTANTS}.html_name, {HTTP_FORMAT_CONSTANTS}.xml_name, {HTTP_FORMAT_CONSTANTS}.text_name>> - ) - end - if not s.is_empty then - res.set_status_code ({HTTP_STATUS_CODE}.ok) - res.put_header_text (h.string) - res.put_string (s) - end - else - send_error (req.path_info, 0, "User/password unknown", Void, ctx, req, res) - end - else - send_error (req.path_info, 0, "Authentication rejected", Void, ctx, req, res) - end - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/app/app_test.e b/draft/library/server/request/rest/tests/src/app/app_test.e deleted file mode 100644 index 205d72c3..00000000 --- a/draft/library/server/request/rest/tests/src/app/app_test.e +++ /dev/null @@ -1,97 +0,0 @@ -note - description: "Summary description for {APP_TEST}." - date: "$Date$" - revision: "$Revision$" - -class - APP_TEST - -inherit - APP_REQUEST_HANDLER - redefine - initialize - end - -create - make - -feature {NONE} -- Initialization - - make - do - description := "Return a simple test output " - initialize - end - - initialize - do - Precursor - enable_request_method_get - enable_format_text - end - -feature -- Access - - authentication_required (req: WSF_REQUEST): BOOLEAN - do - end - -feature -- Execution - - execute_application (ctx: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - -- Execute request handler - local - s: STRING - h: HTTP_HEADER - do - create h.make - h.put_content_type_text_plain - - create s.make_empty - s.append_string ("test") - if attached {WSF_STRING} req.meta_variable ("REQUEST_COUNT") as l_request_count_val then - s.append_string ("(request_count="+ l_request_count_val.string +")%N") - end - --- ctx.request_format_id ("format", Void) - - if attached ctx.request_accepted_format ("format", Void) as l_format then - s.append_string (" format=" + l_format + "%N") - end - - if attached ctx.string_item (req, "op") as l_op then - s.append_string (" op=" + l_op) - if l_op.same_string ("crash") then - (create {DEVELOPER_EXCEPTION}).raise - elseif l_op.starts_with ("env") then - s.append_string ("%N%NAll variables:") - s.append (wgi_value_iteration_to_string (req.items, False)) - s.append_string ("
script_url(%"" + req.path_info + "%")=" + req.script_url (req.path_info) + "%N") --- if attached ctx.http_authorization_login_password as t then --- s.append_string ("Check login=" + t.login + "
%N") --- end - if authenticated (ctx) and then attached authenticated_identifier (ctx) as l_login then - s.append_string ("Authenticated: login=" + l_login.as_string_8 + "
%N") - end - end - else - s.append ("%N Try " + ctx.script_absolute_url (req, req.path_info + "?op=env") + " to display all variables%N") - s.append ("%N Try " + ctx.script_absolute_url (req, req.path_info + "?op=crash") + " to demonstrate exception trace%N") - end - - res.set_status_code (200) - res.put_header_text (h.string) - res.put_string (s) - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/app_server.e b/draft/library/server/request/rest/tests/src/app_server.e deleted file mode 100644 index 9baaf7e0..00000000 --- a/draft/library/server/request/rest/tests/src/app_server.e +++ /dev/null @@ -1,150 +0,0 @@ -note - description: "Summary description for {APP_SERVER}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - APP_SERVER - -inherit - APP_SERVICE - redefine - create_router, - execute - end - - REST_SERVICE_GATEWAY - WSF_REQUEST_UTILITY - -create - make - -feature {NONE} -- Initialization - - make - -- Initialize `Current'. - do - initialize_router - build_gateway_and_launch - end - -feature {NONE} -- Handlers - - create_router - -- Create `router' - do - create router.make (5) - end - - setup_router - local - h: APP_REQUEST_HANDLER - rah: APP_REQUEST_AGENT_HANDLER - gh: APP_REQUEST_ROUTING_HANDLER - do - create {APP_ACCOUNT_VERIFY_CREDENTIAL} h.make - router.handle ("/account/verify_credentials.{format}", h) - - - create {APP_TEST} h.make - - create gh.make (4) - router.handle ("/test", gh) --- gh.map ("/test", h) - gh.router.handle ("/test/{op}", h) - gh.router.handle ("/test.{format}", h) - gh.router.handle ("/test.{format}/{op}", h) - - - create rah.make (agent execute_exit_application) - h := rah - h.set_description ("tell the REST server to exit (in FCGI context, this is used to reload the FCGI server)") - h.enable_request_method_get - h.enable_format_text - router.handle ("/debug/exit", h) - router.handle ("/debug/exit.{format}", h) - end - -feature -- Execution - - execute (req: WSF_REQUEST; res: WSF_RESPONSE) - do - request_count := request_count + 1 - Precursor (req, res) - end - - execute_default (req: WSF_REQUEST; res: WSF_RESPONSE) - local - rqst_uri: detachable STRING - l_path_info: detachable STRING - h: HTTP_HEADER - s: STRING - l_redir_url: STRING - do - create h.make --- h.put_refresh (ctx.script_url ("/doc"), 2) - l_redir_url := "/doc" - h.put_refresh (l_redir_url, 2) - h.put_content_type_text_html - create s.make_empty - s := "Request [" + req.path_info + "] is not available.
%N"; - s.append ("You are being redirected to /doc in 2 seconds ...%N") - h.put_content_length (s.count) - res.set_status_code ({HTTP_STATUS_CODE}.temp_redirect) - res.put_header_text (h.string) - res.put_string (s) - end - - request_count: INTEGER - --- execute_rescue (ctx: like new_request_context) --- -- Execute the default rescue behavior --- do --- execute_exception_trace (ctx) --- end - -feature -- Implementation - --- execute_exception_trace (ctx: like new_request_context) --- local --- h: HTTP_HEADER --- s: STRING --- do --- create h.make --- h.put_content_type_text_plain --- ctx.output.put_string (h.string) --- ctx.output.put_string ("Error occurred .. rq="+ request_count.out +"%N") - --- if attached (create {EXCEPTIONS}).exception_trace as l_trace then --- ctx.output.put_string ("
" + l_trace + "
") --- end --- h.recycle --- exit_with_code (-1) --- end - - execute_exit_application (ctx: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - local - s: STRING - do - res.set_status_code (200) - res.put_header (200, <<["Content-Type", "text/html"]>>) - - create s.make_empty - s.append_string ("Exited") - s.append_string (" start again%N") - res.put_string (s) - exit_with_code (0) - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/gateway/cgi/rest_service_gateway.e b/draft/library/server/request/rest/tests/src/gateway/cgi/rest_service_gateway.e deleted file mode 100644 index 1d09741e..00000000 --- a/draft/library/server/request/rest/tests/src/gateway/cgi/rest_service_gateway.e +++ /dev/null @@ -1,24 +0,0 @@ -deferred class - REST_SERVICE_GATEWAY - -inherit - WSF_SERVICE - -feature -- Access - - build_gateway_and_launch - local - cgi: WGI_CGI_CONNECTOR - do - create cgi.make (to_wgi_service) - cgi.launch - end - - gateway_name: STRING = "CGI" - - exit_with_code (a_code: INTEGER) - do - (create {EXCEPTIONS}).die (a_code) - end - -end diff --git a/draft/library/server/request/rest/tests/src/gateway/fcgi/rest_service_gateway.e b/draft/library/server/request/rest/tests/src/gateway/fcgi/rest_service_gateway.e deleted file mode 100644 index 6f5c32b7..00000000 --- a/draft/library/server/request/rest/tests/src/gateway/fcgi/rest_service_gateway.e +++ /dev/null @@ -1,35 +0,0 @@ -deferred class - REST_SERVICE_GATEWAY - -inherit - WSF_SERVICE - -feature -- Access - - build_gateway_and_launch - local - libfcgi: WGI_LIBFCGI_CONNECTOR - do - create libfcgi.make (to_wgi_service) - libfcgi.launch - end - - gateway_name: STRING = "libFCGI" - - exit_with_code (a_code: INTEGER) - do - (create {EXCEPTIONS}).die (a_code) - end - - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/gateway/nino/rest_service_gateway.e b/draft/library/server/request/rest/tests/src/gateway/nino/rest_service_gateway.e deleted file mode 100644 index d2cf85ee..00000000 --- a/draft/library/server/request/rest/tests/src/gateway/nino/rest_service_gateway.e +++ /dev/null @@ -1,44 +0,0 @@ -deferred class - REST_SERVICE_GATEWAY - -inherit - WSF_SERVICE - -feature -- Access - - build_gateway_and_launch - local - app: NINO_SERVICE - port_number: INTEGER - base_url: STRING - do - port_number := 8080 - base_url := "" - debug ("nino") - print ("Example: start a Nino web server on port " + port_number.out + - ", %Nand reply Hello World for any request such as http://localhost:" + port_number.out + "/" + base_url + "%N") - end - create app.make_custom (to_wgi_service, base_url) - app.force_single_threaded - - app.listen (port_number) - end - - gateway_name: STRING = "NINO" - - exit_with_code (a_code: INTEGER) - do - (create {EXCEPTIONS}).die (a_code) - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/handler/app_request_agent_handler.e b/draft/library/server/request/rest/tests/src/handler/app_request_agent_handler.e deleted file mode 100644 index c7aa847b..00000000 --- a/draft/library/server/request/rest/tests/src/handler/app_request_agent_handler.e +++ /dev/null @@ -1,51 +0,0 @@ -note - description: "Summary description for REST_REQUEST_AGENT_HANDLER." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - APP_REQUEST_AGENT_HANDLER - -inherit - APP_REQUEST_HANDLER --- undefine --- execute, pre_execute, post_execute --- end - - REST_REQUEST_AGENT_HANDLER [APP_REQUEST_HANDLER_CONTEXT] - undefine - execute --- authenticated - end - -create - make - -feature -- Access - - execute_application (ctx: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - do - execute (ctx, req, res) - end - - authentication_required (req: WSF_REQUEST): BOOLEAN - -- Is authentication required - -- might depend on the request environment - -- or the associated resources - do - Result := False - end - - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/handler/app_request_handler.e b/draft/library/server/request/rest/tests/src/handler/app_request_handler.e deleted file mode 100644 index 450d2292..00000000 --- a/draft/library/server/request/rest/tests/src/handler/app_request_handler.e +++ /dev/null @@ -1,85 +0,0 @@ -note - description : "Objects that ..." - date : "$Date$" - revision : "$Revision$" - -deferred class - APP_REQUEST_HANDLER - -inherit - REST_REQUEST_HANDLER [APP_REQUEST_HANDLER_CONTEXT] - redefine - authenticated - end - - APP_REQUEST_HELPER - -feature {NONE} -- Initialization - - initialize - -- Initialize various attributes - do - end - -feature {NONE} -- Implementation - - wgi_value_iteration_to_string (v: ITERABLE [WSF_VALUE]; using_pre: BOOLEAN): STRING_8 - do - create Result.make (100) - if using_pre then - Result.append ("
")
-			end
-			across
-				 v as cur
-			loop
-				Result.append_string (cur.item.name.as_string_8 + " = " + cur.item.string_representation.as_string_8 + "%N")
-			end
-			if using_pre then
-				Result.append ("
") - end - end - -feature -- Auth - - authenticated (ctx: APP_REQUEST_HANDLER_CONTEXT): BOOLEAN - -- Is authenticated? - do - --| To redefine if needed - if attached ctx.request.http_authorization as l_http_authorization then - Result := True - end - end - - authenticated_identifier (ctx: APP_REQUEST_HANDLER_CONTEXT): detachable READABLE_STRING_32 - do - if attached ctx.request.http_authorization as l_http_authorization then - Result := "foo" -- Implement it as you want - end - end - -feature -- Helpers - - format_id (s: detachable STRING): INTEGER - do - Result := {HTTP_FORMAT_CONSTANTS}.text - if s /= Void then - Result := format_constants.format_id (s) - end - end - - exit_with_code (a_code: INTEGER) - do - (create {EXCEPTIONS}).die (a_code) - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/handler/app_request_handler_context.e b/draft/library/server/request/rest/tests/src/handler/app_request_handler_context.e deleted file mode 100644 index d8a19d11..00000000 --- a/draft/library/server/request/rest/tests/src/handler/app_request_handler_context.e +++ /dev/null @@ -1,26 +0,0 @@ -note - description : "Objects that ..." - author : "$Author$" - date : "$Date$" - revision : "$Revision$" - -class - APP_REQUEST_HANDLER_CONTEXT - -inherit - REST_REQUEST_URI_TEMPLATE_HANDLER_CONTEXT - -create - make - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/handler/app_request_helper.e b/draft/library/server/request/rest/tests/src/handler/app_request_helper.e deleted file mode 100644 index 569f9eec..00000000 --- a/draft/library/server/request/rest/tests/src/handler/app_request_helper.e +++ /dev/null @@ -1,101 +0,0 @@ -note - description: "Summary description for {APP_REQUEST_HELPER}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - APP_REQUEST_HELPER - -feature -- Helpers - - send_error (a_path: STRING; a_error_id: INTEGER; a_error_name: STRING; a_error_message: detachable STRING; ctx: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - local - s: STRING - i,nb: INTEGER - rep_data: REST_RESPONSE - do - res.set_status_code ({HTTP_STATUS_CODE}.expectation_failed) - create rep_data.make (a_path) - rep_data.headers.put_content_type_text_plain - - create s.make_empty - inspect ctx.accepted_format_id - when {HTTP_FORMAT_CONSTANTS}.json then - rep_data.headers.put_content_type_text_plain - s := "{%"application%": %"" + a_path + "%"" - s.append_string (", %"error%": {") - s.append_string ("%"id%": " + a_error_id.out) - s.append_string (",%"name%": %"" + a_error_name + "%"") - if a_error_message /= Void then - s.append_string (",%"message%": %"") - - if a_error_message.has ('%N') then - from - i := s.count - s.append_string (a_error_message) - nb := s.count - until - i > nb - loop - inspect s[i] - when '%R' then - if s.valid_index (i+1) and then s[i+1] = '%N' then - s[i] := '\' - s[i+1] := 'n' - i := i + 1 - end - when '%N' then - s.insert_character ('\', i) - s[i] := 'n' - else - end - i := i + 1 - end - else - s.append_string (a_error_message) - end - s.append_string ("%"") - end - - s.append_string ("}") -- end error - s.append_string ("}") -- end global object - rep_data.set_message (s) - when {HTTP_FORMAT_CONSTANTS}.xml then - rep_data.headers.put_content_type_text_xml - s := "" - if a_error_message /= Void then - s.append_string (a_error_message) - end - s.append_string ("") - rep_data.set_message (s) - when {HTTP_FORMAT_CONSTANTS}.html then - rep_data.headers.put_content_type_text_html - s := "application: " + a_path + "
%NError (" + a_error_id.out + ") %"" + a_error_name + "%"
%N" - if a_error_message /= Void then - s.append_string ("
" + a_error_message + "
") - end - rep_data.set_message (s) - when {HTTP_FORMAT_CONSTANTS}.text then -- Default - s := "Application: " + a_path + "
%N" - s.append_string ("Error (" + a_error_id.out + ") %"" + a_error_name + "%"%N") - if a_error_message /= Void then - s.append_string ("%T" + a_error_message + "%N") - end - rep_data.set_message (s) - end - res.send (rep_data) - rep_data.recycle - end - -note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/handler/app_request_routing_handler.e b/draft/library/server/request/rest/tests/src/handler/app_request_routing_handler.e deleted file mode 100644 index 48077c49..00000000 --- a/draft/library/server/request/rest/tests/src/handler/app_request_routing_handler.e +++ /dev/null @@ -1,49 +0,0 @@ -note - description: "Summary description for {APP_REQUEST_ROUTING_HANDLER}." - author: "" - date: "$Date$" - revision: "$Revision$" - -class - APP_REQUEST_ROUTING_HANDLER - -inherit - APP_REQUEST_HANDLER - rename - execute as uri_template_execute - undefine - uri_template_execute - end - - WSF_URI_TEMPLATE_ROUTING_CONTEXT_HANDLER [APP_REQUEST_HANDLER_CONTEXT] - -create - make - -feature -- Access - - authentication_required (req: WSF_REQUEST): BOOLEAN - -- Is authentication required - -- might depend on the request environment - -- or the associated resources - do - end - -feature -- Execution - - execute_application (ctx: APP_REQUEST_HANDLER_CONTEXT; req: WSF_REQUEST; res: WSF_RESPONSE) - do - uri_template_execute (ctx, req, res) - end - -;note - copyright: "Copyright (c) 1984-2011, 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/draft/library/server/request/rest/tests/src/handler/app_service.e b/draft/library/server/request/rest/tests/src/handler/app_service.e deleted file mode 100644 index f77177b9..00000000 --- a/draft/library/server/request/rest/tests/src/handler/app_service.e +++ /dev/null @@ -1,24 +0,0 @@ -note - description: "Summary description for {APP_SERVICE}." - author: "" - date: "$Date$" - revision: "$Revision$" - -deferred class - APP_SERVICE - -inherit - REST_SERVICE_I [APP_REQUEST_HANDLER_CONTEXT] - - -;note - copyright: "Copyright (c) 1984-2011, 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