Class: NcodeSyosetu::Client
- Inherits:
-
Object
- Object
- NcodeSyosetu::Client
- Defined in:
- lib/ncode_syosetu/client.rb
Defined Under Namespace
Classes: NotFound
Instance Method Summary collapse
- #episode_url(ncode, number) ⇒ Object
- #get(ncode) ⇒ Object
- #get_episode(ncode, title, number) ⇒ Object
- #get_toc(ncode) ⇒ Object
-
#initialize(host: NcodeSyosetu::NCODE_HOST_NAME, logger: Logger.new(STDOUT), sleep: 0.5) ⇒ Client
constructor
A new instance of Client.
- #toc_url(ncode) ⇒ Object
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 = Mechanize::Cookie.new("over18", "yes", domain: ".syosetu.com", path: "/", expires: Time.now + 86400 * 365) @mechanize..add() 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 |