repo.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { reactive } from "vue";
  2. import { Base64 } from 'js-base64'
  3. import request from '@/utils/request'
  4. export default function useRepo() {
  5. const repo = reactive({})
  6. const getRepo = (user, repo = 'my-note') => {
  7. const { access_token } = user.token
  8. return request.get(`/api/v5/repos/${user.login}/${repo}`, { params: { access_token } }).then(res => Object.assign(repo, res))
  9. }
  10. const newRepo = (user, name = 'my-note') => {
  11. const { access_token } = user.token
  12. const data = {
  13. access_token,
  14. name,
  15. private: false,
  16. auto_init: true,
  17. }
  18. return request.post('/api/v5/user/repos', data).then(res => Object.assign(repo, res))
  19. }
  20. const newBranch = (user, branch_name = 'master', repo = 'my-note') => {
  21. const { access_token } = user.token
  22. const data = {
  23. access_token,
  24. refs: 'master',
  25. branch_name,
  26. }
  27. return request.post(`/api/v5/repos/${user.login}/${repo}`, data).then(res => Object.assign(repo, res))
  28. }
  29. const newFile = (content, path, user, repo = 'my-note') => {
  30. const { access_token } = user.token
  31. const data = {
  32. access_token,
  33. content: Base64.encode(content),
  34. message: new Date().toJSON(),
  35. }
  36. return request.post(`/api/v5/repos/${user.login}/${repo}/contents/${path}`, data)
  37. }
  38. return {
  39. repo,
  40. getRepo,
  41. newRepo,
  42. newBranch,
  43. newFile,
  44. }
  45. }