120 lines
4.2 KiB
Plaintext
120 lines
4.2 KiB
Plaintext
note
|
|
description: "Provide access to json configuration"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
class
|
|
APPLICATION_JSON_CONFIGURATION_HELPER
|
|
|
|
feature -- Application Configuration
|
|
|
|
new_smtp_configuration (a_path: PATH): READABLE_STRING_32
|
|
-- Build a new database configuration.
|
|
local
|
|
l_parser: JSON_PARSER
|
|
do
|
|
Result := ""
|
|
if attached json_file_from (a_path) as json_file then
|
|
l_parser := new_json_parser (json_file)
|
|
l_parser.parse_content
|
|
if
|
|
l_parser.is_valid and then
|
|
attached {JSON_OBJECT} l_parser.parsed_json_value as jv and then
|
|
attached {JSON_OBJECT} jv.item ("smtp") as l_smtp and then
|
|
attached {JSON_STRING} l_smtp.item ("server") as l_server
|
|
then
|
|
Result := l_server.item
|
|
end
|
|
end
|
|
end
|
|
|
|
new_database_configuration (a_path: PATH): detachable DATABASE_CONFIGURATION
|
|
-- Build a new database configuration.
|
|
local
|
|
l_parser: JSON_PARSER
|
|
do
|
|
if attached json_file_from (a_path) as json_file then
|
|
l_parser := new_json_parser (json_file)
|
|
l_parser.parse_content
|
|
if
|
|
l_parser.is_valid and then
|
|
attached {JSON_OBJECT} l_parser.parsed_json_value as jv and then
|
|
attached {JSON_OBJECT} jv.item ("database") as l_database and then
|
|
attached {JSON_OBJECT} l_database.item ("datasource") as l_datasource and then
|
|
attached {JSON_STRING} l_datasource.item ("driver") as l_driver and then
|
|
attached {JSON_STRING} l_datasource.item ("environment") as l_envrionment and then
|
|
attached {JSON_OBJECT} l_database.item ("environments") as l_environments and then
|
|
attached {JSON_OBJECT} l_environments.item (l_envrionment.item) as l_environment_selected and then
|
|
attached {JSON_STRING} l_environment_selected.item ("connection_string") as l_connection_string
|
|
then
|
|
create Result.make (l_driver.item, l_connection_string.unescaped_string_32)
|
|
end
|
|
end
|
|
end
|
|
|
|
new_logger_level_configuration (a_path: PATH): READABLE_STRING_32
|
|
-- Retrieve a new logger level configuration.
|
|
-- By default, level is set to `DEBUG'.
|
|
local
|
|
l_parser: JSON_PARSER
|
|
do
|
|
Result := "DEBUG"
|
|
if attached json_file_from (a_path) as json_file then
|
|
l_parser := new_json_parser (json_file)
|
|
l_parser.parse_content
|
|
if
|
|
l_parser.is_valid and then
|
|
attached {JSON_OBJECT} l_parser.parsed_json_value as jv and then
|
|
attached {JSON_OBJECT} jv.item ("logger") as l_logger and then
|
|
attached {JSON_STRING} l_logger.item ("level") as l_level
|
|
then
|
|
Result := l_level.item
|
|
end
|
|
end
|
|
end
|
|
|
|
new_database_configuration_test (a_path: PATH): detachable DATABASE_CONFIGURATION
|
|
-- Build a new database configuration for testing purposes.
|
|
local
|
|
l_parser: JSON_PARSER
|
|
do
|
|
if attached json_file_from (a_path) as json_file then
|
|
l_parser := new_json_parser (json_file)
|
|
l_parser.parse_content
|
|
if
|
|
l_parser.is_valid and then
|
|
attached {JSON_OBJECT} l_parser.parsed_json_value as jv and then
|
|
l_parser.is_parsed and then
|
|
attached {JSON_OBJECT} jv.item ("database") as l_database and then
|
|
attached {JSON_OBJECT} l_database.item ("datasource") as l_datasource and then
|
|
attached {JSON_STRING} l_datasource.item ("driver") as l_driver and then
|
|
attached {JSON_STRING} l_datasource.item ("environment") as l_envrionment and then
|
|
attached {JSON_STRING} l_datasource.item ("trusted") as l_trusted and then
|
|
attached {JSON_OBJECT} l_database.item ("environments") as l_environments and then
|
|
attached {JSON_OBJECT} l_environments.item ("test") as l_environment_selected and then
|
|
attached {JSON_STRING} l_environment_selected.item ("connection_string") as l_connection_string and then
|
|
attached {JSON_STRING} l_environment_selected.item ("name") as l_name
|
|
then
|
|
create Result.make (l_driver.item, l_connection_string.unescaped_string_8)
|
|
end
|
|
end
|
|
end
|
|
|
|
feature {NONE} -- JSON
|
|
|
|
json_file_from (a_fn: PATH): detachable STRING
|
|
do
|
|
Result := (create {JSON_FILE_READER}).read_json_from (a_fn.name.out)
|
|
end
|
|
|
|
new_json_parser (a_string: STRING): JSON_PARSER
|
|
do
|
|
create Result.make_with_string (a_string)
|
|
end
|
|
|
|
note
|
|
copyright: "2011-2015, Javier Velilla, Jocelyn Fiat, Eiffel Software and others"
|
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
|
|
|
end
|