Class: Atlas::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/atlas/resource.rb

Overview

Base class for representing resources.

Direct Known Subclasses

Box, BoxProvider, BoxVersion, User

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tag, hash = {}) ⇒ Resource

Returns a new instance of Resource.



6
7
8
9
10
11
# File 'lib/atlas/resource.rb', line 6

def initialize(tag, hash = {})
  @tag = tag
  @url_builder = UrlBuilder.new tag

  hash.each { |k, v| send("#{k}=", v) if respond_to?("#{k}=") }
end

Instance Attribute Details

#tagObject

Returns the value of attribute tag.



4
5
6
# File 'lib/atlas/resource.rb', line 4

def tag
  @tag
end

#url_builderObject

Returns the value of attribute url_builder.



4
5
6
# File 'lib/atlas/resource.rb', line 4

def url_builder
  @url_builder
end

Instance Method Details

#inspectObject



28
29
30
31
# File 'lib/atlas/resource.rb', line 28

def inspect
  objects = to_hash.map { |k, v| "#{k}=#{v.inspect}" }.join(' ')
  "#<#{self.class.name}:#{object_id} #{objects}>"
end

#to_hashObject



20
21
22
23
24
25
26
# File 'lib/atlas/resource.rb', line 20

def to_hash
  attrs = instance_variables.collect do |v|
    %w(@tag @url_builder).include?(v.to_s) ? next : v.to_s.sub(/^@/, '')
  end.compact!

  Hash[attrs.select { |v| respond_to? v }.map { |v| [v.to_sym, send(v)] }]
end

#update_with_response(response, except_keys = []) ⇒ Object



13
14
15
16
17
18
# File 'lib/atlas/resource.rb', line 13

def update_with_response(response, except_keys = [])
  # remove keys that shouldn't be included
  except_keys.each { |k| response.delete(k) }

  response.each { |k, v| send("#{k}=", v) if respond_to?("#{k}=") }
end