restQiitaAPI.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 'use strict';
  2. // Qiita API v2 documant https://qiita.com/api/v2/docs
  3. module.exports = function(qiitaTeam, qiitaToken) {
  4. var restQiitaAPI = {};
  5. const team = qiitaTeam;
  6. const token = qiitaToken;
  7. const axiosBase = require('axios');
  8. const axios = axiosBase.create({
  9. baseURL: `https://${team}.qiita.com/api/v2`,
  10. headers: {
  11. 'Content-Type': 'application/json',
  12. 'X-Requested-With': 'XMLHttpRequest',
  13. 'authorization': `Bearer ${token}`
  14. },
  15. responseType: 'json'
  16. });
  17. function restAPI(path) {
  18. return axios.get(path)
  19. .then(function(res) {
  20. const data = res.data;
  21. const total = res.headers['total-count'];
  22. return {data, total};
  23. })
  24. .catch(function(err) {
  25. return err;
  26. });
  27. };
  28. restQiitaAPI.getQiitaUser = async function() {
  29. try {
  30. const res = await restAPI('/users');
  31. const user = res.data;
  32. if(user.length > 0) {
  33. return user;
  34. }
  35. } catch (err) {
  36. throw err;
  37. }
  38. };
  39. restQiitaAPI.getQiitaPages = async function(pageNum, per_page) {
  40. try {
  41. const res = await restAPI(`/items?page=${pageNum}&per_page=${per_page}`);
  42. const pages = res.data;
  43. const total = res.total;
  44. if(pages.length > 0) {
  45. return {pages, total};
  46. }
  47. } catch (err) {
  48. throw err;
  49. }
  50. };
  51. return restQiitaAPI;
  52. }