class NcodeSyosetu::Client

Public Class Methods

new(logger: Logger.new(STDOUT), sleep: 0.5) click to toggle source
# File lib/ncode_syosetu/client.rb, line 15
def initialize(logger: Logger.new(STDOUT), sleep: 0.5)
  @mechanize = Mechanize.new
  @logger = logger
  @sleep = sleep
end

Public Instance Methods

episode_url(ncode, number) click to toggle source
# File lib/ncode_syosetu/client.rb, line 49
def episode_url(ncode, number)
  "http://#{NcodeSyosetu::NCODE_HOST_NAME}/#{ncode}/#{number}"
end
get(ncode) click to toggle source
# File lib/ncode_syosetu/client.rb, line 21
def get(ncode)
  toc = get_toc(ncode)

  episodes = toc.episodes.map do |episode|
    if episode[:number]
      get_episode(ncode, episode[:text], episode[:number])
    else
      NcodeSyosetu::Model::Heading.new(episode[:text])
    end
  end

  NcodeSyosetu::Model::Novel.new(toc, episodes)
end
get_episode(ncode, title, number) click to toggle source
# File lib/ncode_syosetu/client.rb, line 40
def get_episode(ncode, title, number)
  sleep(@sleep)
  NcodeSyosetu::Model::Episode.new(title, number, get_content(episode_url(ncode, number)))
end
get_toc(ncode) click to toggle source
# File lib/ncode_syosetu/client.rb, line 35
def get_toc(ncode)
  url = toc_url(ncode)
  NcodeSyosetu::Model::Toc.new(get_content(toc_url(ncode)))
end
toc_url(ncode) click to toggle source
# File lib/ncode_syosetu/client.rb, line 45
def toc_url(ncode)
  "http://#{NcodeSyosetu::NCODE_HOST_NAME}/#{ncode}"
end

Private Instance Methods

get_content(url) click to toggle source
# File lib/ncode_syosetu/client.rb, line 55
def get_content(url)
  @logger.info("GET #{url}...")
  @mechanize.get(url)
end