Skip to content

Commit fe7b52e

Browse files
committed
DojoNews取得メソッドの命名を明確化
- fetch_all_wordpress_posts → fetch_dojo_news_posts に変更 - より具体的で目的が明確な命名に改善 - DojoNews専用のWordPress REST API取得メソッドとして明確化
1 parent d7f3ead commit fe7b52e

File tree

1 file changed

+29
-21
lines changed

1 file changed

+29
-21
lines changed

lib/tasks/news.rake

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,34 @@ TASK_LOGGER = ActiveSupport::BroadcastLogger.new(
1313
ActiveSupport::Logger.new(STDOUT)
1414
)
1515

16+
# DojoNews (WordPress) REST APIから全投稿を取得するメソッド
17+
def fetch_dojo_news_posts(api_endpoint)
18+
items = []
19+
20+
loop.with_index(1) do |_, page|
21+
uri = URI(api_endpoint)
22+
uri.query = URI.encode_www_form(page: page, per_page: 100, status: 'publish')
23+
24+
response = Net::HTTP.get_response(uri)
25+
break unless response.is_a?(Net::HTTPSuccess)
26+
27+
posts = JSON.parse(response.body)
28+
break if posts.empty?
29+
30+
posts.each do |post|
31+
items << {
32+
'url' => post['link'],
33+
'title' => post['title']['rendered'],
34+
'published_at' => Time.parse(post['date_gmt'] + ' UTC').in_time_zone('Asia/Tokyo').iso8601
35+
}
36+
end
37+
38+
TASK_LOGGER.info("📄 WordPress API: ページ #{page} から #{posts.size} 件取得")
39+
end
40+
41+
items
42+
end
43+
1644
namespace :news do
1745
desc "RSS フィードを取得し、#{NEWS_YAML_PATH} に保存"
1846
task fetch: :environment do
@@ -112,27 +140,7 @@ namespace :news do
112140
TASK_LOGGER.info("📄 news.yml をリセットしました")
113141

114142
# 2. WordPress REST API からすべての投稿を取得
115-
dojo_news_items = []
116-
loop.with_index(1) do |_, index|
117-
uri = URI("https://news.coderdojo.jp/wp-json/wp/v2/posts")
118-
uri.query = URI.encode_www_form(page: index, per_page: 100, status: 'publish')
119-
120-
response = Net::HTTP.get_response(uri)
121-
break unless response.is_a?(Net::HTTPSuccess)
122-
123-
posts = JSON.parse(response.body)
124-
break if posts.empty?
125-
126-
posts.each do |post|
127-
dojo_news_items << {
128-
'url' => post['link'],
129-
'title' => post['title']['rendered'],
130-
'published_at' => Time.parse(post['date_gmt'] + ' UTC').in_time_zone('Asia/Tokyo').iso8601
131-
}
132-
end
133-
134-
TASK_LOGGER.info("📄 WordPress API: ページ #{index} から #{posts.size} 件取得")
135-
end
143+
dojo_news_items = fetch_dojo_news_posts("https://news.coderdojo.jp/wp-json/wp/v2/posts")
136144
TASK_LOGGER.info("📰 news.coderdojo.jp から #{dojo_news_items.size} 件を取得")
137145

138146
# 3. PR TIMES RSS フィードからすべてのプレスリリースを取得

0 commit comments

Comments
 (0)