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 +4 -4
- data/lib/kakuyomu_agent.rb +2 -2
- data/lib/kakuyomu_agent/actions/update_episode.rb +38 -10
- data/lib/kakuyomu_agent/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bd7ae5a232382bdb675d7ccbe33ec111faa4be0f5aba100a899b0cebf15d0ad
|
4
|
+
data.tar.gz: 6d1f83cc522b51fcf1fbc13ffb15eff440665c6b1ab8bb2aed3e1ab6b95f646b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2eb0598016b5aacc23bbf10c73d3461100cb1ccf8555fffb044799bd234f2a0c47d3f3d9f006e857546df0efd95647adb79f214a70ca1f8aee1d3b220bbce429
|
7
|
+
data.tar.gz: 3a42bcb5f634c23e83fa13fe151ad343ee0f3afc21b1575ab41efa8d13b702f476558ceaf8d2350fe2c2861773bc8edc2f9ad86d146ba7d3f7c4686d6e720e6a
|
data/lib/kakuyomu_agent.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
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
|
-
|
22
|
-
|
23
|
-
|
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
|