salmon_author.rb | 
      |
|---|---|
| 
        
         This is a small convenience class that wraps an OStatus::Author so that other classes don’t have to know about the internal structure of an OStatus::Author to get these attributes out.  | 
      
        class SalmonAuthor
  def initialize(salmon_author)
    @author = salmon_author
  end
  def uri
    @author.uri
  end
  def name
    @author.portable_contacts.display_name
  end
  def username
    @author.name
  end
  def bio
    @author.portable_contacts.note
  end
  def avatar_url
    @author.links.find_all{|l| l.rel.downcase == "avatar"}.first.href
  end
  def email
    email = @author.email
    if email == ""
      return nil
    end
    email
  end
  def author_attributes
    {
      :name       => name,
      :username   => username,
      :remote_url => uri,
      :domain     => uri,
      :email      => email,
      :bio        => bio,
      :image_url  => avatar_url
    }
  end
  def ==(other)
    if self.class == other.class | 
    
| 
        
         Compare SalmonAuthors on their uris since that’s how we uniquely identify SalmonAuthors. This isn’t actually used anywhere except in the salmon_author_test.  | 
      
              return uri == other.uri
    else | 
    
| 
        
         Treat the other object like an Author if it quacks like an Author! Compare on the attributes that are equivalent.  | 
      
              return uri == other.remote_url &&
             name == other.name &&
             username == other.username &&
             email == other.email &&
             bio == other.bio &&
             avatar_url == other.image_url
    end
  end
end |