restQiitaAPI.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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 new Promise((resolve, reject) => {
  19. axios.get(path)
  20. .then(function(res) {
  21. const data = res.data;
  22. const total = res.headers['total-count'];
  23. resolve([data, total]);
  24. })
  25. .catch(function(err) {
  26. reject(err);
  27. });
  28. });
  29. };
  30. restQiitaAPI.getQiitaUser = function() {
  31. return new Promise((resolve, reject) => {
  32. restAPI('/users')
  33. .then(function(res) {
  34. const user = res[0];
  35. if(user.length > 0) {
  36. resolve(user);
  37. }
  38. else {
  39. reject('Incorrect team name or access token.');
  40. }
  41. })
  42. .catch(function(err){
  43. reject(err);
  44. })
  45. });
  46. };
  47. restQiitaAPI.getQiitaPages = function(pageNum, per_page) {
  48. return new Promise((resolve, reject) => {
  49. restAPI(`/items?page=${pageNum}&per_page=${per_page}`)
  50. .then(function(res) {
  51. const pages = res[0];
  52. const total = res[1];
  53. if(pages.length > 0) {
  54. resolve([pages, total]);
  55. }
  56. else {
  57. reject('page not find.');
  58. }
  59. })
  60. .catch(function(err){
  61. reject(err);
  62. })
  63. });
  64. };
  65. return restQiitaAPI;
  66. }