309 lines
6.0 KiB
JavaScript
309 lines
6.0 KiB
JavaScript
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', 'photo'],
|
|
populate: {
|
|
photo: {
|
|
fields: ['name', 'url'],
|
|
},
|
|
},
|
|
},
|
|
streamAudio: {
|
|
populate: '*'
|
|
},
|
|
streamVideo: {
|
|
populate: '*'
|
|
},
|
|
traductions: {
|
|
populate: '*'
|
|
},
|
|
difference: {
|
|
fileds: ['date', 'id', 'paroles', 'jsonDiff', 'source', 'admin_user'],
|
|
populate: {
|
|
admin_user: {
|
|
fields: ['firstname']
|
|
}
|
|
}
|
|
}
|
|
},
|
|
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} = await request(`/artistes?${query}`, headers)
|
|
return data[0]
|
|
}
|
|
|
|
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 = await request(`/artistes?${query}`, headers)
|
|
return data
|
|
}
|
|
|
|
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(({attributes}) => attributes.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(({attributes}) => attributes.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}})
|
|
}
|