千里の道も1commitから

関西在住のWebエンジニアです。長らくブログをサボっていたので、1日1記事、1commitを目標にゆるりと頑張ります。積み重ねが研鑽となると信じて

Tumblr APIからお気に入りポストを取得する

標題の通り、Tumblr API経由でデータを取得する際のメモ お気に入りデータを取得したい。

www.tumblr.com

How to Use

GitHub - tumblr/tumblr.js: JavaScript client for the Tumblr APIを使用したところ、楽にclientを生成することが出来たため、使用することに

const util = require('util');
const tumblr = require('tumblr.js');

const createClient = (token, tokenSecret) => {
  return tumblr.createClient({
    consumer_key: process.env.TUMBLR_CONSUMER_KEY,
    consumer_secret: process.env.TUMBLR_CONSUMER_SECRET,
    token: 'ZSLJV5JtLU6POto9vFWCXDQ5yfBiJiRszX7nyqnpEHoNo61hCC',
    token_secret: 'IDQ9FT0coMaAgFuGahjtDitzYMSbsV9BmvhWo6i18qJjyHSOWt'
  });
};

const fetchLikes = async (client, params) => {
  // TODO: params validation
  const userLikes = util.promisify(client.userLikes);
  const res = await userLikes({ limit: 100 });
  return res;
};

module.exports = {
  createClient,
  fetchLikes

Test

'use strict';

const tumblrApi = require('../../apis/tumblr');

describe('api/tumblrのテスト', () => {
  test('likeのテスト', async () => {
    // token,tokenSecretは適宜書き換え
    const token = '下記console/callsから取得したtoken';
    const tokenSecret = '下記console/callsから取得したsecret token';
    const res = await tumblrApi.fetchLikes(
      tumblrApi.createClient(token, tokenSecret),
      { limit: 100 }
    );
    console.log(res);
    expect(res).not.toBeNull();
  });
});

OAuth1.0はhttps://github.com/jaredhanson/passport-tumblrを実装している。 token,tokenn_secretをテストコードで取得することができないので、以下のUIから発行している。 api.tumblr.com

うーーん。ただ、token,secretToken直書きもいかがなモノだし。なんかうまい方法はないものか。。。

envを取得するために、dotennvをjestに読み込ませるのをお忘れなく

package.json

  "jest": { 
    "setupFiles": [
      "dotenv/config"
    ]
  },  

参考