class TwelvedataRuby::Endpoint
Constants
- DEFAULT_FORMAT
- DEFINITIONS
- VALID_FORMATS
Attributes
name[R]
query_params[R]
Public Class Methods
default_apikey_params()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 172 def default_apikey_params {apikey: Client.instance.apikey} end
definitions()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 157 def definitions @definitions ||= DEFINITIONS.transform_values {|v| v.merge( parameters: { keys: v[:parameters][:keys].push(:apikey), required: (v[:parameters][:required] || []).push(:apikey) } ) }.to_h end
names()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 168 def names @names ||= definitions.keys end
new(name, **query_params)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 188 def initialize(name, **query_params) self.name = name self.query_params = query_params end
valid_name?(name)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 176 def valid_name?(name) names.include?(name.to_sym) end
valid_params?(name, **params)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 180 def valid_params?(name, **params) new(name, **params).valid? end
Also aliased as: valid?
Public Instance Methods
definition()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 193 def definition @definition ||= self.class.definitions[name] end
errors()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 197 def errors (@errors || {}).compact end
name=(name)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 201 def name=(name) assign_attribute(:name, name.to_s.downcase.to_sym) end
parameters()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 205 def parameters return @parameters if definition.nil? || @parameters params = definition[:parameters] params.push(:filename) if params.include?(:format) && query_parameters[:format] == :csv params end
parameters_keys()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 213 def parameters_keys keys = parameters&.send(:[], :keys) keys.push(:filename) if keys && query_params && query_params[:format] == :csv keys end
query_params=(query_params)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 223 def query_params=(query_params) if (parameters_keys || []).include?(:format) && !VALID_FORMATS.include?(query_params[:format]) query_params[:format] = DEFAULT_FORMAT end query_params.delete(:filename) if query_params[:filename] && query_params[:format] != :csv assign_attribute(:query_params, self.class.default_apikey_params.merge(query_params.compact)) end
query_params_keys()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 219 def query_params_keys query_params.keys end
required_parameters()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 232 def required_parameters parameters&.send(:[], :required) end
valid?()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 236 def valid? valid_name? && valid_query_params? end
valid_at_attributes?(*attrs)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 240 def valid_at_attributes?(*attrs) errors.values_at(*attrs).compact.empty? end
valid_name?()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 244 def valid_name? valid_at_attributes?(:name) end
valid_query_params?()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 248 def valid_query_params? valid_at_attributes?(:parameters_keys, :required_parameters) end
Private Instance Methods
assign_attribute(attr_name, value)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 254 def assign_attribute(attr_name, value) @parameters = nil @definition = nil instance_variable_set(:"@#{attr_name}", value) send(:"validate_#{attr_name}") send(attr_name) end
init_error(attr_name, invalid_values, error_klass=nil)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 262 def init_error(attr_name, invalid_values, error_klass=nil) error_klass ||= Kernel.const_get("#{self.class.name}#{Utils.camelize(attr_name)}Error") error_klass.new(endpoint: self, invalid: invalid_values) end
update_errors(attrib, invalids, klass=nil)
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 267 def update_errors(attrib, invalids, klass=nil) @errors = errors.merge(attrib => !invalids.nil? && !invalids.empty? ? init_error(attrib, invalids, klass) : nil) end
validate_name()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 271 def validate_name is_valid = self.class.valid_name?(name) invalid_name = name.nil? || name.empty? ? "a blank name" : name update_errors(:name, is_valid ? nil : invalid_name) validate_query_params if is_valid && query_params && !valid_query_params? end
validate_query_params()
click to toggle source
# File lib/twelvedata_ruby/endpoint.rb, line 278 def validate_query_params return update_errors(:required_parameters, "Invalid name", EndpointError) unless parameters_keys update_errors(:required_parameters, required_parameters.difference(query_params_keys)) update_errors(:parameters_keys, query_params_keys.difference(parameters_keys)) end