script.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. async function getGQL(url) {
  2. return async (query, variables) => {
  3. let options = {
  4. method: 'POST',
  5. headers: {
  6. "Content-Type": "application/json",
  7. },
  8. body: JSON.stringify({ query, variables })
  9. }
  10. if(localStorage.authToken) {
  11. options.headers.Authorization = `Bearer ${localStorage.authToken}`
  12. }
  13. console.log(options.headers)
  14. try {
  15. let response = await fetch(url, options)
  16. let { data } = await response.json()
  17. console.log('data reseved', data)
  18. return data[Object.keys(data)[0]]
  19. } catch (e) {
  20. console.warn('an eror occured', e)
  21. }
  22. }
  23. }
  24. (async () => {
  25. const gql2 = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  26. console.log('from getGQL: ', (await gql2(`
  27. query cats{
  28. CategoryFind(query:"[{}]"){
  29. name goods{
  30. name
  31. }
  32. }
  33. }`
  34. , { login: 'tst', password: '123' })))
  35. })()
  36. let _id = "61a762f9c750c12ba6ba40aa"
  37. async function catById(_id) {
  38. let gql = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  39. let data = await gql(`query catById($query:String){
  40. CategoryFindOne(query:$query){
  41. name goods{
  42. _id name
  43. }
  44. }
  45. }`, { query: JSON.stringify([{ _id }]) })
  46. return data
  47. }
  48. async function loginAndToken(log, pass) {
  49. let gql = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  50. let data = await gql(`
  51. query log($login:String, $password:String) {
  52. login(login: $login, password: $password)
  53. }`, {login: log, password: pass})
  54. return data
  55. }
  56. async function registerUser(obj) {
  57. let gql = await getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  58. let data = await gql(`
  59. mutation register($login:String, $password:String, $nick:String) {
  60. UserUpsert(
  61. user: { login: $login, password: $password }){
  62. login _id
  63. }
  64. }`, {user: obj})
  65. return data
  66. }
  67. (async () => {
  68. localStorage.authToken = await loginAndToken("OLDBOY228", "3321")
  69. console.log('info token', localStorage.authToken)
  70. console.log('idis', await catById(_id))
  71. console.log('New user', await registerUser({login:"123F11F", password:"123"}))
  72. })()