Class: NcodeSyosetu::Client

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

Defined Under Namespace

Classes: NotFound

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Client.



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

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

  if @host == NcodeSyosetu::NOVEL18_HOST_NAME
    cookie = Mechanize::Cookie.new("over18", "yes", domain: ".syosetu.com", path: "/", expires: Time.now + 86400 * 365)
    @mechanize.cookie_jar.add(cookie)
  end
end

Instance Method Details

#episode_url(ncode, number) ⇒ Object



60
61
62
# File 'lib/ncode_syosetu/client.rb', line 60

def episode_url(ncode, number)
  "https://#{@host}/#{ncode}/#{number}"
end

#get(ncode) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ncode_syosetu/client.rb', line 27

def get(ncode)
  toc = get_toc(ncode)

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

  NcodeSyosetu::Model::Novel.new(toc, episodes)
end

#get_episode(ncode, title, number) ⇒ Object



51
52
53
54
# File 'lib/ncode_syosetu/client.rb', line 51

def get_episode(ncode, title, number)
  sleep(@sleep)
  NcodeSyosetu::Model::Episode.new(title, number, get_content(episode_url(ncode, number)))
end

#get_toc(ncode) ⇒ Object



46
47
48
49
# File 'lib/ncode_syosetu/client.rb', line 46

def get_toc(ncode)
  url = toc_url(ncode)
  NcodeSyosetu::Model::Toc.new(get_content(toc_url(ncode)))
end

#toc_url(ncode) ⇒ Object



56
57
58
# File 'lib/ncode_syosetu/client.rb', line 56

def toc_url(ncode)
  "https://#{@host}/#{ncode}"
end