kakuyomu_agent 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df46330ed2ed382cb48584d81784b1741617198d54ac917d8ebf81fa953a308a
4
- data.tar.gz: 62acb18cd078c471118843930cf21a69824e00f39205ff898c5ab8a65d53c7ae
3
+ metadata.gz: 8bd7ae5a232382bdb675d7ccbe33ec111faa4be0f5aba100a899b0cebf15d0ad
4
+ data.tar.gz: 6d1f83cc522b51fcf1fbc13ffb15eff440665c6b1ab8bb2aed3e1ab6b95f646b
5
5
  SHA512:
6
- metadata.gz: 373249746dafa9f5cb2ad1f63aa006842f048548bba0ec3b82d8ae94c9b88ca92dde3f25dc7b5d5df78748fe82962a75f9c6efe7d51ae26604901564e0660f1e
7
- data.tar.gz: 6c8e003cd34eee24984ef22a0cd6f02acb04b4ab5cb6a374fe33e09865e651c259928c862c0699c842ef9b682c0c2b7adc3f8b416cc55293167c26f41f8bfaad
6
+ metadata.gz: 2eb0598016b5aacc23bbf10c73d3461100cb1ccf8555fffb044799bd234f2a0c47d3f3d9f006e857546df0efd95647adb79f214a70ca1f8aee1d3b220bbce429
7
+ data.tar.gz: 3a42bcb5f634c23e83fa13fe151ad343ee0f3afc21b1575ab41efa8d13b702f476558ceaf8d2350fe2c2861773bc8edc2f9ad86d146ba7d3f7c4686d6e720e6a
@@ -35,9 +35,9 @@ class KakuyomuAgent
35
35
  Actions::CreateEpisode.new(self).run(work_id, title, body, date)
36
36
  end
37
37
 
38
- def update_episode(work_id:, episode_id:, title:, body:)
38
+ def update_episode(work_id:, episode_id:, title:, body:, date: nil)
39
39
  raise NotLoggedInError unless logged_in?
40
- Actions::UpdateEpisode.new(self).run(work_id, episode_id, title, body)
40
+ Actions::UpdateEpisode.new(self).run(work_id, episode_id, title, body, date)
41
41
  end
42
42
 
43
43
  def delete_episode(work_id:, episode_id:)
@@ -1,26 +1,54 @@
1
1
  class KakuyomuAgent
2
2
  module Actions
3
3
  class UpdateEpisode < Action
4
- def run(work_id, episode_id, title, body)
4
+ def run(work_id, episode_id, title, body, date = nil)
5
5
  driver.get(edit_episode_url(work_id, episode_id))
6
6
 
7
- title_input = driver.find_element(name: 'title')
8
- title_input.clear
9
- title_input.send_keys(title)
7
+ driver.find_element(name: 'title').tap do |title_input|
8
+ title_input.clear
9
+ title_input.send_keys(title)
10
+ end
11
+ driver.find_element(name: 'body').tap do |body_textarea|
12
+ body_textarea.clear
13
+ body_textarea.send_keys(body)
14
+ end
15
+
16
+ if date.nil? || date < Time.now
17
+ publish
18
+ else
19
+ reserve(date)
20
+ end
21
+
22
+ episode_url(work_id, episode_id)
23
+ rescue Selenium::WebDriver::Error::WebDriverError => e
24
+ raise ActionFailedError.new(e)
25
+ end
10
26
 
11
- body_textarea = driver.find_element(name: 'body')
12
- body_textarea.clear
13
- body_textarea.send_keys(body)
27
+ private
14
28
 
29
+ def publish
15
30
  driver.find_element(id: 'updateButton').click
16
31
 
17
32
  Selenium::WebDriver::Wait.new.until do
18
33
  driver.find_element(id: 'page-my-works-episodes-published')
19
34
  end
35
+ end
20
36
 
21
- episode_url(work_id, episode_id)
22
- rescue Selenium::WebDriver::Error::WebDriverError => e
23
- raise ActionFailedError.new(e)
37
+ def reserve(date)
38
+ driver.find_element(id: 'reserveButton').click
39
+ driver.find_element(name: 'reservation_date').tap do |date_input|
40
+ date_input.clear
41
+ date_input.send_keys(date.strftime('%F'))
42
+ end
43
+ driver.find_element(name: 'reservation_time').tap do |time_input|
44
+ time_input.clear
45
+ time_input.send_keys(date.strftime('%R'))
46
+ end
47
+ driver.find_element(id: 'reservationControl-footer').find_element(tag_name: 'button').click
48
+
49
+ Selenium::WebDriver::Wait.new.until do
50
+ driver.find_element(id: 'modelessMessage')
51
+ end
24
52
  end
25
53
  end
26
54
  end
@@ -1,3 +1,3 @@
1
1
  class KakuyomuAgent
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kakuyomu_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fuji Nakahara