Skip to content
Snippets Groups Projects
api.js 2.85 KiB
Newer Older
  • Learn to ignore specific revisions
  • Marc Taylor's avatar
    Marc Taylor committed
    // src/utils/api.js
    import axios from 'axios';
    
    const API_BASE_URL = 'http://127.0.0.1:8000';
    axios.defaults.xsrfCookieName = 'csrftoken';
    axios.defaults.xsrfHeaderName = 'X-CSRFToken';
    axios.defaults.withCredentials = true;
    
    
    Marc Taylor's avatar
    Marc Taylor committed
    const TOKEN = localStorage.getItem("access_token"); // Replace with your Bearer token
    
    Marc Taylor's avatar
    Marc Taylor committed
    
    export const login = async (username, password) => {
      try {
    
    Marc Taylor's avatar
    Marc Taylor committed
        const response = await axios.post('http://127.0.0.1:8000/token/', {
    
    Marc Taylor's avatar
    Marc Taylor committed
          username: username,
          password: password
        }, {
          headers: {
            'Content-Type': 'application/json'
          },
          withCredentials: true  // Include cookies in the request
        });
    
    Marc Taylor's avatar
    Marc Taylor committed
        localStorage.clear();
        localStorage.setItem('access_token', response.data.access);
        localStorage.setItem('refresh_token', response.data.refresh);
    
        console.log('Login success:', response);
    
    Marc Taylor's avatar
    Marc Taylor committed
        return response.status
      } catch (error) {
        console.error('Login error:', error);
      }
    }
    
    
    
    export const addProduct = async (img, price, rentPrice, name, size, userID) => {
      const formData = new FormData();
      formData.append("image", img)
      formData.append("price", price)
      formData.append("rent_price", rentPrice)
      formData.append("name", name)
      formData.append("size", size)
      formData.append("user_id", userID)
      
      try {
        const response = await axios.post('http://127.0.0.1:8000/themeApp/products/', formData, {
          headers: {
    
            'Content-Type': 'multipart/form-data',
            'Authorization': `Bearer ${TOKEN}`
    
          },
        });
        console.log('Added product successfully:', response.data);
        return response.status
      } catch (error) {
        console.error('Error in adding product:', error)
      }
    }
    
    
    export const getAllProducts = async () => {
      console.log('Fetching all products');
      try {
        const response = await axios.get('http://127.0.0.1:8000/themeApp/products/', {
          headers: {
            'Content-Type': 'application/json'
          },
        });
        console.log('Products :', response.data);
        return response.data
      } catch (error) {
        console.error('Error in adding product:', error)
      }
    }
    
    Marc Taylor's avatar
    Marc Taylor committed
    
    export const getLoggedInUser = async () => {
      try {
        const {data} = await axios.get('http://localhost:8000/themeApp/user/', {
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${TOKEN}`
        }
        });
        return data.user;
      } catch (e) {
          console.log('not auth', e)
          return false;
      }
    }
    
    export const getUserProducts = async () => {
      const user = await getLoggedInUser();
      console.log(user.id, 'userID');
      // const allProducts = await
    }
    
    // getUserProducts();
    
    Marc Taylor's avatar
    Marc Taylor committed
    // Other API calls can be added here
    
    
    export const getAllProducts = async () => {
      try {
        const result = await axios.get('http://127.0.0.1:8000/themeApp/products/', {
          headers: {
            'Content-Type': 'application/json',
        }
        });
        return result;
      } catch (e) {
        console.log('not auth', e)
        return false;
      }
    }