VS Code拡張で、はてなブログにWSSE認証で投稿する方法です!
ステキなパッケージを発見したお陰で、一気に解決しました!
使ったパッケージ
今回sfpgmr/node-hatena-blog-api2を使用しました!
使い方についても、サンプルがREADMEにかかれているので超ステキ!
これのお陰で超楽に投稿ができたので感謝しかありません!
パッケージのインストール
インストールは
$ npm install https://github.com/sfpgmr/node-hatena-blog-api2
ちなみに昔のnpm installは「--save」というオプションが必要だったらしいですが、今はいらないらしいです。
実行すると、package.jsonのdependenciesに追加されます。
編集するファイル
extension.jsを編集していきます。
モジュールの読み込み
先頭付近にある
const vscode = require('vscode');
の下に
const Blog = require('hatena-blog-api2').Blog;
を追加します。
記事をアップする処理
記事をアップする処理を作っていきます。
このような関数を作ります。
function post() { let client = new Blog({ type: 'wsse', userName: 'はてなブログID', blogId: 'ブログID', apiKey: 'APIキー' }); // POST CollectionURI (/<username>/<blog_id>/atom/entry) client.postEntry({ title: 'VS Codeから送ってるよ!', updated: new Date(2019,10,30,10,10), content: '## 早口言葉!\r\n早口ことばだよ!\r\n## その1\r\n隣の柿はよく客食う柿だ\r\n', categories: ['vscode','早口言葉'] }) .then((res)=>{ console.log('-- posted complete! --\n',JSON.stringify(res,null,1)); }) .catch((err)=>{ console.log(err) }); }
これを適当にコマンドに割り当ててあげます。
コマンドの割当については前記事のコチラを参照。
試しに実行
例のごとくF1→コマンド実行します。
ちゃんと投稿できてますね!
下書き投稿にする場合
下書きにしたい場合、client.postEntry()の引数を少し修正します。
JSONの中に「draft : true」を追加します。
client.postEntry({ title: 'はっや', updated: new Date(2019,10,30,10,10), content: '## 早言!\r\n早口ことば!\r\n## これだ\r\n生麦 生米 生GO\r\n', categories: ['vscode','早口言葉'], draft: true })
ちゃんと下書きに追加されました!
作成中に発生したエラー
作成中
Activating extension `undefined_publisher.hatenauploader` failed: constructor:userNameが空白・null・未指定です。正しいはてなブログユーザー名を指定してください。
というエラーがでました。
原因はこの
let client = new Blog({ type: 'wsse', username: 'はてなブログID', blogId: 'ブログID', apiKey: 'APIキー' });
でした。
サンプルをコピペしていたが、「userName」が「username」と全て小文字になっていました。
参考
コチラを参考にしました。ありがとうございました!
あとがき
VS Code拡張開発の、はてなブログにWSSE認証で投稿する方法についてでした!
やりたいことが徐々にできていく感じですごくいい感じ!