import axios from 'axios'; // export default function useGpodder({ export default function useGPodder({ baseURL, throwHandler = (err) => err, gPodderUser, useCredentials }) { const gpodder = axios.create({ baseURL, credentials: useCredentials ? "include" : "omit", headers: { 'Content-Type': 'application/json', } }); let auth = { username: gPodderUser?.username || "", password: gPodderUser?.password || "" }; gpodder.interceptors.response.use((response) => response, (error) => { // whatever you want to do with the error throwHandler(error); throw error; }); return { /******************************************************************************/ /* Authentication API */ /******************************************************************************/ async register(gPodderUser) { return gpodder.post(`/api/2/auth/register.json`, gPodderUser); }, async login(gPodderUserData) { auth = gPodderUserData; gPodderUser = gPodderUserData return gpodder.post(`/api/2/auth/${gPodderUser.username}/login.json`, {}, {auth}); }, async logout() { return gpodder.post(`/api/2/auth/${gPodderUser.username}/logout.json`, {}, {auth}); }, async changePassword(passwordChange) { return gpodder.put(`/api/2/auth/${gPodderUser.username}/changepassword.json`, passwordChange, {auth}); }, async forgotPassword({email}) { return gpodder.post(`/api/2/auth/${email}/forgot.json`, {}); }, // no auth! async resetPassword({username, password, token}) { return gpodder.put(`/api/2/auth/${username}/resetpassword.json?token=${token}`, {password}); }, async deleteAccount(passwordData) { return gpodder.delete(`/api/2/auth/${gPodderUser.username}/delete.json`, {auth, data: passwordData}); }, /******************************************************************************/ /* Subscription API */ /******************************************************************************/ async getTitles() { return gpodder.get(`/subscriptions/titles/${gPodderUser.username}.json`, {auth}); }, async putSubscriptions(subscriptions) { return gpodder.put(`/subscriptions/${gPodderUser.username}/device.json`, subscriptions, {auth}); }, async postSubscriptions(subscriptions) { return gpodder.post(`/api/2/subscriptions/${gPodderUser.username}/device.json`, subscriptions, {auth}); }, /******************************************************************************/ /* EpisodeActions API */ /******************************************************************************/ async getEpisodeActions() { return gpodder.get(`/api/2/episodes/${gPodderUser.username}.json`, {auth}); }, async postEpisodeActions(episodeActions) { return gpodder.post(`/api/2/episodes/${gPodderUser.username}.json`, episodeActions, {auth}); }, } }