Updated or added timestamp to obsolete and fixme messages.
Fixed ecf file exclusion for .svn and .git . Cosmetic changed.
This commit is contained in:
@@ -3,11 +3,11 @@
|
||||
<target name="http_client">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option debug="false" warning="true">
|
||||
<option warning="true">
|
||||
</option>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||
<library name="curl" location="$ISE_LIBRARY\library\cURL\cURL.ecf">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="libcurl_http_client">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="net_http_client">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -13,7 +13,7 @@ note
|
||||
Note that any value set in this context class overrides conflicting value eventually
|
||||
set in associated HTTP_CLIENT_SESSION.
|
||||
|
||||
Warning: for now [2012-May], you can have only one of the following data
|
||||
Warning: for now [2012-05-31], you can have only one of the following data
|
||||
- form_parameters
|
||||
- or upload_data
|
||||
- or upload_filename
|
||||
|
||||
@@ -9,7 +9,7 @@ class
|
||||
LIBCURL_UPLOAD_FILE_READ_FUNCTION
|
||||
|
||||
obsolete
|
||||
"Use LIBCURL_CUSTOM_FUNCTION [2013-apr-04]"
|
||||
"Use LIBCURL_CUSTOM_FUNCTION [2017-05-31]"
|
||||
|
||||
inherit
|
||||
LIBCURL_DEFAULT_FUNCTION
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
<target name="test_http_client">
|
||||
<root class="TEST" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
|
||||
</option>
|
||||
<capability>
|
||||
<concurrency support="none"/>
|
||||
<concurrency support="thread"/>
|
||||
</capability>
|
||||
<variable name="netssl_http_client_enabled" value="false"/>
|
||||
<variable name="net_http_client_disabled" value="false"/>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="http_network">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="conneg">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="test" uuid="7860561C-779A-4E45-A7B9-06A1E0E984E8">
|
||||
<target name="test">
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="test_conneg" uuid="7860561C-779A-4E45-A7B9-06A1E0E984E8">
|
||||
<target name="test_conneg">
|
||||
<root class="APPLICATION" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="http">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -114,14 +114,14 @@ feature -- Obsolete query
|
||||
|
||||
include_max_age: BOOLEAN
|
||||
obsolete
|
||||
"Use `max_age > 0' [April-2016]"
|
||||
"Use `max_age > 0' [2017-05-31]"
|
||||
do
|
||||
Result := max_age > 0
|
||||
end
|
||||
|
||||
include_expires: BOOLEAN
|
||||
obsolete
|
||||
"Use `expires /= Void' [April-2016]"
|
||||
"Use `expires /= Void' [2017-05-31]"
|
||||
do
|
||||
Result := expiration /= Void
|
||||
end
|
||||
@@ -133,7 +133,7 @@ feature -- Obsolete element change
|
||||
-- Set `expires to void'
|
||||
-- Set-Cookie will include only Max-Age attribute and not Expires.
|
||||
obsolete
|
||||
"Uset `set_max_age' and `unset_*' features to add or remove the attributes from the response header [April-2016]"
|
||||
"Uset `set_max_age' and `unset_*' features to add or remove the attributes from the response header [2017-05-31]"
|
||||
do
|
||||
max_age := 1
|
||||
expiration := Void
|
||||
@@ -147,7 +147,7 @@ feature -- Obsolete element change
|
||||
-- Set `expiration to a default date'
|
||||
-- Set-Cookie will include only Expires attribute and not Max_Age.
|
||||
obsolete
|
||||
"Use `set_expiration' and `unset_*' features to add or remove the attribute from the response header [April-2016]"
|
||||
"Use `set_expiration' and `unset_*' features to add or remove the attribute from the response header [2017-05-31]"
|
||||
do
|
||||
max_age := -1
|
||||
set_expiration_date (create {DATE_TIME}.make_now_utc)
|
||||
@@ -343,7 +343,7 @@ feature {NONE} -- Constants
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2016, Jocelyn Fiat, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -118,7 +118,7 @@ feature -- Access
|
||||
header_named_value (a_name: READABLE_STRING_8): like item
|
||||
-- First header item found for `a_name' if any
|
||||
obsolete
|
||||
"Use `item' [2014-03]"
|
||||
"Use `item' [2017-05-31]"
|
||||
do
|
||||
Result := item (a_name)
|
||||
end
|
||||
|
||||
@@ -1,14 +1,18 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="tests" uuid="0582ACC2-11D8-4FE5-888D-61837BA8F43E">
|
||||
<target name="tests">
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="http_tests" uuid="0582ACC2-11D8-4FE5-888D-61837BA8F43E">
|
||||
<target name="http_tests">
|
||||
<root class="AUTOTEST" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
<assertions precondition="true" postcondition="true" check="true"/>
|
||||
</option>
|
||||
<capability>
|
||||
<concurrency support="none" use="none"/>
|
||||
</capability>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||
<library name="http" location="..\http.ecf" readonly="false">
|
||||
<option>
|
||||
|
||||
6
library/network/protocol/http/tests/tests.rc
Normal file
6
library/network/protocol/http/tests/tests.rc
Normal file
@@ -0,0 +1,6 @@
|
||||
#include <windows.h>
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
1 "This Program was made using EiffelStudio using Visual Studio C++"
|
||||
END
|
||||
@@ -2,8 +2,8 @@
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="ws_client" uuid="AF6EDC56-D7B4-4E1F-A62B-40EBED3D93DF">
|
||||
<target name="common">
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#include <windows.h>
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
1 "This Program was made using EiffelStudio using Visual Studio C++"
|
||||
END
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="web_socket_client">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="echo_websocket_server" uuid="C9B3DA5F-DF0D-4C0F-924A-130B5C1E6604">
|
||||
<target name="common">
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
@@ -30,7 +30,7 @@
|
||||
<target name="echo_websocket_server_mt" extends="common">
|
||||
<root class="APPLICATION" feature="make_and_launch"/>
|
||||
<capability>
|
||||
<concurrency use="thread"/>
|
||||
<concurrency support="thread" use="thread"/>
|
||||
</capability>
|
||||
</target>
|
||||
<target name="echo_websocket_server_mt_ssl" extends="echo_websocket_server_mt">
|
||||
|
||||
60
library/network/websocket/server/server.py
Normal file
60
library/network/websocket/server/server.py
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import socket, threading, time, re, hashlib, base64
|
||||
|
||||
magicguid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
|
||||
port = 9999
|
||||
|
||||
|
||||
def printHeaders(headers):
|
||||
print "Headers received from WebSocket client"
|
||||
for key in headers.keys():
|
||||
print key, headers[key]
|
||||
print
|
||||
|
||||
|
||||
def doHandShake(conn, dataheaders):
|
||||
headers = dict(re.findall(r"(?P<name>.*?): (?P<value>.*?)\r\n", dataheaders))
|
||||
printHeaders(headers)
|
||||
key = headers['Sec-WebSocket-Key']
|
||||
print "key", key
|
||||
key += magicguid
|
||||
hashkey = hashlib.sha1()
|
||||
hashkey.update(key)
|
||||
key = base64.b64encode(hashkey.digest())
|
||||
handshake = "HTTP/1.1 101 Switching Protocols\r\n"
|
||||
handshake += "Upgrade: websocket\r\n"
|
||||
handshake += "Connection: Upgrade\r\n"
|
||||
handshake += "Sec-WebSocket-Accept: " + key + "\r\n"
|
||||
# end of header empty line
|
||||
handshake += "\r\n"
|
||||
print
|
||||
print handshake
|
||||
conn.send(handshake)
|
||||
|
||||
|
||||
def handle(conn):
|
||||
time.sleep(1)
|
||||
conn.send('\x81\x0BHello World')
|
||||
time.sleep(1)
|
||||
conn.send('\x81\x12How are you there?')
|
||||
time.sleep(1)
|
||||
conn.close()
|
||||
|
||||
|
||||
s = socket.socket()
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
s.bind(('127.0.0.1', port))
|
||||
print "Server listening on port", port
|
||||
s.listen(1)
|
||||
while 1:
|
||||
try:
|
||||
conn, address = s.accept()
|
||||
dataheaders = conn.recv(4096)
|
||||
doHandShake(conn, dataheaders)
|
||||
print "WebSocket open"
|
||||
threading.Thread(target=handle, args=(conn,)).start()
|
||||
except KeyboardInterrupt:
|
||||
print
|
||||
print "Closing now"
|
||||
exit(0)
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="websocket_server">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -55,7 +55,7 @@ feature -- Access
|
||||
|
||||
body: like content
|
||||
obsolete
|
||||
"Use `content' [June/2015]"
|
||||
"Use `content'. [2017-05-31]"
|
||||
do
|
||||
Result := body
|
||||
end
|
||||
@@ -69,6 +69,19 @@ feature -- Status report
|
||||
across to_addresses as ic all is_valid_address (ic.item) end
|
||||
end
|
||||
|
||||
has_header (a_header_name: READABLE_STRING_8): BOOLEAN
|
||||
-- Has additional header `a_header_name'?
|
||||
-- Warning: it checks only `additional_header_lines'!
|
||||
local
|
||||
h_colon: STRING
|
||||
do
|
||||
if attached additional_header_lines as lst then
|
||||
create h_colon.make_from_string (a_header_name)
|
||||
h_colon.append_character (':')
|
||||
Result := across lst as ic some ic.item.starts_with (h_colon) end
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Change
|
||||
|
||||
set_date (d: like date)
|
||||
@@ -158,21 +171,6 @@ feature -- Header manipulation
|
||||
lst.force (a_line)
|
||||
end
|
||||
|
||||
feature -- Status report
|
||||
|
||||
has_header (a_header_name: READABLE_STRING_8): BOOLEAN
|
||||
-- Has additional header `a_header_name'?
|
||||
-- Warning: it checks only `additional_header_lines'!
|
||||
local
|
||||
h_colon: STRING
|
||||
do
|
||||
if attached additional_header_lines as lst then
|
||||
create h_colon.make_from_string (a_header_name)
|
||||
h_colon.append_character (':')
|
||||
Result := across lst as ic some ic.item.starts_with (h_colon) end
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Reset
|
||||
|
||||
reset
|
||||
@@ -209,8 +207,6 @@ feature -- Conversion
|
||||
end
|
||||
|
||||
header: STRING_8
|
||||
local
|
||||
hdate: HTTP_DATE
|
||||
do
|
||||
create Result.make (20)
|
||||
if attached reply_to_address as l_reply_to then
|
||||
@@ -259,8 +255,7 @@ feature -- Conversion
|
||||
Result.append (subject)
|
||||
Result.append_character ('%N')
|
||||
Result.append ("Date: ")
|
||||
create hdate.make_from_date_time (date)
|
||||
hdate.append_to_rfc1123_string (Result)
|
||||
;(create {HTTP_DATE}.make_from_date_time (date)).append_to_rfc1123_string (Result)
|
||||
Result.append_character ('%N')
|
||||
if attached additional_header_lines as l_lines and then
|
||||
not l_lines.is_empty
|
||||
@@ -285,11 +280,8 @@ feature -- Helpers
|
||||
Result := add.has ('@')
|
||||
end
|
||||
|
||||
invariant
|
||||
-- invariant_clause: True
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="notification_email">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -43,11 +43,8 @@ feature {NONE} -- Initialization
|
||||
feature -- Status
|
||||
|
||||
is_available: BOOLEAN
|
||||
local
|
||||
f: RAW_FILE
|
||||
do
|
||||
create f.make_with_path (executable_path)
|
||||
Result := f.exists
|
||||
Result := (create {RAW_FILE}.make_with_path (executable_path)).exists
|
||||
end
|
||||
|
||||
feature -- Change
|
||||
@@ -108,7 +105,7 @@ feature -- Basic operation
|
||||
if attached arguments as l_args then
|
||||
args := l_args.twin
|
||||
else
|
||||
if attached {RAW_FILE} new_temporary_file (generator) as f then
|
||||
if attached new_temporary_file (generator) as f then
|
||||
f.create_read_write
|
||||
f.put_string (a_email.message)
|
||||
f.close
|
||||
@@ -196,10 +193,8 @@ feature {NONE} -- Implementation
|
||||
result_creatable: Result.is_creatable
|
||||
end
|
||||
|
||||
invariant
|
||||
|
||||
note
|
||||
copyright: "2011-2016, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -4,9 +4,8 @@ note
|
||||
|
||||
Note: it is based on EiffelNet {SMTP_PROTOCOL} implementation, and may not be complete.
|
||||
]"
|
||||
author: "$Author: jfiat $"
|
||||
date: "$Date: 2015-06-30 11:07:17 +0200 (mar., 30 juin 2015) $"
|
||||
revision: "$Revision: 97586 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
NOTIFICATION_SMTP_MAILER
|
||||
@@ -57,15 +56,12 @@ feature {NONE} -- Initialization
|
||||
|
||||
initialize
|
||||
-- Initialize service.
|
||||
local
|
||||
l_address_factory: INET_ADDRESS_FACTORY
|
||||
do
|
||||
if attached username as u then
|
||||
create smtp_protocol.make (smtp_host, u)
|
||||
else
|
||||
-- Get local host name needed in creation of SMTP_PROTOCOL.
|
||||
create l_address_factory
|
||||
create smtp_protocol.make (smtp_host, l_address_factory.create_localhost.host_name)
|
||||
create smtp_protocol.make (smtp_host, (create {INET_ADDRESS_FACTORY}).create_localhost.host_name)
|
||||
end
|
||||
if smtp_port > 0 then
|
||||
smtp_protocol.set_default_port (smtp_port)
|
||||
@@ -98,9 +94,7 @@ feature -- Basic operation
|
||||
local
|
||||
l_email: EMAIL
|
||||
h: STRING
|
||||
k,v: STRING
|
||||
i: INTEGER
|
||||
hdate: HTTP_DATE
|
||||
do
|
||||
create l_email.make_with_entry (a_email.from_address, addresses_to_header_line_value (a_email.to_addresses))
|
||||
if attached a_email.reply_to_address as l_reply_to then
|
||||
@@ -117,8 +111,7 @@ feature -- Basic operation
|
||||
l_email.add_header_entry ({EMAIL_CONSTANTS}.H_subject, a_email.subject)
|
||||
|
||||
create h.make_empty
|
||||
create hdate.make_from_date_time (a_email.date)
|
||||
hdate.append_to_rfc1123_string (h)
|
||||
;(create {HTTP_DATE}.make_from_date_time (a_email.date)).append_to_rfc1123_string (h)
|
||||
l_email.add_header_entry ("Date", h)
|
||||
|
||||
if attached a_email.additional_header_lines as lst then
|
||||
@@ -128,9 +121,7 @@ feature -- Basic operation
|
||||
h := ic.item
|
||||
i := h.index_of (':', 1)
|
||||
if i > 0 then
|
||||
k := h.head (i - 1)
|
||||
v := h.substring (i + 1, h.count)
|
||||
l_email.add_header_entry (k, v)
|
||||
l_email.add_header_entry (h.head (i - 1), h.substring (i + 1, h.count))
|
||||
else
|
||||
check is_header_line: False end
|
||||
end
|
||||
@@ -181,7 +172,7 @@ feature {NONE} -- Implementation
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
note
|
||||
description: "Store emails in specific folder."
|
||||
date: "$Date: 2017-03-08 10:34:57 +0100 (mer., 08 mars 2017) $"
|
||||
revision: "$Revision: 99935 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
NOTIFICATION_EMAIL_DIRECTORY_STORAGE
|
||||
@@ -41,7 +41,7 @@ feature -- Storage
|
||||
-- Store `a_email'.
|
||||
local
|
||||
retried: BOOLEAN
|
||||
f,w: RAW_FILE
|
||||
w: RAW_FILE
|
||||
dt: DATE_TIME
|
||||
p: PATH
|
||||
fn: STRING
|
||||
@@ -72,8 +72,7 @@ feature -- Storage
|
||||
p := p.extended (fn)
|
||||
|
||||
from
|
||||
create f.make_with_path (p)
|
||||
w := new_file_opened_for_writing (f)
|
||||
w := new_file_opened_for_writing (create {RAW_FILE}.make_with_path (p))
|
||||
until
|
||||
w /= Void or i > 100
|
||||
loop
|
||||
@@ -113,14 +112,15 @@ feature -- Storage
|
||||
local
|
||||
retried: BOOLEAN
|
||||
do
|
||||
if not retried then
|
||||
if not f.exists then
|
||||
f.open_write
|
||||
if f.is_open_write then
|
||||
Result := f
|
||||
elseif not f.is_closed then
|
||||
f.close
|
||||
end
|
||||
if
|
||||
not retried and then
|
||||
not f.exists
|
||||
then
|
||||
f.open_write
|
||||
if f.is_open_write then
|
||||
Result := f
|
||||
elseif not f.is_closed then
|
||||
f.close
|
||||
end
|
||||
end
|
||||
ensure
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<target name="demo">
|
||||
<root class="APPLICATION" feature="make_and_launch"/>
|
||||
<file_rule>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="openid">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="tests" uuid="A36A6621-CF4A-4FB6-8CB2-D420D630A134">
|
||||
<target name="tests">
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="openid_consumer_tests" uuid="A36A6621-CF4A-4FB6-8CB2-D420D630A134">
|
||||
<target name="openid_consumer_tests">
|
||||
<root class="APPLICATION" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<target name="basic">
|
||||
<root class="DEMO_BASIC" feature="make_and_launch"/>
|
||||
<file_rule>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/CVS$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="http_authorization">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="testing" uuid="1AEF36BD-FB72-4B52-8845-4EF4AC7B709A">
|
||||
<target name="testing">
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="http_auth_testing" uuid="1AEF36BD-FB72-4B52-8845-4EF4AC7B709A">
|
||||
<target name="http_auth_testing">
|
||||
<root class="ANY" feature="default_create"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -2,8 +2,8 @@ note
|
||||
description: "[
|
||||
Standalone Web Server connector.
|
||||
]"
|
||||
date: "$Date: 2016-08-06 13:34:52 +0200 (sam., 06 août 2016) $"
|
||||
revision: "$Revision: 99106 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
WGI_STANDALONE_CONNECTOR [G -> WGI_EXECUTION create make end]
|
||||
@@ -110,7 +110,7 @@ feature -- Callbacks
|
||||
|
||||
on_launched_actions: ACTION_SEQUENCE [TUPLE [WGI_STANDALONE_CONNECTOR [WGI_EXECUTION]]]
|
||||
-- Actions triggered when launched.
|
||||
-- WARNING: only supported for now with SCOOP concurrency mode. [2016-oct-07]
|
||||
-- WARNING: only supported for now with SCOOP concurrency mode. [2016-10-07]
|
||||
|
||||
feature -- Event
|
||||
|
||||
@@ -201,7 +201,7 @@ feature -- Server
|
||||
-- Shutdown web server listening.
|
||||
do
|
||||
if launched then
|
||||
-- FIXME jfiat [2015/03/27] : prevent multiple calls (otherwise it hangs)
|
||||
-- FIXME: prevent multiple calls (otherwise it hangs) [2015-03-27]
|
||||
separate_shutdown_server_on_controller (controller)
|
||||
end
|
||||
end
|
||||
@@ -213,7 +213,7 @@ feature -- Events
|
||||
require
|
||||
obs.started -- SCOOP wait condition.
|
||||
do
|
||||
-- FIXME: this works only with SCOOP concurrency mode. [2016-oct-07]
|
||||
-- FIXME: this works only with SCOOP concurrency mode. [2016-10-07]
|
||||
if obs.port > 0 then
|
||||
on_launched (obs.port)
|
||||
end
|
||||
@@ -282,9 +282,8 @@ feature {NONE} -- Implementation: element change
|
||||
cfg.set_is_secure (b)
|
||||
end
|
||||
|
||||
|
||||
note
|
||||
copyright: "2011-2016, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="test_connector_standalone" uuid="BA1C9760-8ECD-4182-8354-5D880F2FC81B" library_target="test_connector_standalone">
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="test_connector_standalone" uuid="BA1C9760-8ECD-4182-8354-5D880F2FC81B">
|
||||
<target name="test_standalone_scoop">
|
||||
<root class="TEST_STANDALONE_CONNECTOR" feature="make"/>
|
||||
<option debug="true">
|
||||
|
||||
@@ -54,7 +54,7 @@ feature -- Access
|
||||
|
||||
force_single_threaded: BOOLEAN assign set_force_single_threaded
|
||||
obsolete
|
||||
"Use directly `max_concurrent_connections = 1` [Feb/2017]"
|
||||
"Use directly `max_concurrent_connections = 1` [2017-05-31]"
|
||||
do
|
||||
Result := max_concurrent_connections <= 1
|
||||
end
|
||||
@@ -202,7 +202,7 @@ feature -- Element change
|
||||
-- Force server to handle incoming request in a single thread.
|
||||
-- i.e set max_concurrent_connections to 1!
|
||||
obsolete
|
||||
"Use set_max_concurrent_connections (1) [June/2016]"
|
||||
"Use set_max_concurrent_connections (1) [2017-05-31]"
|
||||
do
|
||||
if v then
|
||||
set_max_concurrent_connections (1)
|
||||
@@ -210,8 +210,8 @@ feature -- Element change
|
||||
set_max_concurrent_connections (default_max_concurrent_connections)
|
||||
end
|
||||
ensure
|
||||
force_single_threaded_set: v implies max_concurrent_connections <= 1
|
||||
not_single_threaded: not v implies max_concurrent_connections > 1
|
||||
force_single_threaded_set: v implies max_concurrent_connections <= 1
|
||||
not_single_threaded: not v implies max_concurrent_connections > 1
|
||||
end
|
||||
|
||||
set_is_verbose (b: BOOLEAN)
|
||||
@@ -340,7 +340,7 @@ feature -- SSL Helpers
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2016, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="httpd">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="eiffelweb" uuid="6A03BC65-BD03-4B68-B51E-2543F9471D42">
|
||||
<target name="eiffelweb">
|
||||
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="test_libfcgi" uuid="6A03BC65-BD03-4B68-B51E-2543F9471D42">
|
||||
<target name="test_libfcgi">
|
||||
<root cluster="application" class="APPLICATION_ROOT" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
|
||||
@@ -60,6 +60,7 @@ feature -- Execution
|
||||
req: WGI_REQUEST_FROM_TABLE
|
||||
res: detachable WGI_RESPONSE_STREAM
|
||||
rescued: BOOLEAN
|
||||
utf: UTF_CONVERTER
|
||||
do
|
||||
if not rescued then
|
||||
a_input.reset
|
||||
@@ -68,14 +69,14 @@ feature -- Execution
|
||||
service.execute (req, res)
|
||||
res.push
|
||||
else
|
||||
if attached (create {EXCEPTION_MANAGER}).last_exception as e and then attached e.exception_trace as l_trace then
|
||||
if attached (create {EXCEPTION_MANAGER}).last_exception as e and then attached e.trace as l_trace then
|
||||
if res /= Void then
|
||||
if not res.status_is_set then
|
||||
res.set_status_code ({HTTP_STATUS_CODE}.internal_server_error, Void)
|
||||
end
|
||||
if res.message_writable then
|
||||
res.put_string ("<pre>")
|
||||
res.put_string (l_trace)
|
||||
res.put_string (utf.string_32_to_utf_8_string_8 (l_trace))
|
||||
res.put_string ("</pre>")
|
||||
end
|
||||
res.push
|
||||
@@ -105,7 +106,7 @@ invariant
|
||||
fcgi_attached: fcgi /= Void
|
||||
|
||||
note
|
||||
copyright: "2011-2013, Eiffel Software and others"
|
||||
copyright: "2011-2017, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<option warning="true">
|
||||
</option>
|
||||
<capability>
|
||||
<concurrency support="thread" use="thread"/>
|
||||
<concurrency support="none"/>
|
||||
</capability>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||
<library name="encoder" location="..\..\..\..\..\..\text\encoder\encoder.ecf"/>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<option warning="true">
|
||||
</option>
|
||||
<capability>
|
||||
<concurrency support="thread" use="thread"/>
|
||||
<concurrency support="none"/>
|
||||
</capability>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||
<library name="connector_nino" location="..\..\..\..\obsolete\v0\ewsgi\connectors\nino\nino.ecf"/>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<option warning="true">
|
||||
</option>
|
||||
<capability>
|
||||
<concurrency support="thread" use="thread"/>
|
||||
<concurrency support="none"/>
|
||||
</capability>
|
||||
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
|
||||
<library name="wsf" location="..\wsf.ecf"/>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_v0">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_extension_v0">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_policy_driven_v0">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_router_context_v0">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_session">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_html_v0">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -122,7 +122,7 @@ feature {NONE} -- Initialization
|
||||
then
|
||||
secure_settings := [l_secure_prot, opts.option_string_32_value ("secure_certificate", Void), opts.option_string_32_value ("secure_certificate_key", Void)]
|
||||
elseif
|
||||
-- OBSOLETE: backward compatible with old settings name [oct/2016].
|
||||
-- OBSOLETE: backward compatible with old settings name [2017-05-31].
|
||||
opts.option_boolean_value ("ssl_enabled", is_secure) and then
|
||||
attached opts.option_string_32_value ("ssl_protocol", "tls_1_2") as ssl_prot
|
||||
then
|
||||
@@ -141,7 +141,7 @@ feature {NONE} -- Initialization
|
||||
force_single_threaded
|
||||
-- Set `single_threaded' to True.
|
||||
obsolete
|
||||
"Use set_max_concurrent_connections (1) [Feb/2017]"
|
||||
"Use set_max_concurrent_connections (1) [2017-05-31]"
|
||||
do
|
||||
set_max_concurrent_connections (1)
|
||||
ensure
|
||||
@@ -238,7 +238,7 @@ feature {NONE} -- Implementation
|
||||
|
||||
single_threaded: BOOLEAN
|
||||
obsolete
|
||||
"Use max_concurrent_connections <= 1 [Feb/2017]"
|
||||
"Use max_concurrent_connections <= 1 [2017-05-31]"
|
||||
do
|
||||
Result := max_concurrent_connections <= 1
|
||||
end
|
||||
@@ -277,7 +277,7 @@ feature -- Status report
|
||||
end
|
||||
|
||||
;note
|
||||
copyright: "2011-2016, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -20,7 +20,7 @@ feature -- Mapping helper: uri
|
||||
map_uri_with_request_methods (a_uri: READABLE_STRING_8; h: WSF_URI_HANDLER; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
-- Map `h' as handler for `a_uri' for request methods `rqst_methods'.
|
||||
obsolete
|
||||
"Use directly `map_uri' [June/2015]"
|
||||
"Use directly `map_uri' [2017-05-31]"
|
||||
do
|
||||
map_uri (a_uri, h, rqst_methods)
|
||||
end
|
||||
@@ -44,7 +44,7 @@ feature -- Mapping helper: uri agent
|
||||
map_uri_agent_with_request_methods (a_uri: READABLE_STRING_8; proc: PROCEDURE [TUPLE [req: WSF_REQUEST; res: WSF_RESPONSE]]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
-- Map `proc' as handler for `a_uri' for request methods `rqst_methods'.
|
||||
obsolete
|
||||
"Use directly `map_uri_agent' [June/2015]"
|
||||
"Use directly `map_uri_agent' [2017-05-31]"
|
||||
do
|
||||
map_uri_agent (a_uri, proc, rqst_methods)
|
||||
end
|
||||
@@ -58,7 +58,7 @@ feature -- Mapping helper: uri agent
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -23,7 +23,7 @@ feature -- Mapping helper: uri template
|
||||
map_uri_template_with_request_methods (a_tpl: READABLE_STRING_8; h: WSF_URI_TEMPLATE_HANDLER; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
-- Map `h' as handler for `a_tpl' for request methods `rqst_methods'.
|
||||
obsolete
|
||||
"Use directly `map_uri_template' [June/2015]"
|
||||
"Use directly `map_uri_template' [2017-05-31]"
|
||||
require
|
||||
a_tpl_attached: a_tpl /= Void
|
||||
h_attached: h /= Void
|
||||
@@ -54,7 +54,7 @@ feature -- Mapping helper: uri template agent
|
||||
map_uri_template_agent_with_request_methods (a_tpl: READABLE_STRING_8; proc: PROCEDURE [TUPLE [req: WSF_REQUEST; res: WSF_RESPONSE]]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
-- Map `proc' as handler for `a_tpl' for request methods `rqst_methods'.
|
||||
obsolete
|
||||
"Use directly `map_uri_template_agent' [June/2015]"
|
||||
"Use directly `map_uri_template_agent' [2017-05-31]"
|
||||
require
|
||||
a_tpl_attached: a_tpl /= Void
|
||||
proc_attached: proc /= Void
|
||||
@@ -72,7 +72,7 @@ feature -- Mapping helper: uri template agent
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -77,7 +77,7 @@ feature -- Mapping
|
||||
map_with_request_methods (a_mapping: WSF_ROUTER_MAPPING; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
-- Map `a_mapping' for request methods `rqst_methods'.
|
||||
obsolete
|
||||
"Use directly `map' [June/2015]"
|
||||
"Use directly `map' [2017-05-31]"
|
||||
require
|
||||
a_mapping_attached: a_mapping /= Void
|
||||
do
|
||||
@@ -135,7 +135,7 @@ feature -- Mapping handler
|
||||
-- Map the mapping created by factory `f' for resource `a_resource'
|
||||
-- and only for request methods `rqst_methods'
|
||||
obsolete
|
||||
"Use directly `handle' [June/2015]"
|
||||
"Use directly `handle' [2017-05-31]"
|
||||
require
|
||||
a_resource_attached: a_resource /= Void
|
||||
f_attached: f /= Void
|
||||
@@ -166,7 +166,7 @@ feature -- Basic operations
|
||||
-- And return the associated handler if mapping found and handler executed.
|
||||
--| Violates CQS
|
||||
obsolete
|
||||
"Use `dispatch' [2013-mar-21]"
|
||||
"Use `dispatch' [2017-05-31]"
|
||||
require
|
||||
req_attached: req /= Void
|
||||
res_attached: res /= Void
|
||||
@@ -601,7 +601,7 @@ invariant
|
||||
pre_execution_actions_attached: pre_execution_actions /= Void
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -24,7 +24,7 @@ feature -- Mapping helper: starts_with
|
||||
|
||||
map_starts_with_request_methods (a_uri: READABLE_STRING_8; h: WSF_STARTS_WITH_CONTEXT_HANDLER [C]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
obsolete
|
||||
"Use directly `map_starts_with' [June-2015]"
|
||||
"Use directly `map_starts_with' [2017-05-31]"
|
||||
require
|
||||
a_uri_attached: a_uri /= Void
|
||||
h_attached: h /= Void
|
||||
@@ -44,7 +44,7 @@ feature -- Mapping helper: starts_with agent
|
||||
|
||||
map_starts_with_agent_with_request_methods (a_uri: READABLE_STRING_8; proc: PROCEDURE [TUPLE [start_path: READABLE_STRING_8; ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE]]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
obsolete
|
||||
"Use directly `map_starts_with_agent' [June-2015]"
|
||||
"Use directly `map_starts_with_agent' [2017-05-31]"
|
||||
require
|
||||
a_uri_attached: a_uri /= Void
|
||||
proc_attached: proc /= Void
|
||||
@@ -53,7 +53,7 @@ feature -- Mapping helper: starts_with agent
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -24,7 +24,7 @@ feature -- Mapping helper: uri
|
||||
|
||||
map_uri_with_request_methods (a_uri: READABLE_STRING_8; h: WSF_URI_CONTEXT_HANDLER [C]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
obsolete
|
||||
"Use directly `map_uri' [June-2015]"
|
||||
"Use directly `map_uri' [2017-05-31]"
|
||||
require
|
||||
a_uri_attached: a_uri /= Void
|
||||
h_attached: h /= Void
|
||||
@@ -44,7 +44,7 @@ feature -- Mapping helper: uri agent
|
||||
|
||||
map_uri_agent_with_request_methods (a_uri: READABLE_STRING_8; proc: PROCEDURE [TUPLE [ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE]]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
obsolete
|
||||
"Use directly `map_uri_agent' [June-2015]"
|
||||
"Use directly `map_uri_agent' [2017-05-31]"
|
||||
require
|
||||
a_uri_attached: a_uri /= Void
|
||||
proc_attached: proc /= Void
|
||||
@@ -53,7 +53,7 @@ feature -- Mapping helper: uri agent
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -24,7 +24,7 @@ feature -- Mapping helper: uri
|
||||
|
||||
map_uri_template_with_request_methods (a_tpl: READABLE_STRING_8; h: WSF_URI_TEMPLATE_CONTEXT_HANDLER [C]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
obsolete
|
||||
"Use directly `make_uri_template' [June/2015]"
|
||||
"Use directly `make_uri_template' [2017-05-31]"
|
||||
require
|
||||
a_tpl_attached: a_tpl /= Void
|
||||
h_attached: h /= Void
|
||||
@@ -44,7 +44,7 @@ feature -- Mapping helper: uri agent
|
||||
|
||||
map_uri_template_agent_with_request_methods (a_tpl: READABLE_STRING_8; proc: PROCEDURE [TUPLE [ctx: C; req: WSF_REQUEST; res: WSF_RESPONSE]]; rqst_methods: detachable WSF_REQUEST_METHODS)
|
||||
obsolete
|
||||
"Use directly `make_uri_template_agent' [June/2015]"
|
||||
"Use directly `make_uri_template_agent' [2017-05-31]"
|
||||
require
|
||||
a_tpl_attached: a_tpl /= Void
|
||||
proc_attached: proc /= Void
|
||||
@@ -53,7 +53,7 @@ feature -- Mapping helper: uri agent
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -16,7 +16,7 @@ feature -- Access
|
||||
|
||||
uuid: READABLE_STRING_8
|
||||
obsolete
|
||||
"Use `id' which is more general [2014-03]"
|
||||
"Use `id' which is more general [2017-05-31]"
|
||||
deferred
|
||||
end
|
||||
|
||||
@@ -116,7 +116,7 @@ feature -- Control
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2014, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -69,7 +69,7 @@ feature -- Access
|
||||
|
||||
frozen string_values: like values
|
||||
obsolete
|
||||
"Use `values' [2012-May-31]"
|
||||
"Use `values' [2017-05-31]"
|
||||
do
|
||||
Result := values
|
||||
end
|
||||
@@ -81,7 +81,7 @@ feature -- Access
|
||||
|
||||
frozen first_string_value: WSF_STRING
|
||||
obsolete
|
||||
"Use `first_value' [2012-May-31]"
|
||||
"Use `first_value' [2017-05-31]"
|
||||
do
|
||||
Result := first_value
|
||||
end
|
||||
@@ -179,7 +179,7 @@ invariant
|
||||
string_values_not_empty: values.count >= 1
|
||||
|
||||
note
|
||||
copyright: "2011-2015, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -2,8 +2,8 @@ note
|
||||
description: "[
|
||||
Table which can contain value indexed by a key
|
||||
]"
|
||||
date: "$Date: 2015-11-05 21:52:56 +0100 (jeu., 05 nov. 2015) $"
|
||||
revision: "$Revision: 98081 $"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
WSF_TABLE
|
||||
@@ -86,7 +86,7 @@ feature -- Access
|
||||
|
||||
frozen first_key: like first_name
|
||||
obsolete
|
||||
"Use first_name [2012-May-31]"
|
||||
"Use first_name [2017-05-31]"
|
||||
do
|
||||
Result := first_name
|
||||
end
|
||||
|
||||
@@ -94,7 +94,7 @@ feature -- Access
|
||||
|
||||
file_name: READABLE_STRING_8
|
||||
obsolete
|
||||
"Use `file_path.name' for unicode support [2013-may]"
|
||||
"Use `file_path.name' for unicode support [2017-05-31]"
|
||||
do
|
||||
Result := file_path.utf_8_name
|
||||
end
|
||||
@@ -230,7 +230,7 @@ invariant
|
||||
status_code_set: status_code /= 0
|
||||
|
||||
note
|
||||
copyright: "2011-2013, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -165,7 +165,7 @@ feature -- Access
|
||||
|
||||
file_name: READABLE_STRING_8
|
||||
obsolete
|
||||
"Use `file_path.name' for unicode support [2013-may]"
|
||||
"Use `file_path.name' for unicode support [2017-05-31]"
|
||||
do
|
||||
Result := file_path.utf_8_name
|
||||
end
|
||||
@@ -320,7 +320,7 @@ feature {NONE} -- Implementation: output
|
||||
end
|
||||
|
||||
note
|
||||
copyright: "2011-2016, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
copyright: "2011-2017, Jocelyn Fiat, Javier Velilla, Olivier Ligot, Colin Adams, Eiffel Software and others"
|
||||
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
||||
source: "[
|
||||
Eiffel Software
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="echo_server">
|
||||
<root class="ECHO_SERVER" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="server">
|
||||
<root class="TEST" feature="make"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option debug="false" warning="true">
|
||||
|
||||
6
library/server/wsf/tests/wsf_tests.rc
Normal file
6
library/server/wsf/tests/wsf_tests.rc
Normal file
@@ -0,0 +1,6 @@
|
||||
#include <windows.h>
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
1 "This Program was made using EiffelStudio using Visual Studio C++"
|
||||
END
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_extension">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_policy_driven">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_router_context">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_session">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -184,7 +184,7 @@ feature -- Change
|
||||
end
|
||||
|
||||
extend_text (t: READABLE_STRING_8)
|
||||
obsolete "Use extend_html_text (..) 2013-Sept-06"
|
||||
obsolete "Use extend_html_text (..) [2017-05-31]"
|
||||
do
|
||||
extend_html_text (t)
|
||||
end
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="wsf_html">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -111,9 +111,9 @@ feature -- Execution
|
||||
i := l_raw_header.substring_index ("%R%N", 1)
|
||||
if i > 0 then
|
||||
-- Skip the first status line.
|
||||
create h.make_from_raw_header_data (l_raw_header.substring (i + 2, l_raw_header.count))
|
||||
create h.make_from_raw_header_data (l_raw_header.substring (i + 2, l_raw_header.count).as_string_8_conversion) -- NOTE: it is string 8 per nature.
|
||||
else
|
||||
create h.make_from_raw_header_data (l_raw_header)
|
||||
create h.make_from_raw_header_data (l_raw_header.as_string_8_conversion)
|
||||
end
|
||||
if attached l_remote_uri.host as l_remote_host then
|
||||
if l_remote_uri.port > 0 then
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="encoder">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="encoder_tests">
|
||||
<root class="TEST_BASE64" feature="default_create"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -50,7 +50,7 @@ feature -- Access
|
||||
create Result.make (l_title)
|
||||
Result.set_description (xml_element_text (x_feed, "subtitle"), "plain")
|
||||
Result.set_id (xml_element_text (x_feed, "id"))
|
||||
Result.set_updated_date_with_text (xml_element_text (x_feed, "updated"))
|
||||
Result.set_date_with_text (xml_element_text (x_feed, "updated"))
|
||||
if attached links_from_xml (x_feed, "link") as l_links then
|
||||
across
|
||||
l_links as link_ic
|
||||
@@ -68,7 +68,7 @@ feature -- Access
|
||||
create e.make (e_title)
|
||||
e.set_description (xml_element_text (x_entry, "summary"))
|
||||
e.set_id (xml_element_text (x_entry, "id"))
|
||||
e.set_updated_date_with_text (xml_element_text (x_entry, "updated"))
|
||||
e.set_date_with_text (xml_element_text (x_entry, "updated"))
|
||||
|
||||
if attached links_from_xml (x_entry, "link") as l_links then
|
||||
across
|
||||
|
||||
@@ -14,7 +14,7 @@ inherit
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (a_title: READABLE_STRING_GENERAL)
|
||||
do
|
||||
@@ -55,7 +55,7 @@ feature -- Access
|
||||
Result := items.new_cursor
|
||||
end
|
||||
|
||||
feature -- Element change
|
||||
feature -- Element change
|
||||
|
||||
set_description (a_description: detachable READABLE_STRING_GENERAL; a_description_content_type: like description_content_type)
|
||||
-- Set `description' with `a_description' and optional content type `text:$a_description_content_type'.
|
||||
@@ -80,8 +80,8 @@ feature -- Element change
|
||||
|
||||
set_updated_date_with_text (a_date_text: detachable READABLE_STRING_32)
|
||||
-- Set `date' from date string representation `a_date_text'.
|
||||
obsolete
|
||||
"Use set_date_with_text [oct/2015]"
|
||||
obsolete
|
||||
"Use set_date_with_text [2017-05-31]"
|
||||
do
|
||||
set_date_with_text (a_date_text)
|
||||
end
|
||||
@@ -112,7 +112,7 @@ feature -- Element change
|
||||
-- Remove feed item `a_item' from Current list of feed items.
|
||||
do
|
||||
items.prune (a_item)
|
||||
end
|
||||
end
|
||||
|
||||
extended alias "+" (a_feed: FEED): FEED
|
||||
-- New feed object made from Current merged with a_feed.
|
||||
|
||||
@@ -22,7 +22,7 @@ inherit
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (a_title: READABLE_STRING_GENERAL)
|
||||
do
|
||||
@@ -157,8 +157,8 @@ feature -- Element change
|
||||
|
||||
set_updated_date_with_text (a_date_text: detachable READABLE_STRING_32)
|
||||
-- Set `date' from date string representation `a_date_text'.
|
||||
obsolete
|
||||
"Use set_date_with_text [oct/2015]"
|
||||
obsolete
|
||||
"Use set_date_with_text [2017-05-31]"
|
||||
do
|
||||
set_date_with_text (a_date_text)
|
||||
end
|
||||
|
||||
@@ -52,7 +52,7 @@ feature -- Access
|
||||
if attached xml_element_text (x_channel, "title") as x_title then
|
||||
create Result.make (x_title)
|
||||
Result.set_description (xml_element_text (x_channel, "description"), "xhtml")
|
||||
Result.set_updated_date_with_text (xml_element_text (x_channel, "lastBuildDate"))
|
||||
Result.set_date_with_text (xml_element_text (x_channel, "lastBuildDate"))
|
||||
if attached links_from_xml (x_channel, "link") as l_links then
|
||||
across
|
||||
l_links as link_ic
|
||||
@@ -69,7 +69,7 @@ feature -- Access
|
||||
if attached xml_element_text (x_item, "title") as e_title then
|
||||
create e.make (e_title)
|
||||
e.set_description (xml_element_text (x_item, "description"))
|
||||
e.set_updated_date_with_text (xml_element_text (x_item, "pubDate"))
|
||||
e.set_date_with_text (xml_element_text (x_item, "pubDate"))
|
||||
|
||||
e.set_id (xml_element_text (x_item, "guid"))
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ feature -- Visitor
|
||||
s.append_string_general ("@")
|
||||
s.append_string (a_link.relation)
|
||||
s.append_string (" -> ")
|
||||
s.append_string (a_link.href)
|
||||
s.append_string_general (a_link.href)
|
||||
append_text (s)
|
||||
end
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="tests">
|
||||
<root class="TEST_URI_TEMPLATE" feature="default_create"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="error">
|
||||
<root all_classes="true"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
528
library/utility/general/error/src/error_handler.e-ok20160107
Normal file
528
library/utility/general/error/src/error_handler.e-ok20160107
Normal file
@@ -0,0 +1,528 @@
|
||||
note
|
||||
description : "[
|
||||
Error handler or receiver.
|
||||
|
||||
]"
|
||||
legal: "See notice at end of class."
|
||||
status: "See notice at end of class."
|
||||
date: "$Date: 2015-10-10 00:55:41 +0200 (sam., 10 oct. 2015) $"
|
||||
revision: "$Revision: 97980 $"
|
||||
|
||||
class
|
||||
ERROR_HANDLER
|
||||
|
||||
inherit
|
||||
ANY
|
||||
|
||||
DEBUG_OUTPUT
|
||||
|
||||
create
|
||||
make,
|
||||
make_with_id
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make
|
||||
-- Initialize `Current'.
|
||||
do
|
||||
create {ARRAYED_LIST [ERROR]} errors.make (3)
|
||||
create error_added_actions
|
||||
end
|
||||
|
||||
make_with_id (a_id: READABLE_STRING_8)
|
||||
-- Build `Current' with optional id `a_id'.
|
||||
do
|
||||
make
|
||||
if a_id = Void then
|
||||
id := Void
|
||||
else
|
||||
create id.make_from_string (a_id)
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
id: detachable IMMUTABLE_STRING_8
|
||||
-- Optional identifier for Current handler.
|
||||
|
||||
primary_error_code: INTEGER
|
||||
-- Code of first error in `errors'
|
||||
require
|
||||
at_least_one_error: has_error
|
||||
do
|
||||
Result := errors.first.code
|
||||
end
|
||||
|
||||
feature -- Status
|
||||
|
||||
has_error: BOOLEAN
|
||||
-- Has error?
|
||||
do
|
||||
Result := count > 0
|
||||
end
|
||||
|
||||
count: INTEGER
|
||||
-- Number of error
|
||||
do
|
||||
Result := errors.count
|
||||
end
|
||||
|
||||
is_synchronizing_with (other: ERROR_HANDLER): BOOLEAN
|
||||
-- Is Current synchronizing with `other'?
|
||||
-- i.e 2 way propagation.
|
||||
do
|
||||
Result := is_propagating_to (other) and other.is_propagating_to (Current)
|
||||
end
|
||||
|
||||
is_propagating_to (other: ERROR_HANDLER): BOOLEAN
|
||||
-- Is Current propagating error to `other'?
|
||||
do
|
||||
Result := attached propagations as lst and then lst.has (other)
|
||||
end
|
||||
|
||||
feature {ERROR_HANDLER, ERROR_VISITOR} -- Restricted access
|
||||
|
||||
errors: LIST [ERROR]
|
||||
-- Errors container
|
||||
|
||||
feature -- Status report
|
||||
|
||||
debug_output: STRING
|
||||
-- String that should be displayed in debugger to represent `Current'.
|
||||
do
|
||||
if has_error then
|
||||
Result := count.out + " errors"
|
||||
else
|
||||
Result := "no error"
|
||||
end
|
||||
if attached id as l_id then
|
||||
Result.prepend ("[" + l_id + "] ")
|
||||
end
|
||||
if attached propagations as lst then
|
||||
check not_empty: not lst.is_empty end
|
||||
Result.append_character ('(')
|
||||
Result.append (" -> ")
|
||||
Result.append_integer (lst.count)
|
||||
Result.append_character (':')
|
||||
across
|
||||
lst as ic
|
||||
loop
|
||||
if attached ic.item.id as l_id then
|
||||
Result.append_character (' ')
|
||||
Result.append (l_id)
|
||||
end
|
||||
end
|
||||
Result.append_character (')')
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Events
|
||||
|
||||
error_added_actions: ACTION_SEQUENCE [TUPLE [ERROR]]
|
||||
-- Actions triggered when a new error is added
|
||||
|
||||
feature -- Synchronization
|
||||
|
||||
add_synchronization (h: ERROR_HANDLER)
|
||||
-- Add synchronization between `h' and `Current'
|
||||
--| the same handler can be added more than once
|
||||
--| it will be synchronized only once
|
||||
do
|
||||
add_propagation (h)
|
||||
h.add_propagation (Current)
|
||||
end
|
||||
|
||||
remove_synchronization (h: ERROR_HANDLER)
|
||||
-- Remove synchronization between `h' and `Current'
|
||||
do
|
||||
remove_propagation (h)
|
||||
h.remove_propagation (Current)
|
||||
end
|
||||
|
||||
feature -- One way synchronization: propagation
|
||||
|
||||
add_propagation (h: ERROR_HANDLER)
|
||||
-- Add propagation from `Current' to `h'.
|
||||
--| the same handler can be added more than once
|
||||
--| it will be synchronized only once
|
||||
local
|
||||
lst: like propagations
|
||||
do
|
||||
h.register_propagator (Current)
|
||||
lst := propagations
|
||||
if lst = Void then
|
||||
create {ARRAYED_LIST [ERROR_HANDLER]} lst.make (0)
|
||||
lst.compare_references
|
||||
propagations := lst
|
||||
end
|
||||
if not lst.has (h) then
|
||||
lst.extend (h)
|
||||
end
|
||||
end
|
||||
|
||||
remove_propagation (h: ERROR_HANDLER)
|
||||
-- Remove propagation from `Current' to `h'.
|
||||
do
|
||||
if attached propagations as lst and then not lst.is_empty then
|
||||
lst.prune_all (h)
|
||||
if lst.is_empty then
|
||||
propagations := Void
|
||||
end
|
||||
end
|
||||
h.unregister_propagator (Current)
|
||||
end
|
||||
|
||||
feature {ERROR_HANDLER} -- Synchronization implementation
|
||||
|
||||
is_associated_with (h: ERROR_HANDLER): BOOLEAN
|
||||
do
|
||||
if attached propagators as lst then
|
||||
Result := lst.has (h)
|
||||
end
|
||||
end
|
||||
|
||||
register_propagator (h: ERROR_HANDLER)
|
||||
local
|
||||
lst: like propagators
|
||||
do
|
||||
lst := propagators
|
||||
if lst = Void then
|
||||
create {ARRAYED_LIST [ERROR_HANDLER]} lst.make (1)
|
||||
propagators := lst
|
||||
end
|
||||
if not lst.has (h) then
|
||||
lst.extend (h)
|
||||
end
|
||||
end
|
||||
|
||||
unregister_propagator (h: ERROR_HANDLER)
|
||||
local
|
||||
lst: like propagators
|
||||
do
|
||||
lst := propagators
|
||||
if lst /= Void then
|
||||
lst.prune_all (h)
|
||||
if lst.is_empty then
|
||||
propagators := Void
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
propagators: detachable LIST [ERROR_HANDLER]
|
||||
-- Handlers propagating to Current.
|
||||
-- Needed for `reset'.
|
||||
|
||||
propagations: detachable LIST [ERROR_HANDLER]
|
||||
-- Handlers receiving the propagation.
|
||||
|
||||
synchronize_error_from (e: ERROR; h_lst: LIST [ERROR_HANDLER])
|
||||
-- Called by error_handler during synchronization process.
|
||||
-- To prevent infinite cycle, if Currently synchronizing, the `synchronized_handlers' is Void.
|
||||
require
|
||||
not h_lst.has (Current)
|
||||
local
|
||||
lst: like propagations
|
||||
do
|
||||
h_lst.extend (Current)
|
||||
lst := propagations
|
||||
propagations := Void
|
||||
add_error (e)
|
||||
|
||||
if lst /= Void then
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
if not h_lst.has (c.item) then
|
||||
c.item.synchronize_error_from (e, h_lst)
|
||||
end
|
||||
end
|
||||
propagations := lst
|
||||
else
|
||||
-- In synchronization
|
||||
end
|
||||
end
|
||||
|
||||
synchronize_errors_removal_from (errs: ITERABLE [ERROR]; h_lst: LIST [ERROR_HANDLER])
|
||||
-- Called by error_handler during synchronization process.
|
||||
-- To prevent infinite cycle, if Currently synchronizing, the `synchronized_handlers' is Void.
|
||||
require
|
||||
not h_lst.has (Current)
|
||||
local
|
||||
lst: like propagations
|
||||
do
|
||||
h_lst.extend (Current)
|
||||
lst := propagations
|
||||
propagations := Void
|
||||
across
|
||||
errs as ic
|
||||
loop
|
||||
-- Question: should we use remove_error (ic.item) ?
|
||||
errors.prune_all (ic.item)
|
||||
end
|
||||
|
||||
if lst /= Void then
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
if not h_lst.has (c.item) then
|
||||
c.item.synchronize_errors_removal_from (errs, h_lst)
|
||||
end
|
||||
end
|
||||
propagations := lst
|
||||
else
|
||||
-- In synchronization
|
||||
end
|
||||
end
|
||||
|
||||
synchronize_reset_from (h_lst: LIST [ERROR_HANDLER])
|
||||
-- Called by error_handler during synchronization process.
|
||||
-- To prevent infinite cycle, if Currently synchronizing, the `synchronized_handlers' is Void.
|
||||
require
|
||||
not h_lst.has (Current)
|
||||
local
|
||||
lst: like propagations
|
||||
do
|
||||
h_lst.extend (Current)
|
||||
lst := propagations
|
||||
propagations := Void
|
||||
reset
|
||||
if lst /= Void then
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
if not h_lst.has (c.item) then
|
||||
-- Reset c.item, even if this is not a two way synchronization!
|
||||
c.item.synchronize_reset_from (h_lst)
|
||||
end
|
||||
end
|
||||
propagations := lst
|
||||
else
|
||||
-- In synchronization
|
||||
end
|
||||
end
|
||||
|
||||
feature {NONE} -- Event: implementation
|
||||
|
||||
on_error_added (e: ERROR)
|
||||
-- Error `e' was just added.
|
||||
local
|
||||
sync_list: ARRAYED_LIST [ERROR_HANDLER]
|
||||
do
|
||||
error_added_actions.call ([e])
|
||||
if attached propagations as lst then
|
||||
propagations := Void
|
||||
create sync_list.make (1 + lst.count)
|
||||
sync_list.extend (Current)
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
if not sync_list.has (c.item) then
|
||||
c.item.synchronize_error_from (e, sync_list)
|
||||
end
|
||||
end
|
||||
propagations := lst
|
||||
end
|
||||
end
|
||||
|
||||
on_errors_removed (errs: ITERABLE [ERROR])
|
||||
-- Errors `errs' were just removed.
|
||||
local
|
||||
sync_list: ARRAYED_LIST [ERROR_HANDLER]
|
||||
lst: like propagations
|
||||
do
|
||||
lst := propagations
|
||||
if lst /= Void then
|
||||
propagations := Void
|
||||
create sync_list.make (1 + lst.count)
|
||||
sync_list.extend (Current)
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
if not sync_list.has (c.item) then
|
||||
c.item.synchronize_errors_removal_from (errs, sync_list)
|
||||
end
|
||||
end
|
||||
propagations := lst
|
||||
end
|
||||
end
|
||||
|
||||
on_reset
|
||||
-- `reset' was just called
|
||||
local
|
||||
sync_list: detachable ARRAYED_LIST [ERROR_HANDLER]
|
||||
lst: detachable LIST [ERROR_HANDLER]
|
||||
do
|
||||
lst := propagators
|
||||
if lst /= Void then
|
||||
create sync_list.make (1 + lst.count)
|
||||
sync_list.extend (Current)
|
||||
|
||||
propagators := Void
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
if not sync_list.has (c.item) then
|
||||
c.item.synchronize_reset_from (sync_list)
|
||||
end
|
||||
end
|
||||
propagators := lst
|
||||
end
|
||||
|
||||
-- lst := propagations
|
||||
-- propagations := Void
|
||||
-- if lst /= Void then
|
||||
-- if sync_list = Void then
|
||||
-- create sync_list.make (1 + lst.count)
|
||||
-- sync_list.extend (Current)
|
||||
-- end
|
||||
-- across
|
||||
-- lst as c
|
||||
-- loop
|
||||
-- if not sync_list.has (c.item) then
|
||||
-- c.item.synchronize_reset_from (sync_list)
|
||||
-- end
|
||||
-- end
|
||||
-- propagations := lst
|
||||
-- end
|
||||
end
|
||||
|
||||
feature -- Basic operation
|
||||
|
||||
add_error (a_error: ERROR)
|
||||
-- Add `a_error' to the stack of error
|
||||
do
|
||||
errors.force (a_error)
|
||||
on_error_added (a_error)
|
||||
end
|
||||
|
||||
remove_error (a_error: ERROR)
|
||||
-- Remove `a_error' from the stack of error.
|
||||
-- And also propagate error removal.
|
||||
do
|
||||
if propagations /= Void then
|
||||
on_errors_removed (<<a_error>>)
|
||||
end
|
||||
errors.prune_all (a_error)
|
||||
end
|
||||
|
||||
add_error_details, add_custom_error (a_code: INTEGER; a_name: STRING; a_message: detachable READABLE_STRING_GENERAL)
|
||||
-- Add custom error to the stack of error
|
||||
local
|
||||
e: ERROR_CUSTOM
|
||||
do
|
||||
create e.make (a_code, a_name, a_message)
|
||||
add_error (e)
|
||||
end
|
||||
|
||||
append (other: ERROR_HANDLER)
|
||||
-- Append errors from `a_err_handler'
|
||||
local
|
||||
other_errs: LIST [ERROR]
|
||||
do
|
||||
other_errs := other.errors
|
||||
if other_errs.count > 0 then
|
||||
from
|
||||
other_errs.start
|
||||
until
|
||||
other_errs.after
|
||||
loop
|
||||
add_error (other_errs.item)
|
||||
other_errs.forth
|
||||
end
|
||||
end
|
||||
ensure
|
||||
other_error_appended: other.has_error implies has_error
|
||||
new_count: count = old count + other.count
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
as_single_error: detachable ERROR
|
||||
-- All error(s) concatenated into one single error.
|
||||
do
|
||||
if count > 1 then
|
||||
create {ERROR_GROUP} Result.make (errors)
|
||||
elseif count > 0 then
|
||||
Result := errors.first
|
||||
end
|
||||
ensure
|
||||
has_error_implies_result_attached: has_error implies Result /= Void
|
||||
end
|
||||
|
||||
as_string_representation: STRING_32
|
||||
-- String representation of all error(s).
|
||||
require
|
||||
has_error
|
||||
do
|
||||
if attached as_single_error as e then
|
||||
Result := e.string_representation
|
||||
else
|
||||
check has_error: False end
|
||||
Result := {STRING_32} "Error occured"
|
||||
end
|
||||
end
|
||||
|
||||
feature -- Element changes
|
||||
|
||||
concatenate
|
||||
-- Concatenate into a single error if any
|
||||
do
|
||||
if count > 1 and then attached as_single_error as e then
|
||||
reset
|
||||
add_error (e)
|
||||
end
|
||||
end
|
||||
|
||||
reset
|
||||
-- Reset Current error handler.
|
||||
-- And also reset recursively error handlers propagating to Current (i.e the propagators).
|
||||
do
|
||||
errors.wipe_out
|
||||
on_reset
|
||||
ensure
|
||||
has_no_error: not has_error
|
||||
count = 0
|
||||
end
|
||||
|
||||
remove_all_errors
|
||||
-- Remove all errors.
|
||||
do
|
||||
if errors.count > 0 then
|
||||
on_errors_removed (errors)
|
||||
errors.wipe_out
|
||||
end
|
||||
ensure
|
||||
has_no_error: not has_error
|
||||
count = 0
|
||||
end
|
||||
|
||||
destroy
|
||||
-- Destroy Current, and remove any propagations (in the two directions).
|
||||
do
|
||||
error_added_actions.wipe_out
|
||||
if attached propagations as lst then
|
||||
propagations := Void
|
||||
across
|
||||
lst as c
|
||||
loop
|
||||
c.item.remove_synchronization (Current)
|
||||
end
|
||||
end
|
||||
reset
|
||||
end
|
||||
|
||||
invariant
|
||||
propagations_not_empty: attached propagations as lst implies not lst.is_empty
|
||||
propagators_not_empty: attached propagators as lst implies not lst.is_empty
|
||||
|
||||
note
|
||||
copyright: "2011-2016, Jocelyn Fiat, 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
|
||||
@@ -3,8 +3,8 @@
|
||||
<target name="error_tests">
|
||||
<root class="TEST_ERROR" feature="default_create"/>
|
||||
<file_rule>
|
||||
<exclude>/.git$</exclude>
|
||||
<exclude>/.svn$</exclude>
|
||||
<exclude>/\.git$</exclude>
|
||||
<exclude>/\.svn$</exclude>
|
||||
<exclude>/EIFGENs$</exclude>
|
||||
</file_rule>
|
||||
<option warning="true">
|
||||
|
||||
Reference in New Issue
Block a user