Class: RubyHackernews::EntryService

Inherits:
Object
  • Object
show all
Includes:
MechanizeContext
Defined in:
lib/ruby-hackernews/services/entry_service.rb

Instance Method Summary collapse

Methods included from MechanizeContext

#[], #agent, agent=, #authenticated?, #require_authentication

Instance Method Details

#ask(title, text) ⇒ Object



58
59
60
61
62
63
# File 'lib/ruby-hackernews/services/entry_service.rb', line 58

def ask(title, text)
  require_authentication
  form = agent.get(ConfigurationService.submit_url).forms.first
  submit_question(form, title, text)
  return true
end

#find_by_id(id) ⇒ Object



25
26
27
28
29
# File 'lib/ruby-hackernews/services/entry_service.rb', line 25

def find_by_id(id)
  page = agent.get(ConfigurationService.base_url + "item?id=#{id}")
  lines = page.search("table")[2].search("tr")
  return EntryParser.new(lines[0], lines[1]).parse
end

#get_entries(pages = 1, url = ConfigurationService.base_url) ⇒ Object



6
7
8
# File 'lib/ruby-hackernews/services/entry_service.rb', line 6

def get_entries(pages = 1, url = ConfigurationService.base_url)
  get_entries_with_extra(pages, url)[:entries]
end

#get_entries_with_extra(pages = 1, url = ConfigurationService.base_url) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ruby-hackernews/services/entry_service.rb', line 10

def get_entries_with_extra(pages = 1, url = ConfigurationService.base_url)
  parser = EntryPageParser.new(agent.get(url))
   = []
  next_url = nil
  pages.times do
    lines = parser.get_lines
    (lines.length / 2).times do
       << EntryParser.new(lines.shift, lines.shift).parse
    end
    next_url = parser.get_next_url || break
    parser = EntryPageParser.new(agent.get(next_url))
  end
  return {:entries => , :next_url => next_url}
end

#get_jobs(pages = 1) ⇒ Object



39
40
41
# File 'lib/ruby-hackernews/services/entry_service.rb', line 39

def get_jobs(pages = 1)
  return get_entries(pages, ConfigurationService.jobs_url)
end

#get_new_entries(pages = 1) ⇒ Object



31
32
33
# File 'lib/ruby-hackernews/services/entry_service.rb', line 31

def get_new_entries(pages = 1)
  return get_entries(pages, ConfigurationService.new_url)
end

#get_new_shows(pages = 1) ⇒ Object



47
48
49
# File 'lib/ruby-hackernews/services/entry_service.rb', line 47

def get_new_shows(pages = 1)
  return get_entries(pages, ConfigurationService.new_shows_url)
end

#get_questions(pages = 1) ⇒ Object



35
36
37
# File 'lib/ruby-hackernews/services/entry_service.rb', line 35

def get_questions(pages = 1)
  return get_entries(pages, ConfigurationService.ask_url)
end

#get_shows(pages = 1) ⇒ Object



43
44
45
# File 'lib/ruby-hackernews/services/entry_service.rb', line 43

def get_shows(pages = 1)
  return get_entries(pages, ConfigurationService.show_url)
end

#submit(title, url) ⇒ Object



51
52
53
54
55
56
# File 'lib/ruby-hackernews/services/entry_service.rb', line 51

def submit(title, url)
  require_authentication
  form = agent.get(ConfigurationService.submit_url).forms.first
  submit_link(form, title, url)
  return true
end