class GreenSMS::API::ModuleLoader
Public Class Methods
new()
click to toggle source
# File lib/greensms/api/module_loader.rb, line 8 def initialize() @module_map = {} end
Public Instance Methods
register_modules(shared_options, filters = {})
click to toggle source
# File lib/greensms/api/module_loader.rb, line 12 def register_modules(shared_options, filters = {}) if filters.nil? filters = {} end current_version = shared_options["version"] modules = GreenSMS::MODULES modules.each do |module_name, module_info| if !@module_map.has_key?(module_name.to_sym) @module_map[module_name] = {} end module_versions = module_info["versions"] module_schema = nil is_static_module = filters.has_key?("load_static") && module_info.has_key?("static") && filters["load_static"] == true && module_info["static"] = true next if is_static_module module_versions.each do |version, version_functions| if !@module_map[module_name].has_key?(version) @module_map[module_name][version] = {} end version_functions.each do |function_name, definition| if !@module_map[module_name][version].has_key?(function_name) @module_map[module_name][version][function_name] = {} end module_schema = nil schema_exists = module_info.has_key?("schema") && module_info["schema"].has_key?(version) && module_info["schema"][version].has_key?(function_name) if schema_exists == true module_schema = module_info["schema"][version][function_name] end url_args = [] if !module_info.has_key?("static") || module_info["static"] != true url_args.append(module_name) end url_args.append(function_name) api_url = GreenSMS.build_url(shared_options["base_url"], url_args) @module_map[module_name][version][function_name] = module_api( shared_options: shared_options, api_url: api_url, definition: definition, module_schema: module_schema, module_name: module_name, function_name: function_name, ) if version == current_version @module_map[module_name][function_name] = @module_map[module_name][version][function_name] end if module_info.has_key?("static") && module_info["static"] == true @module_map[function_name] = @module_map[module_name][version][function_name] @module_map.delete(module_name) end end end end return @module_map end
Private Instance Methods
module_api(kwargs)
click to toggle source
# File lib/greensms/api/module_loader.rb, line 75 def module_api(kwargs) rest_client = kwargs[:shared_options]["rest_client"] module_schema = kwargs[:module_schema] request_params = { "url" => kwargs[:api_url], "method" => kwargs[:definition]["method"], } mod = GreenSMS::API::Module.new(rest_client, module_schema, request_params, kwargs[:module_name], kwargs[:function_name]) return mod # Return the module instance end