class GreenSMS::GreenSMSClient
Attributes
call[R]
voice[R]
Public Class Methods
new(user: nil, pass: nil, token: nil, version: nil, camel_case_response: false, use_token_for_requests: false)
click to toggle source
# File lib/greensms/client.rb, line 18 def initialize(user: nil, pass: nil, token: nil, version: nil, camel_case_response: false, use_token_for_requests: false) @user = ENV.fetch("GREENSMS_USER", user) @pass = ENV.fetch("GREENSMS_PASS", pass) @token = ENV.fetch("GREENSMS_TOKEN", token) @version = version @camel_case_response = camel_case_response @use_token_for_requests = use_token_for_requests if !GreenSMS.is_null_or_empty(@token) @user = "" @password = "" end if GreenSMS.is_null_or_empty(@token) and (GreenSMS.is_null_or_empty(@user) || GreenSMS.is_null_or_empty(@pass)) raise StandardError.new "Either User/Pass or Auth Token is required!" end shared_options = { "use_token_for_requests" => @use_token_for_requests, "version" => GreenSMS.get_version(@version), "rest_client" => _get_http_client(use_camel_case: @camel_case_response), "base_url" => GreenSMS.base_url(), } _add_modules(shared_options) end
Private Instance Methods
_add_modules(shared_options)
click to toggle source
# File lib/greensms/client.rb, line 48 def _add_modules(shared_options) module_loader = GreenSMS::API::ModuleLoader.new modules = module_loader.register_modules(shared_options) build_module_invoker(self, modules, "root") end
_get_http_client(**kwargs)
click to toggle source
# File lib/greensms/client.rb, line 78 def _get_http_client(**kwargs) default_params = {} if GreenSMS.is_null_or_empty(@token) && !GreenSMS.is_null_or_empty(@user) default_params["user"] = @user default_params["pass"] = @pass end http_args = { 'default_params': default_params, 'default_data': {}, 'token': @token, } kwargs.each do |key, val| http_args[key] = val end rest_client = GreenSMS::Http::Client.new(http_args) return rest_client end
build_module_invoker(obj, hash, obj_name)
click to toggle source
# File lib/greensms/client.rb, line 54 def build_module_invoker(obj, hash, obj_name) hash.each do |key_name, key_value| if key_value.is_a?(Hash) new_item = MethodInvoker.new build_module_invoker(new_item, key_value, key_name) obj.instance_variable_set("@#{key_name}", new_item) obj.instance_eval %{ def #{key_name} instance_variable_get("@#{key_name}") end } else func = key_value.clone obj.instance_variable_set("@#{key_name}", func.method(:api_func)) obj.instance_eval %{ def #{key_name}(*args) instance_variable_get("@#{key_name}").call(*args) end } end end end