
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認証で投稿する方法についてでした!
やりたいことが徐々にできていく感じですごくいい感じ!