とーますメモ

Ruby on Rails / Goなどの学習メモ

【Ruby】はてなブログをAtomAPIを使用して作成してみた

Rubyで記事をAtomを使用して更新する方法としては、「atomutil」というgemを使用するのが定番のようだが
いろんな記事を見てみると、新しいRubyのバージョンだと、文字エンコーディングのエラーが発生するため
「atomutil」をforkした「ruby-atomutil」というgemを使用している記事が多い。

[参考]
はてなブログのAPIを使って、記事を投稿するRubyサンプル · GitHub
Ruby | はてなダイアリーAtomPubをRubyから利用してブログ記事を投稿する - Tbpgr Blog

しかし、2018年9月4日で最新版(0.1.5)が更新されて
この文字系のエラーが解消されているので以下のように書けば、記事を作成できる。

インストール

gem 'atomutil', '~> 0.1.5'

コード

def initialize
  @user_id         = ENV['HATENA_USER_ID']
  @password        = ENV['HATENA_API_KEY']
  @create_page_url = "#{ENV['HATENA_BLOG_ROOT_END_POINT']}/entry"
end

def create(title, content)
  auth   = Atompub::Auth::Wsse.new(username: @user_id, password: @password)
  client = Atompub::Client.new(auth: auth)

  entry = Atom::Entry.new({
    title:   title,
    content: content
  })

  client.create_entry(@create_page_url, entry)
end

...
...

title   = 'テストタイトル'
content = <<~'EOS'
  *表題
  - リスト1
  - リスト2
EOS

create(title content)

[他参考]
Rubyのヒアドキュメントの書き方いろいろ - Hack Your Design!
Ruby:はてなブログAPIを使って記事の一覧をJSON形式で取得する - Madogiwa Blog