Class: NcodeSyosetu::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ncode_syosetu/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger: Logger.new(STDOUT), sleep: 0.5) ⇒ Client

Returns a new instance of Client.



6
7
8
9
10
# File 'lib/ncode_syosetu/client.rb', line 6

def initialize(logger: Logger.new(STDOUT), sleep: 0.5)
  @mechanize = Mechanize.new
  @logger = logger
  @sleep = sleep
end

Instance Method Details

#episode_url(ncode, number) ⇒ Object



43
44
45
# File 'lib/ncode_syosetu/client.rb', line 43

def episode_url(ncode, number)
  "http://#{NcodeSyosetu::NCODE_HOST_NAME}/#{ncode}/#{number}"
end

#get(ncode) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/ncode_syosetu/client.rb', line 12

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) ⇒ Object



32
33
34
35
36
37
# File 'lib/ncode_syosetu/client.rb', line 32

def get_episode(ncode, title, number)
  sleep(@sleep)
  url = episode_url(ncode, number)
  @logger.info("GET #{url}...")
  NcodeSyosetu::Model::Episode.new(title, number, @mechanize.get(url))
end

#get_toc(ncode) ⇒ Object



26
27
28
29
30
# File 'lib/ncode_syosetu/client.rb', line 26

def get_toc(ncode)
  url = toc_url(ncode)
  @logger.info("GET #{url}...")
  NcodeSyosetu::Model::Toc.new(@mechanize.get(url))
end

#toc_url(ncode) ⇒ Object



39
40
41
# File 'lib/ncode_syosetu/client.rb', line 39

def toc_url(ncode)
  "http://#{NcodeSyosetu::NCODE_HOST_NAME}/#{ncode}"
end