Redesign part of CMS_MODULE, and implementation.
Prepare the module before creating the service. Remove the possibility to add module after the creation of the service. Renamed CMS_MODULE_CONFIGURATOR as CMS_MODULE_COLLECTION.
This commit is contained in:
@@ -9,6 +9,9 @@ class
|
||||
inherit
|
||||
|
||||
CMS_MODULE
|
||||
redefine
|
||||
filters
|
||||
end
|
||||
|
||||
create
|
||||
make
|
||||
@@ -22,39 +25,34 @@ feature {NONE} -- Initialization
|
||||
description := "Service to manage basic authentication"
|
||||
package := "core"
|
||||
config := a_config
|
||||
setup_router
|
||||
setup_filter
|
||||
enable
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
router: WSF_ROUTER
|
||||
-- Node router.
|
||||
|
||||
config: CMS_SETUP
|
||||
-- Node configuration.
|
||||
|
||||
feature -- Implementation
|
||||
feature -- Access: router
|
||||
|
||||
setup_router
|
||||
-- Setup `router'.
|
||||
router: WSF_ROUTER
|
||||
-- Node router.
|
||||
do
|
||||
create router.make (2)
|
||||
configure_api_login
|
||||
configure_api_logoff
|
||||
create Result.make (2)
|
||||
configure_api_login (Result)
|
||||
configure_api_logoff (Result)
|
||||
end
|
||||
|
||||
setup_filter
|
||||
-- Setup `filter'.
|
||||
feature -- Access: filter
|
||||
|
||||
filters: detachable LIST [WSF_FILTER]
|
||||
-- Possibly list of Filter's module.
|
||||
do
|
||||
add_filter (create {CORS_FILTER})
|
||||
add_filter (create {BASIC_AUTH_FILTER}.make (config))
|
||||
create {ARRAYED_LIST [WSF_FILTER]} Result.make (2)
|
||||
Result.extend (create {CORS_FILTER})
|
||||
Result.extend (create {BASIC_AUTH_FILTER}.make (config))
|
||||
end
|
||||
|
||||
feature -- Configure Node Resources Routes
|
||||
feature {NONE} -- Implementation: routes
|
||||
|
||||
configure_api_login
|
||||
configure_api_login (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_bal_handler: BASIC_AUTH_LOGIN_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -62,10 +60,10 @@ feature -- Configure Node Resources Routes
|
||||
create l_bal_handler.make (config)
|
||||
create l_methods
|
||||
l_methods.enable_get
|
||||
router.handle_with_request_methods ("/basic_auth_login", l_bal_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/basic_auth_login", l_bal_handler, l_methods)
|
||||
end
|
||||
|
||||
configure_api_logoff
|
||||
configure_api_logoff (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_bal_handler: BASIC_AUTH_LOGOFF_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -73,7 +71,7 @@ feature -- Configure Node Resources Routes
|
||||
create l_bal_handler.make (config)
|
||||
create l_methods
|
||||
l_methods.enable_get
|
||||
router.handle_with_request_methods ("/basic_auth_logoff", l_bal_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/basic_auth_logoff", l_bal_handler, l_methods)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ feature -- Basic operations
|
||||
-- A valid user
|
||||
if (attached l_auth.type as l_auth_type and then l_auth_type.is_case_insensitive_equal_general ("basic")) and then
|
||||
attached l_auth.login as l_auth_login and then attached l_auth.password as l_auth_password then
|
||||
if api_service.login_valid (l_auth_login, l_auth_password) then
|
||||
if api_service.is_valid_credential (l_auth_login, l_auth_password) then
|
||||
if attached api_service.user_by_name (l_auth_login) as l_user then
|
||||
req.set_execution_variable ("user", l_user)
|
||||
execute_next (req, res)
|
||||
|
||||
@@ -22,27 +22,18 @@ feature -- Router
|
||||
|
||||
router: WSF_ROUTER
|
||||
-- Router configuration.
|
||||
require
|
||||
is_enabled: is_enabled
|
||||
deferred
|
||||
end
|
||||
|
||||
feature -- Filter
|
||||
|
||||
filters: detachable LIST [WSF_FILTER]
|
||||
-- Possibly list of Filter's module.
|
||||
|
||||
feature -- Element Change: Filter
|
||||
|
||||
add_filter (a_filter: WSF_FILTER)
|
||||
-- Add a filter `a_filter' to the list of module filters `filters'.
|
||||
local
|
||||
l_filters: like filters
|
||||
-- Optional list of filter for Current module.
|
||||
require
|
||||
is_enabled: is_enabled
|
||||
do
|
||||
l_filters := filters
|
||||
if l_filters = Void then
|
||||
create {ARRAYED_LIST [WSF_FILTER]} l_filters.make (1)
|
||||
filters := l_filters
|
||||
end
|
||||
l_filters.force (a_filter)
|
||||
end
|
||||
|
||||
feature -- Settings
|
||||
|
||||
64
cms/src/modules/cms_module_collection.e
Normal file
64
cms/src/modules/cms_module_collection.e
Normal file
@@ -0,0 +1,64 @@
|
||||
note
|
||||
description: "Summary description for {CMS_MODULE_COLLECTION}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
CMS_MODULE_COLLECTION
|
||||
|
||||
inherit
|
||||
ITERABLE [CMS_MODULE]
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (nb: INTEGER)
|
||||
do
|
||||
create modules.make (nb)
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
new_cursor: INDEXABLE_ITERATION_CURSOR [CMS_MODULE]
|
||||
-- <Precursor>
|
||||
do
|
||||
Result := modules.new_cursor
|
||||
end
|
||||
|
||||
feature -- Status report
|
||||
|
||||
has (a_module: CMS_MODULE): BOOLEAN
|
||||
-- Has `a_module'?
|
||||
do
|
||||
Result := modules.has (a_module)
|
||||
end
|
||||
|
||||
count: INTEGER
|
||||
-- Number of modules.
|
||||
do
|
||||
Result := modules.count
|
||||
end
|
||||
|
||||
feature -- Element change
|
||||
|
||||
extend (a_module: CMS_MODULE)
|
||||
-- Add module
|
||||
do
|
||||
modules.force (a_module)
|
||||
end
|
||||
|
||||
remove (a_module: CMS_MODULE)
|
||||
-- Remove module
|
||||
do
|
||||
modules.prune_all (a_module)
|
||||
end
|
||||
|
||||
feature {NONE} -- Implementation
|
||||
|
||||
modules: ARRAYED_LIST [CMS_MODULE]
|
||||
-- List of available modules.
|
||||
|
||||
end
|
||||
@@ -1,30 +0,0 @@
|
||||
note
|
||||
description: "Summary description for {CMS_MODULE_CONFIGURATOR}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
deferred class
|
||||
CMS_MODULE_CONFIGURATOR
|
||||
|
||||
feature -- Access
|
||||
|
||||
modules: LIST[CMS_MODULE]
|
||||
-- Possible list of modules.
|
||||
deferred
|
||||
end
|
||||
|
||||
feature -- Add Module
|
||||
|
||||
add_module (a_module: CMS_MODULE)
|
||||
-- Add module
|
||||
do
|
||||
modules.force (a_module)
|
||||
end
|
||||
|
||||
remove_module (a_module: CMS_MODULE)
|
||||
-- Remove module
|
||||
do
|
||||
modules.prune (a_module)
|
||||
end
|
||||
end
|
||||
@@ -1,15 +1,17 @@
|
||||
note
|
||||
description: "Summary description for {CMS_DEFAULT_MODULE_CONFIGURATOR}."
|
||||
description: "Summary description for {CMS_DEFAULT_MODULE_COLLECTION}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
CMS_DEFAULT_MODULE_CONFIGURATOR
|
||||
CMS_DEFAULT_MODULE_COLLECTION
|
||||
|
||||
inherit
|
||||
|
||||
CMS_MODULE_CONFIGURATOR
|
||||
CMS_MODULE_COLLECTION
|
||||
rename
|
||||
make as make_with_capacity
|
||||
end
|
||||
|
||||
create
|
||||
make
|
||||
@@ -18,15 +20,10 @@ feature {NONE} -- Initialization
|
||||
|
||||
make (a_setup: CMS_SETUP)
|
||||
do
|
||||
make_with_capacity (3)
|
||||
build_modules (a_setup)
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
modules: ARRAYED_LIST [CMS_MODULE]
|
||||
-- List of possible modules
|
||||
|
||||
|
||||
feature -- Configuration
|
||||
|
||||
build_modules (a_setup: CMS_SETUP)
|
||||
@@ -35,19 +32,23 @@ feature -- Configuration
|
||||
local
|
||||
m: CMS_MODULE
|
||||
do
|
||||
create modules.make (3)
|
||||
-- -- Core
|
||||
-- create {USER_MODULE} m.make (a_setup)
|
||||
-- m.enable
|
||||
-- modules.extend (m)
|
||||
-- extend (m)
|
||||
|
||||
-- create {ADMIN_MODULE} m.make (a_setup)
|
||||
-- m.enable
|
||||
-- modules.extend (m)
|
||||
-- extend (m)
|
||||
|
||||
|
||||
create {BASIC_AUTH_MODULE} m.make (a_setup)
|
||||
m.enable
|
||||
extend (m)
|
||||
|
||||
create {NODE_MODULE} m.make (a_setup)
|
||||
m.enable
|
||||
modules.extend (m)
|
||||
extend (m)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -16,40 +16,34 @@ create
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make (a_config: CMS_SETUP)
|
||||
-- Create Current module, disabled by default.
|
||||
do
|
||||
name := "node"
|
||||
version := "1.0"
|
||||
description := "Service to manage content based on 'node'"
|
||||
package := "core"
|
||||
config := a_config
|
||||
setup_router
|
||||
enable
|
||||
end
|
||||
|
||||
feature -- Access
|
||||
|
||||
router: WSF_ROUTER
|
||||
-- Node router.
|
||||
|
||||
config: CMS_SETUP
|
||||
-- Node configuration.
|
||||
-- Node configuration.
|
||||
|
||||
feature -- Implementation
|
||||
feature -- Access: router
|
||||
|
||||
setup_router
|
||||
-- Setup `router'.
|
||||
router: WSF_ROUTER
|
||||
-- Node router.
|
||||
do
|
||||
create router.make (5)
|
||||
configure_api_node
|
||||
configure_api_nodes
|
||||
configure_api_node_title
|
||||
configure_api_node_summary
|
||||
configure_api_node_content
|
||||
create Result.make (5)
|
||||
configure_api_node (Result)
|
||||
configure_api_nodes (Result)
|
||||
configure_api_node_title (Result)
|
||||
configure_api_node_summary (Result)
|
||||
configure_api_node_content (Result)
|
||||
end
|
||||
|
||||
feature -- Configure Node Resources Routes
|
||||
feature {NONE} -- Implementation: routes
|
||||
|
||||
configure_api_node
|
||||
configure_api_node (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_node_handler: NODE_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -59,7 +53,7 @@ feature -- Configure Node Resources Routes
|
||||
l_methods.enable_get
|
||||
l_methods.enable_post
|
||||
l_methods.enable_put
|
||||
router.handle_with_request_methods ("/node", l_node_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/node", l_node_handler, l_methods)
|
||||
|
||||
create l_node_handler.make (config)
|
||||
create l_methods
|
||||
@@ -67,11 +61,10 @@ feature -- Configure Node Resources Routes
|
||||
l_methods.enable_post
|
||||
l_methods.enable_put
|
||||
l_methods.enable_delete
|
||||
router.handle_with_request_methods ("/node/{id}", l_node_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/node/{id}", l_node_handler, l_methods)
|
||||
end
|
||||
|
||||
|
||||
configure_api_nodes
|
||||
configure_api_nodes (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_nodes_handler: NODES_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -79,11 +72,10 @@ feature -- Configure Node Resources Routes
|
||||
create l_nodes_handler.make (config)
|
||||
create l_methods
|
||||
l_methods.enable_get
|
||||
router.handle_with_request_methods ("/nodes", l_nodes_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/nodes", l_nodes_handler, l_methods)
|
||||
end
|
||||
|
||||
|
||||
configure_api_node_summary
|
||||
configure_api_node_summary (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_report_handler: NODE_SUMMARY_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -93,11 +85,11 @@ feature -- Configure Node Resources Routes
|
||||
l_methods.enable_get
|
||||
l_methods.enable_post
|
||||
l_methods.enable_put
|
||||
router.handle_with_request_methods ("/node/{id}/summary", l_report_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/node/{id}/summary", l_report_handler, l_methods)
|
||||
end
|
||||
|
||||
|
||||
configure_api_node_title
|
||||
configure_api_node_title (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_report_handler: NODE_TITLE_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -107,11 +99,10 @@ feature -- Configure Node Resources Routes
|
||||
l_methods.enable_get
|
||||
l_methods.enable_post
|
||||
l_methods.enable_put
|
||||
router.handle_with_request_methods ("/node/{id}/title", l_report_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/node/{id}/title", l_report_handler, l_methods)
|
||||
end
|
||||
|
||||
|
||||
configure_api_node_content
|
||||
configure_api_node_content (a_router: WSF_ROUTER)
|
||||
local
|
||||
l_report_handler: NODE_CONTENT_HANDLER
|
||||
l_methods: WSF_REQUEST_METHODS
|
||||
@@ -121,7 +112,7 @@ feature -- Configure Node Resources Routes
|
||||
l_methods.enable_get
|
||||
l_methods.enable_post
|
||||
l_methods.enable_put
|
||||
router.handle_with_request_methods ("/node/{id}/content", l_report_handler, l_methods)
|
||||
a_router.handle_with_request_methods ("/node/{id}/content", l_report_handler, l_methods)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user