index.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // // получение объекта из jwt токена
  2. // const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOnsiaWQiOiI2MWE0ZGIyOWM3NTBjMTJiYTZiYTQwMjIiLCJsb2dpbiI6ImVxd2VxZXdldyIsImFjbCI6WyI2MWE0ZGIyOWM3NTBjMTJiYTZiYTQwMjIiLCJ1c2VyIl19LCJpYXQiOjE2MzgxOTQ1NzZ9.Pi1GO6x7wdNrIrUKCQT-32-SsqmgFY-oFDrrXmw74-8'
  3. // JSON.parse(atob(token.split('.')[1]))
  4. // // получение контрольных сумм
  5. // let qqq = 'fdhfakfalfjskgfsdadasdasdasdasdadfsdfkarieqfowerdaesfa'
  6. // function checkSum(str) {
  7. // let res = 0
  8. // for (let letter of str) {
  9. // res += letter.charCodeAt()
  10. // }
  11. // return res
  12. // }
  13. // console.log(checkSum(qqq))
  14. // // добавление соли (секретная последовательность) к информации
  15. // // для формирования уникальной контрольной суммы
  16. // function sign(data, salt) {
  17. // const json = JSON.stringify(data)
  18. // const sum = checkSum(json + salt)
  19. // return json + sum
  20. // }
  21. // function verify(signed, salt) {
  22. // const json = signed.slice(0, signed.lastIndexOf('}') + 1)
  23. // const tokenSum = + signed.slice(signed.lastIndexOf('}') + 1)
  24. // const sum = checkSum(json + salt)
  25. // console.log(json, tokenSum, sum)
  26. // return sum === tokenSum
  27. // }
  28. // добавить заголовок Authorization если в localStorage есть authToken (не забудьте слово Bearer и пробел после него.
  29. // Таким образом все запросы будут уходить не анонимно если в localStorage есть токен.
  30. const originalFetch = fetch;
  31. fetch = (url, params={headers:{}}) => {
  32. if (localStorage.authToken !== 'undefined') {
  33. params.headers.Authorization = "Bearer " + localStorage.authToken
  34. }
  35. return originalFetch(url, params)
  36. }
  37. const getGQL = (url) => (
  38. (query, variables) => fetch(url, {
  39. method: 'POST',
  40. headers: {
  41. "Content-Type": "application/json"
  42. },
  43. body: JSON.stringify({query, variables})
  44. }).then(res => res.json()).then((data) => {
  45. if ('errors' in data) {
  46. Promise.reject(new Error('ОШИБКА'))
  47. // throw new Error('GFSFSDFS')
  48. } else {
  49. return data.data
  50. }
  51. })
  52. );
  53. (async function() {
  54. const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  55. console.log((await gql(`query cats($q:String) {
  56. CategoryFind(query:$q){
  57. name goods{
  58. name images{
  59. url
  60. }
  61. }
  62. }
  63. }`, {q: "[{}]"})))
  64. console.log((await gql(`
  65. query NameForMe1($login:String, $password:String){
  66. login(login:$login, password:$password)
  67. }
  68. `, {login: 'tst', password: '123'})))
  69. console.log(await gql(`query userFind {
  70. UserFind(query: "[{}]") {
  71. login
  72. nick
  73. }
  74. }`, {q: "[{}]"}))
  75. // написать функции по типу:
  76. // для логина, регистрации, а так же для остальных страниц будущего сайта, которые вам пришли на ум.
  77. function catById(_id){
  78. return gql(`query catById($query:String) {
  79. CategoryFindOne(query:$query) {
  80. name goods{
  81. _id name
  82. }
  83. }
  84. }`, {query: JSON.stringify([{_id}])})
  85. }
  86. console.log(await catById("5dc45acf5df9d670df48cc48"))
  87. })()