Skip to content

Commit 71df10b

Browse files
i18n(fr): translate files in storage-api
See #194
1 parent 80fd852 commit 71df10b

File tree

3 files changed

+288
-0
lines changed

3 files changed

+288
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
---
2+
i18nReady: true
3+
title: Point de terminaison de l'API
4+
description: Découvrez les points de terminaison de l'API disponibles dans l'API de stockage de StudioCMS.
5+
tableOfContents:
6+
minHeadingLevel: 2
7+
maxHeadingLevel: 4
8+
sidebar:
9+
order: 3
10+
badge:
11+
text: NOUVEAU
12+
variant: success
13+
---
14+
15+
import ReadMore from '~/components/ReadMore.astro';
16+
import { Aside } from '@astrojs/starlight/components';
17+
18+
L'API de stockage expose des points de terminaison accessibles via des requêtes HTTP. Les sections suivantes décrivent les points de terminaison disponibles et leur utilisation.
19+
20+
<Aside type="note" title="Utilise locals pour l'autorisation">
21+
Les points de terminaison de l'API de stockage utilisent la fonctionnalité `locals` d'Astro, propagée par le middleware, pour gérer l'autorisation. Assurez-vous que le navigateur ou le client effectuant les requêtes provient d'un utilisateur StudioCMS connecté et disposant des autorisations nécessaires pour effectuer des opérations de stockage.
22+
</Aside>
23+
24+
### Méthode : PUT
25+
26+
Pour télécharger ou mettre à jour un fichier dans le système de stockage, vous pouvez utiliser la méthode `PUT` dans le point de terminaison `/studiocms_api/storage/manager`.
27+
28+
```http title="API de stockage - PUT /studiocms_api/storage/manager"
29+
PUT /studiocms_api/storage/manager HTTP/1.1
30+
Host: example.com
31+
Content-Type: application/octet-stream
32+
Accept: application/json
33+
Headers:
34+
x-storage-key: my-file.txt
35+
36+
<file-content>
37+
```
38+
39+
#### Réponse de succès
40+
41+
```http title="API de stockage - PUT Réponse de succès"
42+
HTTP/1.1 200 OK
43+
Content-Type: application/json
44+
45+
{
46+
"message": "string",
47+
"key": "string"
48+
}
49+
```
50+
51+
#### Réponse d'erreur
52+
53+
```http title="API de stockage - PUT Réponse d'erreur"
54+
HTTP/1.1 4XX/5XX Error
55+
Content-Type: application/json
56+
57+
{
58+
"error": "string"
59+
}
60+
```
61+
62+
### Méthode : POST
63+
64+
```http title="API de stockage - POST /studiocms_api/storage/manager"
65+
POST /studiocms_api/storage/manager HTTP/1.1
66+
Host: example.com
67+
Content-Type: application/json
68+
Accept: application/json
69+
70+
{
71+
"action": "resolveUrl | publicUrl | upload | list | delete | rename | download | cleanup | mappings | test",
72+
...paramètres supplémentaires reposant sur l'action...
73+
}
74+
```
75+
76+
#### Actions
77+
78+
- `resolveUrl`
79+
- **Paramètres :** `{ identifier: string }`
80+
- **Réponse :** [`UrlMetadata`](#urlmetadata)
81+
- `publicUrl`
82+
- **Paramètres :** `{ key: string }`
83+
- **Réponse :** [`UrlMetadata`](#urlmetadata) `& { identifier: string }`
84+
- `upload`
85+
- **Paramètres :** `{ key: string, contentType: string }`
86+
- **Réponse :** `{ url: string, key: string }`
87+
- `list`
88+
- **Paramètres :** `{ prefix?: string, key?: string }`
89+
- **Réponse :** `{ files:` [`File[]`](#file) `}`
90+
- `delete`
91+
- **Paramètres :** `{ key: string }`
92+
- **Réponse :** `{ success: boolean }`
93+
- `rename`
94+
- **Paramètres :** `{ key: string, newKey: string }`
95+
- **Réponse :** `{ success: boolean, newKey: string }`
96+
- `download`
97+
- **Paramètres :** `{ key: string }`
98+
- **Réponse :** `{ url: string }`
99+
- `cleanup`
100+
- **Paramètres :** `N/A`
101+
- **Réponse :** `{ deletedCount: number }`
102+
- `mappings`
103+
- **Paramètres :** `N/A`
104+
- **Réponse :** `{ mappings:` [`UrlMetadata[]`](#urlmetadata) `}`
105+
- `test`
106+
- **Paramètres :** `N/A`
107+
- **Réponse :** `{ success: boolean, message: string, provider: string }`
108+
109+
#### Réponse d'erreur
110+
111+
```http title="Storage API - POST Réponse d'erreur"
112+
HTTP/1.1 4XX/5XX Error
113+
Content-Type: application/json
114+
115+
{
116+
"error": "string"
117+
}
118+
```
119+
120+
## Types
121+
122+
### UrlMetadata
123+
124+
```ts
125+
export interface UrlMetadata {
126+
url: string;
127+
isPermanent: boolean;
128+
expiresAt?: number; // Horodatage Unix en ms
129+
}
130+
```
131+
132+
### File
133+
134+
```ts
135+
export interface File {
136+
key: string | undefined;
137+
size: number | undefined;
138+
lastModified: Date | undefined;
139+
}
140+
```
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
---
2+
i18nReady: true
3+
title: Vue d'ensemble
4+
description: Découvrez l'API de stockage de StudioCMS
5+
tableOfContents:
6+
minHeadingLevel: 2
7+
maxHeadingLevel: 4
8+
sidebar:
9+
order: 1
10+
badge:
11+
text: NOUVEAU
12+
variant: success
13+
---
14+
15+
import ReadMore from '~/components/ReadMore.astro';
16+
import { Aside } from '@astrojs/starlight/components';
17+
18+
L'API de stockage de StudioCMS offre une méthode unifiée pour gérer et interagir avec différents systèmes de stockage. Elle simplifie la complexité de ces systèmes, permettant ainsi aux développeurs de travailler avec une interface cohérente quelle que soit la technologie sous-jacente.
19+
20+
## Son fonctionnement
21+
22+
L'API de stockage est conçue pour être flexible et extensible. Elle prend en charge plusieurs systèmes de stockage, notamment les systèmes de fichiers locaux, les services de stockage cloud et les bases de données. Les développeurs peuvent choisir le système de stockage le mieux adapté à leurs besoins et passer facilement de l'un à l'autre sans modifier le code de leur application.
23+
24+
## Modules d'extension de gestionnaire
25+
26+
L'API de stockage utilise des modules d'extension de gestionnaire pour gérer différents systèmes de stockage. Chaque module d'extension de gestionnaire implémente un système de stockage spécifique et fournit des méthodes pour les opérations courantes telles que la lecture, l'écriture et la suppression de fichiers.
27+
28+
Un exemple de gestionnaire intégré à StudioCMS est le gestionnaire `no-op`, qui n'effectue aucune opération et indique à StudioCMS de ne pas activer ses fonctionnalités de stockage.
29+
30+
### Exemple de gestionnaire sans opération
31+
32+
```ts twoslash title="NoOpStorageService.ts"
33+
import type {
34+
AuthorizationType,
35+
ContextDriverDefinition,
36+
StorageAPIEndpointFn,
37+
StorageApiBuilderDefinition,
38+
UrlMappingServiceDefinition,
39+
} from 'studiocms/storage-manager/definitions';
40+
41+
/**
42+
* A No-Op Storage Service that implements the StorageApiBuilderDefinition interface.
43+
*
44+
* This service provides placeholder implementations for storage API endpoints,
45+
* returning a 501 Not Implemented response for both POST and PUT requests.
46+
*
47+
* @typeParam C - The context type.
48+
* @typeParam R - The response type.
49+
*/
50+
export default class NoOpStorageService<C, R> implements
51+
StorageApiBuilderDefinition<C, R> {
52+
driver: ContextDriverDefinition<C, R>;
53+
urlMappingService: UrlMappingServiceDefinition;
54+
55+
constructor(
56+
driver: ContextDriverDefinition<C, R>,
57+
urlMappingService: UrlMappingServiceDefinition
58+
) {
59+
this.driver = driver;
60+
this.urlMappingService = urlMappingService;
61+
}
62+
63+
#sharedResponse() {
64+
return { data: { error: 'noStorageConfigured' }, status: 501 };
65+
}
66+
67+
getPOST(_?: AuthorizationType): StorageAPIEndpointFn<C, R> {
68+
return this.driver.handleEndpoint(async () => this.#sharedResponse());
69+
}
70+
71+
getPUT(_?: AuthorizationType): StorageAPIEndpointFn<C, R> {
72+
return this.driver.handleEndpoint(async () => this.#sharedResponse());
73+
}
74+
}
75+
```
76+
77+
### Configuration d'un gestionnaire
78+
79+
Pour configurer un gestionnaire de stockage dans StudioCMS, vous devez spécifier le module d'extension de gestionnaire souhaité dans votre fichier de configuration StudioCMS. Pour ce faire, vous devez installer le paquet du module d'extension de gestionnaire, puis l'ajouter à la propriété `storageManager` dans votre fichier `studiocms.config.*`.
80+
81+
```ts twoslash title="studiocms.config.mjs" {5}
82+
import { defineStudioCMSConfig } from "studiocms/config";
83+
import s3Storage from '@studiocms/s3-storage';
84+
85+
export default defineStudioCMSConfig({
86+
storageManager: s3Storage(),
87+
// autres options de configuration
88+
})
89+
```
90+
91+
<ReadMore>
92+
Pour connaître les modules d'extension de gestionnaire de stockage disponibles, consultez le [catalogue des paquets](/fr/package-catalog#gestionnaires-de-stockage).
93+
</ReadMore>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
i18nReady: true
3+
title: Fonctions d'assistance JavaScript
4+
description: Découvrez les fonctions d'assistance JavaScript disponibles dans l'API de stockage de StudioCMS.
5+
tableOfContents:
6+
minHeadingLevel: 2
7+
maxHeadingLevel: 4
8+
sidebar:
9+
order: 2
10+
badge:
11+
text: NOUVEAU
12+
variant: success
13+
---
14+
15+
import ReadMore from '~/components/ReadMore.astro';
16+
import { Aside } from '@astrojs/starlight/components';
17+
18+
L'API de stockage de StudioCMS fournit plusieurs fonctions d'assistance JavaScript pour faciliter l'interaction avec les systèmes de stockage. Ces fonctions d'assistance simplifient des tâches telles que la résolution des identifiants et des clés de stockage, ainsi que la fourniture de définitions de type pour une sûreté du typage et une complétion de code améliorées.
19+
20+
## Fonctions d'assistance JavaScript
21+
22+
```ts twoslash title="exemple-api-stockage.ts"
23+
import {
24+
resolveStorageIdentifier,
25+
resolveStorageKey,
26+
} from 'studiocms/storage-api';
27+
28+
const storageIdentifier = await resolveStorageIdentifier('storage-file://my-file.txt', {
29+
baseUrl: 'https://example.com/', // Utilisez la valeur de `site` depuis "astro:config/server"
30+
});
31+
32+
const storageKey = await resolveStorageKey('my-file.txt', {
33+
baseUrl: 'https://example.com/', // Utilisez la valeur de `site` depuis "astro:config/server"
34+
});
35+
```
36+
37+
## Types JavaScript
38+
39+
```ts twoslash title="types-api-stockage.ts"
40+
import type {
41+
ContextJsonBody,
42+
AuthorizationType,
43+
ParsedContext,
44+
UrlMetadata,
45+
UrlMapping,
46+
ContextHandler,
47+
ContextHandlerFn,
48+
ContextDriverDefinition,
49+
StorageAPIEndpointFn,
50+
StorageApiBuilderDefinition,
51+
UrlMappingDatabaseDefinition,
52+
UrlMappingServiceDefinition,
53+
APICoreDefinition
54+
} from 'studiocms/storage-api';
55+
```

0 commit comments

Comments
 (0)