Module: MmJsonClient

Defined in:
lib/mm_json_client.rb,
lib/mm_json_client/client.rb,
lib/mm_json_client/version.rb,
lib/mm_json_client/exceptions.rb,
lib/mm_json_client/generic_type.rb,
lib/mm_json_client/type_factory.rb,
lib/mm_json_client/response_code.rb,
lib/mm_json_client/enums/enum_factory.rb,
lib/mm_json_client/enums/generic_enum.rb,
lib/mm_json_client/http_client/client.rb,
lib/mm_json_client/json_rpc_http/error.rb,
lib/mm_json_client/json_rpc_http/client.rb,
lib/mm_json_client/json_rpc_http/response.rb,
lib/mm_json_client/json_rpc_http/exceptions.rb

Overview

Configure the environment so the gem works.

Defined Under Namespace

Modules: Enums, HttpClient, JsonRpcHttp, ResponseCode Classes: Client, GenericType, ServerConnectionError, ServerError, TypeFactory

Constant Summary collapse

VERSION =
'2.0.1'.freeze

Class Method Summary collapse

Class Method Details

.api_def_dirObject



25
26
27
28
# File 'lib/mm_json_client.rb', line 25

def api_def_dir
  return ENV['API_DEF_DIR'] if ENV['API_DEF_DIR']
  default_api_def_dir
end

.default_api_def_dirObject



30
31
32
# File 'lib/mm_json_client.rb', line 30

def default_api_def_dir
  File.join(this_dir, 'mm_json_client', 'api_definitions')
end

.define_api_methodsObject



54
55
56
57
58
59
60
# File 'lib/mm_json_client.rb', line 54

def define_api_methods
  method_file = File.join(api_def_dir, 'methods.json')
  all_methods = JSON.parse(File.read(method_file))
  dynamic_methods(all_methods).each do |method, return_type|
    MmJsonClient::Client.define_api_method(method, return_type)
  end
end

.dynamic_methods(methods) ⇒ Object



50
51
52
# File 'lib/mm_json_client.rb', line 50

def dynamic_methods(methods)
  methods.reject { |k, _v| static_methods.include?(k) }
end

.initialize_environmentObject

Dynamically load the enums, methods and types from the default api definitions or those put in the directory provided in the environment variable API_DEF_DIR.



14
15
16
17
18
# File 'lib/mm_json_client.rb', line 14

def self.initialize_environment
  load_type_data
  load_enum_data
  define_api_methods
end

.load_enum_dataObject



40
41
42
43
44
# File 'lib/mm_json_client.rb', line 40

def load_enum_data
  enum_file = File.join(api_def_dir, 'enums.json')
  enums = JSON.parse(File.read(enum_file))
  MmJsonClient::Enums::EnumFactory.load_enums(enums)
end

.load_type_dataObject



34
35
36
37
38
# File 'lib/mm_json_client.rb', line 34

def load_type_data
  type_file = File.join(api_def_dir, 'types.json')
  types = JSON.parse(File.read(type_file))
  MmJsonClient::TypeFactory.load_types(types)
end

.static_methodsObject



46
47
48
# File 'lib/mm_json_client.rb', line 46

def static_methods
  %w(Login Logout)
end

.this_dirObject



21
22
23
# File 'lib/mm_json_client.rb', line 21

def this_dir
  File.dirname(File.expand_path(__FILE__))
end