Files
pawol.nu/lib/oki-api.js
T

300 lines
5.8 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 = {
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: '*'
},
artistes: {
fields: ['alias', 'slug']
},
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')
}