Sha256: 78a678cf996d4cb4aeba7faf4e41790ad2864042f30606f8306da48212f4545d
Contents?: true
Size: 1.77 KB
Versions: 1
Compression:
Stored size: 1.77 KB
Contents
# frozen_string_literal: true class Raiblocks::ProxyContext def initialize(klass, m, opts = {}) @klass = klass @method_def = klass.proxy_method_def @param_def = klass.proxy_param_def @m = m @opts = opts end def valid_proxy_method? rpc_action? end def populate_params(params) opts = validate_opts! opts.merge!(params) if params validate_params! opts.delete_if { |_k, v| v.nil? } opts end def validate_opts! return @opts if @opts.is_a?(Hash) return {} if @opts.nil? raise Raiblocks::InvalidParameterType, 'You must pass a hash to an action method' end def validate_params! ensure_required_params! ensure_no_forbidden_params! end def ensure_required_params! missing_params = required_params - opts_keys return unless missing_params.any? raise Raiblocks::MissingParameters, "Missing required parameter(s): #{missing_params.join(', ')}" end def ensure_no_forbidden_params! forbidden_params = base_param_keys + opts_keys - allowed_params return unless forbidden_params.any? raise Raiblocks::ForbiddenParameter, "Forbidden parameter(s) passed: #{forbidden_params.join(', ')}" end private def opts_keys @opts.nil? ? [] : @opts.keys end def allowed_params base_param_keys + required_params + optional_params end def required_params return [] unless @method_def && @method_def[@m] @method_def[@m][:required] end def optional_params return [] unless @method_def && @method_def[@m] @method_def[@m][:optional] end def base_param_keys @param_def.is_a?(Hash) ? @param_def.keys : [] end def method_expansion "#{action_prefix}#{@m}" end def action_prefix @klass.name.split('::').last.downcase + '_' end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
raiblocks_rpc-0.4.0 | lib/raiblocks/proxy_context.rb |