Class: LittleBird::ResponseType

Inherits:
Object
  • Object
show all
Defined in:
lib/littlebird_api_client/response_type.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs) ⇒ ResponseType

Returns a new instance of ResponseType.



3
4
5
6
7
8
9
# File 'lib/littlebird_api_client/response_type.rb', line 3

def initialize(attrs)
  attrs.each do |key, value|
    self.instance_eval { class << self; self end }.send(:attr_accessor, key.to_sym)
    self.send(key+"=", parse_value(key, value))
  end
  self
end

Class Method Details

.timestamped_keysObject



19
20
21
# File 'lib/littlebird_api_client/response_type.rb', line 19

def self.timestamped_keys
  ["created_at", "started_at", "updated_at", "finished_at"]
end

Instance Method Details

#attribute_namesObject



34
35
36
# File 'lib/littlebird_api_client/response_type.rb', line 34

def attribute_names
  instance_variables.collect{|ivar| ivar.to_s.gsub("@", "")}
end

#attributesObject



30
31
32
# File 'lib/littlebird_api_client/response_type.rb', line 30

def attributes
  Hash[useful_attribute_names.zip(useful_attribute_names.map{|attribute| self.send(attribute)})]
end

#parse_value(key, value) ⇒ Object



11
12
13
# File 'lib/littlebird_api_client/response_type.rb', line 11

def parse_value(key, value)
  set_as_time_if_timestamp(key, value)
end

#set_as_time_if_timestamp(key, value) ⇒ Object



15
16
17
# File 'lib/littlebird_api_client/response_type.rb', line 15

def set_as_time_if_timestamp(key, value)
  self.class.timestamped_keys.include?(key)  && !value.nil? ? Time.parse(value) : value
end

#to_json(*a) ⇒ Object



23
24
25
26
27
28
# File 'lib/littlebird_api_client/response_type.rb', line 23

def to_json(*a)
  {
    'json_class'   => self.class.name,
    'data'         => attributes
  }.to_json(*a)
end

#useful_attribute_namesObject



38
39
40
# File 'lib/littlebird_api_client/response_type.rb', line 38

def useful_attribute_names
  attribute_names-["client"]
end