class EzLinkedin::Mash

Public Class Methods

from_json(json_string) click to toggle source

a simple helper to convert a json string to a Mash

# File lib/ezlinkedin/mash.rb, line 8
def self.from_json(json_string)
  result_hash = ::MultiJson.decode(json_string)
  new(result_hash)
end

Public Instance Methods

timestamp() click to toggle source
# File lib/ezlinkedin/mash.rb, line 22
def timestamp
  value = self['timestamp']
  if value.kind_of? Integer
    value = value / 1000 if value > 9999999999
    Time.at(value)
  else
    value
  end
end
to_date() click to toggle source

returns a Date if we have year, month and day, and no conflicting key

Calls superclass method
# File lib/ezlinkedin/mash.rb, line 14
def to_date
  if !self.has_key?('to_date') && contains_date_fields?
    Date.civil(self.year, self.month, self.day)
  else
    super
  end
end

Protected Instance Methods

contains_date_fields?() click to toggle source
# File lib/ezlinkedin/mash.rb, line 34
def contains_date_fields?
  self.year? && self.month? && self.day?
end
convert_key(key) click to toggle source

overload the convert_key mash method so that the LinkedIn keys are made a little more ruby-ish

# File lib/ezlinkedin/mash.rb, line 40
def convert_key(key)
  case key.to_s
  when '_key'
    'id'
  when '_total'
    'total'
  when 'values'
    'all'
  when 'numResults'
    'total_results'
  else
    underscore(key)
  end
end
underscore(camel_cased_word) click to toggle source

borrowed from ActiveSupport no need require an entire lib when we only need one method

# File lib/ezlinkedin/mash.rb, line 57
def underscore(camel_cased_word)
  word = camel_cased_word.to_s.dup
  word.gsub!(/::/, '/')
  word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
  word.tr!("-", "_")
  word.downcase!
  word
end