When access is denied, also provide when possible and wanted, the needed
permissions so that in the future, user will be able to ask for
permission easily.
Renamed previous user handlers as admin user handlers.
Added non admin user handler /user/{uid} .
Add new `send_...` response to `CMS_API.response_api`, and use them
instead of `create {...RESPONSE}.... ; execute`.
Fixed potential issue with storage mailer initialization if folder does
not exist.
Added utf_8_encoded helpers function on CMS_API interface.
Fixed a few unicode potential issues.
Removed a few obsolete calls.
117 lines
2.4 KiB
Plaintext
117 lines
2.4 KiB
Plaintext
note
|
|
description: "Summary description for {CMS_UPLOADED_FILE}."
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
CMS_UPLOADED_FILE
|
|
|
|
create
|
|
make_with_uploaded_file
|
|
|
|
feature {NONE} -- Initializaion
|
|
|
|
make_with_uploaded_file (a_uploads_directory: PATH; uf: WSF_UPLOADED_FILE)
|
|
do
|
|
uploads_directory := a_uploads_directory
|
|
uploaded_file := uf
|
|
location := a_uploads_directory.extended (uf.safe_filename)
|
|
end
|
|
|
|
feature -- Access
|
|
|
|
uploaded_file: WSF_UPLOADED_FILE
|
|
|
|
uploads_directory: PATH
|
|
|
|
filename: STRING_32
|
|
-- File name of Current file.
|
|
local
|
|
p: PATH
|
|
do
|
|
p := location
|
|
if attached p.entry as e then
|
|
Result := e.name
|
|
else
|
|
Result := p.name
|
|
end
|
|
end
|
|
|
|
|
|
location: PATH
|
|
-- Absolute path, or relative path to the `CMS_API.files_location'.
|
|
|
|
owner: detachable CMS_USER
|
|
-- Optional owner.
|
|
|
|
upload_time: detachable DATE_TIME
|
|
-- time when the file was uploaded
|
|
|
|
size: detachable INTEGER_32
|
|
-- file size
|
|
|
|
type: detachable STRING
|
|
-- file type
|
|
|
|
feature -- Element change
|
|
|
|
set_owner (u: detachable CMS_USER)
|
|
-- Set `owner' to `u'.
|
|
do
|
|
owner := u
|
|
end
|
|
|
|
set_time (a_time: detachable DATE_TIME)
|
|
-- Set `upload_time' to `a_time'
|
|
do
|
|
upload_time := a_time
|
|
end
|
|
|
|
set_size (a_size: detachable INTEGER_32)
|
|
-- Set `size' to `a_size'
|
|
do
|
|
size := a_size
|
|
end
|
|
|
|
set_type (a_type: detachable STRING)
|
|
-- Set `type' to `a_type'
|
|
do
|
|
type := a_type
|
|
end
|
|
|
|
set_new_location_with_number (a_number: INTEGER_32)
|
|
-- sets `a_number' after the name. This is done when the file was already uploaded
|
|
local
|
|
position: INTEGER_32
|
|
new_name: STRING_32
|
|
l_uploaded_file_string_representation: READABLE_STRING_32
|
|
do
|
|
l_uploaded_file_string_representation := uploaded_file.string_representation
|
|
position := l_uploaded_file_string_representation.index_of ('.', 1)
|
|
create new_name.make_empty
|
|
|
|
new_name := l_uploaded_file_string_representation.head (position-1)
|
|
new_name.append_string_general ("_(" + a_number.out + ")")
|
|
new_name.append (l_uploaded_file_string_representation.substring (position, l_uploaded_file_string_representation.count))
|
|
|
|
location := uploads_directory.extended (new_name)
|
|
end
|
|
|
|
feature -- Basic operation
|
|
|
|
move_to (p: PATH): BOOLEAN
|
|
local
|
|
retried: BOOLEAN
|
|
do
|
|
if retried then
|
|
Result := False
|
|
else
|
|
Result := uploaded_file.move_to (p.name)
|
|
end
|
|
rescue
|
|
retried := True
|
|
retry
|
|
end
|
|
|
|
end
|