Sha256: 69787dbf2d692803afeea1829c5e503081c86505e6a878bc909034c3dd64395b
Contents?: true
Size: 1.84 KB
Versions: 1
Compression:
Stored size: 1.84 KB
Contents
module Cloudsponge class Contact attr_accessor :first_name, :last_name, :emails, :phones, :addresses def self.from_array(list) list.map { |contact_data| Contact.new(contact_data) }.compact end def initialize(contact_data) super() # get the basic data self.first_name = contact_data['first_name'] self.last_name = contact_data['last_name'] # get the phone numbers self.phones = [] contact_data['phone'] && contact_data['phone'].each do |phone| self.add_array_value(self.phones, phone['number'], phone['type']) end self.emails = [] contact_data['email'] && contact_data['email'].each do |email| self.add_array_value(self.emails, email['address'], email['type']) end @addresses = contact_data['mailing_address'] && contact_data['mailing_address'].inject([]) do |memo, address| memo << { :type => address['type'], :street => address["street"], :city => address["city"], :region => address["region"], :country => address["country"], :postal_code => address["postal_code"], :formatted => address["formatted"]} end || [] self end def name "#{self.first_name} #{self.last_name}" end def email Contact.get_first_value(self.emails) end def phone Contact.get_first_value(self.phones) end def address self.addresses && self.addresses.first && "#{self.addresses.first[:street]} #{self.addresses.first[:city]} #{self.addresses.first[:region]}".strip end def add_array_value(collection, value, type = nil) collection << {:value => value, :type => type} end private def self.get_first_value(from_array) from_array && from_array.first && from_array.first[:value] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cloudsponge-0.9.9 | lib/cloudsponge/contact.rb |