feat: ajout de la fonctionnalité de conversion de fichiers CBR en CBZ, intégration d'un nouveau store pour gérer l'état de conversion, création de composants Vue pour l'upload de fichiers et le suivi de la progression, ainsi que la mise à jour de l'API pour gérer les conversions. Amélioration de la documentation API pour inclure les nouveaux endpoints et formats de fichiers supportés.

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-07-16 11:33:28 +02:00
parent 7a05934116
commit d9e78b5229
9 changed files with 1599 additions and 4 deletions

View File

@@ -205,6 +205,22 @@
"_embedded"
]
}
},
"multipart/form-data": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"application/x-cbz": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ContentSource"
}
}
}
}
}
@@ -258,6 +274,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"links": {}
@@ -294,6 +320,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"required": true
@@ -331,6 +367,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
}
},
@@ -374,6 +420,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"links": {}
@@ -410,6 +466,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"required": true
@@ -447,6 +513,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
}
},
@@ -502,6 +578,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"links": {}
@@ -556,6 +642,16 @@
"schema": {
"$ref": "#/components/schemas/ContentSource.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/ContentSource"
}
}
},
"required": true
@@ -564,6 +660,53 @@
},
"parameters": []
},
"/api/conversions/convert": {
"post": {
"operationId": "api_conversionsconvert_post",
"tags": [
"Conversion"
],
"responses": {
"200": {
"description": "File converted successfully",
"content": {
"application/x-cbz": {
"schema": {
"type": "string",
"format": "binary"
}
}
}
}
},
"summary": "Convert comic book file to CBZ",
"description": "Converts a CBR or CBZ file to CBZ format and returns the converted file for download",
"parameters": [],
"requestBody": {
"description": "",
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "Comic book file to convert (CBR, CBZ, max 150MB)"
}
}
}
}
},
"required": false
},
"deprecated": false
},
"parameters": []
},
"/api/jobs": {
"get": {
"operationId": "api_jobs_get_collection",
@@ -757,6 +900,22 @@
"_embedded"
]
}
},
"multipart/form-data": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Job"
}
}
},
"application/x-cbz": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Job"
}
}
}
}
}
@@ -1056,6 +1215,12 @@
},
"application/hal+json": {
"schema": {}
},
"multipart/form-data": {
"schema": {}
},
"application/x-cbz": {
"schema": {}
}
}
},
@@ -1114,6 +1279,16 @@
"schema": {
"$ref": "#/components/schemas/Mangadex.MangaSearchCollection.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Mangadex.MangaSearchCollection"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Mangadex.MangaSearchCollection"
}
}
}
},
@@ -1336,6 +1511,22 @@
"_embedded"
]
}
},
"multipart/form-data": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Manga.MangaCollection"
}
}
},
"application/x-cbz": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Manga.MangaCollection"
}
}
}
}
}
@@ -1392,6 +1583,16 @@
"schema": {
"$ref": "#/components/schemas/Manga.MangaDetail.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Manga.MangaDetail"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Manga.MangaDetail"
}
}
}
},
@@ -1450,6 +1651,16 @@
"schema": {
"$ref": "#/components/schemas/Manga.MangaDetail.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Manga.MangaDetail"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Manga.MangaDetail"
}
}
}
},
@@ -1508,6 +1719,16 @@
"schema": {
"$ref": "#/components/schemas/Manga.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
}
},
"links": {}
@@ -1544,6 +1765,16 @@
"schema": {
"$ref": "#/components/schemas/Manga.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
}
},
"required": true
@@ -1581,6 +1812,16 @@
"schema": {
"$ref": "#/components/schemas/Mangadex.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Mangadex"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Mangadex"
}
}
},
"links": {}
@@ -1733,6 +1974,16 @@
"schema": {
"$ref": "#/components/schemas/Chapters.ChapterCollection.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Chapters.ChapterCollection"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Chapters.ChapterCollection"
}
}
}
},
@@ -1840,6 +2091,16 @@
"schema": {
"$ref": "#/components/schemas/Manga.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
}
},
"links": {}
@@ -1894,6 +2155,16 @@
"schema": {
"$ref": "#/components/schemas/Manga.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Manga"
}
}
},
"required": true
@@ -2022,6 +2293,16 @@
"schema": {
"$ref": "#/components/schemas/Scraping.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Scraping"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Scraping"
}
}
},
"links": {}
@@ -2101,6 +2382,12 @@
},
"application/hal+json": {
"schema": {}
},
"multipart/form-data": {
"schema": {}
},
"application/x-cbz": {
"schema": {}
}
}
},
@@ -2461,6 +2748,16 @@
"schema": {
"$ref": "#/components/schemas/Scraping.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Scraping"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Scraping"
}
}
},
"links": {}
@@ -2497,6 +2794,16 @@
"schema": {
"$ref": "#/components/schemas/Scraping.jsonhal"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Scraping"
}
},
"application/x-cbz": {
"schema": {
"$ref": "#/components/schemas/Scraping"
}
}
},
"required": true
@@ -3297,6 +3604,154 @@
}
}
},
"Conversion": {
"type": "object",
"description": "",
"deprecated": false,
"properties": {
"file": {
"type": [
"string",
"null"
],
"format": "binary"
},
"fileName": {
"type": [
"string",
"null"
]
},
"fileContent": {},
"filename": {
"type": [
"string",
"null"
]
},
"originalConvertedFilePath": {
"type": [
"string",
"null"
]
}
}
},
"Conversion.jsonhal": {
"type": "object",
"description": "",
"deprecated": false,
"properties": {
"_links": {
"type": "object",
"properties": {
"self": {
"type": "object",
"properties": {
"href": {
"type": "string",
"format": "iri-reference"
}
}
}
}
},
"file": {
"type": [
"string",
"null"
],
"format": "binary"
},
"fileName": {
"type": [
"string",
"null"
]
},
"fileContent": {},
"filename": {
"type": [
"string",
"null"
]
},
"originalConvertedFilePath": {
"type": [
"string",
"null"
]
}
}
},
"Conversion.jsonld": {
"type": "object",
"description": "",
"deprecated": false,
"properties": {
"@context": {
"readOnly": true,
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"@vocab": {
"type": "string"
},
"hydra": {
"type": "string",
"enum": [
"http://www.w3.org/ns/hydra/core#"
]
}
},
"required": [
"@vocab",
"hydra"
],
"additionalProperties": true
}
]
},
"@id": {
"readOnly": true,
"type": "string"
},
"@type": {
"readOnly": true,
"type": "string"
},
"file": {
"type": [
"string",
"null"
],
"format": "binary"
},
"fileName": {
"type": [
"string",
"null"
]
},
"fileContent": {},
"filename": {
"type": [
"string",
"null"
]
},
"originalConvertedFilePath": {
"type": [
"string",
"null"
]
}
}
},
"Job": {
"type": "object",
"description": "Liste des jobs",