Sha256: 2e5ba74648ff7e58c76244b3d750366d9c0410ba6191f5b1eb2d0fd606da0aa8

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

class Entry

  attr_reader :number
  attr_reader :link
  attr_reader :voting
  attr_reader :user

  def initialize(number, link, voting, user, comments, time)
    @number   = number
    @link     = link
    @voting   = voting
    @user     = user    
    @time     = time
    @comments_info = comments
  end

  def comments
    unless @comments
      @comments = CommentService.new.get_comments(@comments_info.page)
    end
    return @comments
  end

  def self.all(pages = 1)
    return EntryService.new.get_entries(pages)
  end

  def self.newest(pages = 1)
    return EntryService.new.get_new_entries(pages)
  end

  def self.questions(pages = 1)
    return EntryService.new.get_questions(pages)
  end

  def self.jobs(pages = 1)
    return EntryService.new.get_jobs(pages)
  end

  def time
    return @time.time
  end

  def id
    return @comments_info ? @comments_info.id : nil
  end
  
  def comments_url
    return @comments_info ? ConfigurationService.base_url + @comments_info.url : nil
  end

  def comments_count
    return @comments_info.count unless @comments_info.nil?
  end

  def write_comment(text)
    return CommentService.new.write_comment(@comments_info.page, text)
  end

  def self.submit(title, url)
    return EntryService.new.submit(title, url)
  end

  def self.ask(title, text)
    return EntryService.new.ask(title, text)
  end

  def upvote
    return VotingService.new.vote(@voting.upvote)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-hackernews-1.2.0 lib/ruby-hackernews/domain/entry/entry.rb