module DomoscioRails::Resource::ClassMethods

Public Instance Methods

class_name() click to toggle source
# File lib/domoscio_rails/resource.rb, line 8
def class_name
  name.split('::')[-1]
end
nesting?() click to toggle source
# File lib/domoscio_rails/resource.rb, line 16
def nesting?
  name.split('::').size > 2
end
parent_class() click to toggle source
# File lib/domoscio_rails/resource.rb, line 12
def parent_class
  name.split('::')[-2]
end
raw_params(params = {}) click to toggle source
# File lib/domoscio_rails/resource.rb, line 46
def raw_params(params = {})
  params.merge({
    instance_id: DomoscioRails.configuration.client_id
  })
end
raw_url(util_name) click to toggle source
# File lib/domoscio_rails/resource.rb, line 36
def raw_url(util_name)
  raise NotImplementedError, 'Resource is an abstract class. Do not use it directly.' if self == Resource

  build_url = "/v#{DomoscioRails.configuration.version}"
  build_url << "/#{underscore(class_name)}s"
  build_url << "/#{util_name}" if util_name

  build_url
end
underscore(string) click to toggle source
# File lib/domoscio_rails/resource.rb, line 52
def underscore(string)
  string.gsub(/::/, '/')
        .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
        .gsub(/([a-z\d])([A-Z])/, '\1_\2')
        .tr('-', '_')
        .downcase
end
url(id, util_name, params) click to toggle source
# File lib/domoscio_rails/resource.rb, line 20
def url(id, util_name, params)
  raise NotImplementedError, 'Resource is an abstract class. Do not use it directly.' if self == Resource

  build_url = "/v#{DomoscioRails.configuration.version}/instances/#{DomoscioRails.configuration.client_id}"
  if nesting?
    parent = underscore(parent_class)
    build_url << "/#{parent}s"
    build_url << "/#{CGI.escape(params[(parent + '_id').to_sym].to_s)}"
  end
  build_url << "/#{underscore(class_name)}s"
  build_url << "/#{util_name}" if util_name
  build_url << "/#{CGI.escape(id.to_s)}" if id

  build_url
end