import qs from 'qs' const OKI_API = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:1337' const AWTIS_POU_CHAK_PAJ = process.env.NEXT_PUBLIC_AWTIS_POU_CHAK_PAJ || 6 const readToken = process.env.NEXT_PUBLIC_READ_TOKEN || 'read-token' const headers = { next: {revalidate: 60}, headers: { Authorization: `Bearer ${readToken}` } } async function request(url, opts = {}) { const {...options} = opts try { const res = await fetch(`${OKI_API}${url}`, options) return res.json() } catch { throw new Error('Eshwe pu jwenn done-a') } } export async function jwennTeksEpiSlug(slug) { const query = qs.stringify({ populate: { user: { fields: ['username'] }, userAdmin: { fields: ['username', 'firstname'] }, commentaires: { fields: ['contenu', 'datePublication'], populate: { user: { fields: ['username'] } } }, couverture: { populate: '*' }, files: { populate: '*' }, artistes: { fields: ['alias', 'slug', 'musicBrainzUrl'], }, streamAudio: { populate: '*' }, streamVideo: { populate: '*' }, traductions: { populate: '*' } }, filters: { slug: { $eq: slug } } }, { encodeValuesOnly: true }) const {data} = await request(`/paroles?${query}`, headers) return data[0] } export async function jwennAwtisEpiSlug(slug) { const query = qs.stringify({ populate: ['paroles', 'photo', 'paroles.couverture'], filters: { slug: { $eq: slug } } }, { encodeValuesOnly: true }) const {data, meta} = await request(`/artistes?${query}`, headers) return {data: data[0], meta} } export async function jwennAwtisPajinasyon(paj) { const start = AWTIS_POU_CHAK_PAJ * (paj - 1) const query = qs.stringify({ populate: ['paroles', 'photo'], sort: ['publishedAt:desc'], pagination: { start, limit: AWTIS_POU_CHAK_PAJ } }, { encodeValuesOnly: true }) const {data, meta} = await request(`/artistes?${query}`, headers) return {data, meta} } export async function jwennToutAwtis() { const query = qs.stringify({ populate: ['photo'], sort: ['alias:asc'], pagination: { pageSize: 100 } }, { encodeValuesOnly: true }) const data = await request(`/artistes?${query}`, headers) return data } export async function jwennTeks() { const query = qs.stringify({ populate: { user: { fields: ['username'] }, userAdmin: { fields: ['username', 'firstname'] }, commentaires: { fields: ['contenu', 'datePublication'], populate: { user: { fields: ['username'] } } }, couverture: { populate: '*' }, artistes: { fields: ['alias', 'slug'] }, streamAudio: { populate: '*' }, streamVideo: { populate: '*' }, traductions: { populate: '*' } }, sort: ['titre:asc'], pagination: { pageSize: 100 } }, { encodeValuesOnly: true }) const {data} = await request(`/paroles?${query}`, headers) return data } export async function jwennAwtisSlug() { const query = qs.stringify({ sort: ['publishedAt:desc'], pagination: { pageSize: 100 } }, { encodeValuesOnly: true }) const {data} = await request(`/artistes?${query}`, headers) return data.map(({slug}) => slug) } export async function jwennTeksSlug() { const query = qs.stringify({ sort: ['publishedAt:desc'], pagination: { pageSize: 100 } }, { encodeValuesOnly: true }) const {data} = await request(`/paroles?${query}`, headers) return data.map(({slug}) => slug) } export async function jwennDenyeTeks() { const query = qs.stringify({ populate: ['artistes', 'couverture'], sort: ['publishedAt:desc'], pagination: { limit: 6 } }, { encodeValuesOnly: true }) const {data} = await request(`/paroles?${query}`, headers) return data } export async function jwennAnTeks(teksId, token) { const headers = { 'content-type': 'application/json', Authorization: `Bearer ${token}` } const data = await request(`/paroles/${teksId}`, {headers}) return data } export async function jwennKomanteEpiTeksId(teksId) { const query = qs.stringify({ sort: ['publishedAt:desc'], populate: ['paroles', 'user'], filters: { parole: { id: { $eq: teksId } } } }, { encodeValuesOnly: true }) const data = await request(`/commentaires?${query}`, headers) return data } export async function jwennUserEpiToken(userToken) { const data = await request('/users/me', { headers: { Authorization: `Bearer ${userToken}` } }) return data } export async function jwennUserEpiUsername(username) { const query = qs.stringify({ filters: { username: { $eq: username } } }, { encodeValuesOnly: true }) const data = await request(`/users?${query}`, headers) return data[0] } export async function jwennUserEpiEmail(email) { const query = qs.stringify({ filters: { email: { $eq: email }, confirmed: { $eq: false }, blocked: { $eq: false } } }, { encodeValuesOnly: true }) const data = await request(`/users?${query}`, headers) return data[0] } export async function passwordRequest(lyen, email) { await request(`/auth/${lyen}`, { method: 'POST', body: {email} }) } export async function jwennStats() { return request('/stats', {next: {revalidate: 60}}) }