138 lines
2.8 KiB
Plaintext
138 lines
2.8 KiB
Plaintext
note
|
|
description: "[
|
|
Variables/field related to the current request.
|
|
]"
|
|
legal: "See notice at end of class."
|
|
status: "See notice at end of class."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
GW_REQUEST_VARIABLES
|
|
|
|
inherit
|
|
GW_VARIABLES [STRING_32]
|
|
|
|
ITERABLE [STRING_32]
|
|
|
|
create
|
|
make--,
|
|
-- make_from_urlencoded
|
|
|
|
feature -- Initialization
|
|
|
|
make (n: INTEGER)
|
|
do
|
|
create table.make (n)
|
|
table.compare_objects
|
|
end
|
|
|
|
-- make_from_urlencoded (a_content: STRING; decoding: BOOLEAN)
|
|
-- do
|
|
-- make (a_content.occurrences ('&') + 1)
|
|
-- import_urlencoded (a_content, decoding)
|
|
-- end
|
|
|
|
feature -- Status report
|
|
|
|
count: INTEGER
|
|
-- Variables count
|
|
do
|
|
Result := table.count
|
|
end
|
|
|
|
variable (a_name: STRING): detachable STRING_32
|
|
do
|
|
Result := table.item (a_name)
|
|
end
|
|
|
|
has_variable (a_name: STRING): BOOLEAN
|
|
do
|
|
Result := table.has (a_name)
|
|
end
|
|
|
|
feature -- Import urlencoded
|
|
|
|
-- import_urlencoded (a_content: STRING; decoding: BOOLEAN)
|
|
-- -- Import `a_content'
|
|
-- local
|
|
-- n, p, i, j: INTEGER
|
|
-- s: STRING
|
|
-- l_name,l_value: STRING_32
|
|
-- do
|
|
-- n := a_content.count
|
|
-- if n > 0 then
|
|
-- from
|
|
-- p := 1
|
|
-- until
|
|
-- p = 0
|
|
-- loop
|
|
-- i := a_content.index_of ('&', p)
|
|
-- if i = 0 then
|
|
-- s := a_content.substring (p, n)
|
|
-- p := 0
|
|
-- else
|
|
-- s := a_content.substring (p, i - 1)
|
|
-- p := i + 1
|
|
-- end
|
|
-- if not s.is_empty then
|
|
-- j := s.index_of ('=', 1)
|
|
-- if j > 0 then
|
|
-- l_name := s.substring (1, j - 1)
|
|
-- l_value := s.substring (j + 1, s.count)
|
|
-- if decoding then
|
|
-- l_name := url_encoder.decoded_string (l_name)
|
|
-- l_value := url_encoder.decoded_string (l_value)
|
|
-- end
|
|
-- add_variable (l_value, l_name)
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
-- end
|
|
|
|
feature -- Access: table
|
|
|
|
new_cursor: HASH_TABLE_ITERATION_CURSOR [STRING_32, STRING_32]
|
|
-- Fresh cursor associated with current structure
|
|
do
|
|
create Result.make (table)
|
|
end
|
|
|
|
feature {GW_REQUEST_CONTEXT} -- Element change
|
|
|
|
add_variable (v: STRING_32; k: STRING_32)
|
|
-- Added `k,v' to variables table
|
|
-- Not exported to common client
|
|
-- Simulate Read Only Access
|
|
require
|
|
k_attached: k /= Void
|
|
v_attached: v /= Void
|
|
do
|
|
table.force (v, k)
|
|
end
|
|
|
|
feature {GW_REQUEST_CONTEXT} -- Element change
|
|
|
|
table: HASH_TABLE [STRING_32, STRING_32]
|
|
-- Variables table
|
|
|
|
feature {NONE} -- Implementation
|
|
|
|
-- url_encoder: URL_ENCODER
|
|
-- once
|
|
-- create Result
|
|
-- end
|
|
|
|
note
|
|
copyright: "2011-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
|