class Bitodeme::Resource::Base
Public Class Methods
new(attrs:, params:)
click to toggle source
# File lib/bitodeme/resources/base.rb, line 54 def initialize(attrs:, params:) attrs.each do |attr| val = params.fetch(attr.to_s, params.fetch(attr, nil)) instance_variable_set("@#{attr}", val) end end
Private Class Methods
_all(collection, opts)
click to toggle source
# File lib/bitodeme/resources/base.rb, line 19 def _all(collection, opts) items = get("/api/v1/#{collection}", _query_params(opts)).body items.fetch(collection, []).map { |item| new(item) } end
_create(collection, resource, data)
click to toggle source
# File lib/bitodeme/resources/base.rb, line 24 def _create(collection, resource, data) item = post("/api/v1/#{collection}", data).body.fetch(resource, data) new(item) end
_find(collection, resource, id)
click to toggle source
# File lib/bitodeme/resources/base.rb, line 14 def _find(collection, resource, id) item = get("/api/v1/#{collection}/#{id}").body.fetch(resource, {}) new(item) end
_query_params(opts)
click to toggle source
# File lib/bitodeme/resources/base.rb, line 29 def _query_params(opts) query_params = { page: opts.fetch(:page, 1), per_page: opts.fetch(:per_page, 50), since: opts.fetch(:since, 0) } query_params[:starts_at] = opts[:starts_at] if opts.key?(:starts_at) query_params[:ends_at] = opts[:ends_at] if opts.key?(:ends_at) query_params end
conn()
click to toggle source
# File lib/bitodeme/resources/base.rb, line 40 def conn Bitodeme::Conn.build end
Public Instance Methods
to_h()
click to toggle source
# File lib/bitodeme/resources/base.rb, line 45 def to_h attrs.each_with_object({}) do |attr, hash| val = instance_variable_get(:"@#{attr}") hash[attr] = val unless val.nil? end end
Private Instance Methods
attrs()
click to toggle source
# File lib/bitodeme/resources/base.rb, line 61 def attrs methods - klass_methods - excluded_attrs end
excluded_attrs()
click to toggle source
# File lib/bitodeme/resources/base.rb, line 69 def excluded_attrs %i[to_h validate] end
klass_methods()
click to toggle source
# File lib/bitodeme/resources/base.rb, line 65 def klass_methods self.class.methods - %i[name] end
raise_for(attr)
click to toggle source
# File lib/bitodeme/resources/base.rb, line 73 def raise_for(attr) raise Bitodeme::ValidationError.new(attr, send(:"#{attr}")) end