1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-05-13 04:41:43 +00:00

Resolve "Add user file upload docs to the generated API docs"

This commit is contained in:
Peter Evans 2022-09-07 11:29:51 +00:00 committed by Nigel Gott
parent f893a027bd
commit e3ecce1de7
11 changed files with 522 additions and 8 deletions

View file

@ -165,6 +165,11 @@ export default {
required: false,
default: '',
},
fileRequest: {
type: String,
required: false,
default: '',
},
request: {
type: [Object, Boolean],
required: false,
@ -226,6 +231,11 @@ export default {
example += '\n-H "Content-Type: application/json" \\'
}
if (this.fileRequest !== '') {
index++
example += ` \\\n-F file=@${this.fileRequest}`
}
example += `\n${this.url}`
if (this.request !== false) {
@ -250,6 +260,12 @@ export default {
example += `${this.url} HTTP`
example += '\nAuthorization: Token YOUR_API_KEY'
if (this.fileRequest !== '') {
example += '\nContent-Length: YOUR_CONTENT_LENGTH'
example +=
'\nContent-Type: multipart/form-data; boundary=------------------------YOUR_BOUNDARY'
}
if (this.request !== false) {
index += 2
example += '\nContent-Type: application/json'
@ -263,7 +279,14 @@ export default {
},
getJavaScriptExample() {
let index = 5
let example = 'axios({'
let example = ''
if (this.fileRequest !== '') {
example += 'const formData = new FormData()'
example += `\nformData.append('file', '${this.fileRequest}')`
example += "\naxios.post('/fileupload', formData, {"
} else {
example = 'axios({'
}
if (this.type !== '') {
index++
@ -274,6 +297,11 @@ export default {
example += '\n headers: {'
example += '\n Authorization: "Token YOUR_API_KEY"'
if (this.fileRequest !== '') {
index++
example += ',\n "Content-Type": "multipart/form-data"'
}
if (this.request !== false) {
index++
example += ',\n "Content-Type": "application/json"'
@ -309,6 +337,11 @@ export default {
example += '\n }'
if (this.fileRequest !== '') {
index++
example += `\n files={'file': open('${this.fileRequest}', 'rb')}`
}
if (this.request !== false) {
index++
const data = this.format(this.request).split('\n').join('\n ')

View file

@ -125,6 +125,42 @@
</li>
</ul>
</li>
<li>
<a
class="api-docs__nav-link"
@click.prevent="navigate('section-upload-file')"
>{{ $t('apiDocs.fileUploads') }}</a
>
<ul
class="api-docs__nav-sub"
:class="{
open:
navActive === 'section-upload-file' ||
navActive === 'section-upload-file-via-url',
}"
>
<li>
<a
class="api-docs__nav-link"
:class="{
active: navActive === 'section-upload-file',
}"
@click.prevent="navigate('section-upload-file')"
>{{ $t('apiDocs.uploadFile') }}</a
>
</li>
<li>
<a
class="api-docs__nav-link"
:class="{
active: navActive === 'section-upload-file-via-url',
}"
@click.prevent="navigate('section-upload-file-via-url')"
>{{ $t('apiDocs.uploadFileViaUrl') }}</a
>
</li>
</ul>
</li>
<li>
<a
class="api-docs__nav-link"

View file

@ -0,0 +1,68 @@
<template>
<div class="api-docs__item">
<div class="api-docs__left">
<div class="api-docs__heading-wrapper">
<h3 :id="'section-upload-file'" class="api-docs__heading-3">
<span>
{{ $t('apiDocs.uploadFile') }}
</span>
</h3>
<div class="api-docs__endpoint-type"></div>
</div>
<MarkdownIt
tag="p"
class="api-docs__content"
:content="
$t('apiDocsUploadFile.description', {
PUBLIC_BACKEND_URL: `${$env.PUBLIC_BACKEND_URL}`,
})
"
/>
<h4 class="api-docs__heading-4">{{ $t('apiDocs.requestBodySchema') }}</h4>
<ul class="api-docs__parameters">
<APIDocsParameter name="file" :optional="false" type="multipart">
<MarkdownIt
class="api-docs__content"
:content="$t('apiDocs.uploadFileDescription')"
/>
</APIDocsParameter>
</ul>
</div>
<div class="api-docs__right">
<APIDocsExample
:value="value"
type="POST"
:url="getUploadFileListUrl()"
:file-request="getUploadFileExample()"
:response="getUploadFileResponse()"
:include-user-fields-checkbox="false"
@input="$emit('input', $event)"
></APIDocsExample>
</div>
</div>
</template>
<script>
import APIDocsExample from '@baserow/modules/database/components/docs/APIDocsExample'
import APIDocsParameter from '@baserow/modules/database/components/docs/APIDocsParameter'
export default {
name: 'APIDocsUploadFile',
components: {
APIDocsParameter,
APIDocsExample,
},
props: {
value: {
type: Object,
required: true,
},
getUploadFileListUrl: { type: Function, required: true },
getUploadFileExample: { type: Function, required: true },
getUploadFileResponse: { type: Function, required: true },
},
}
</script>

View file

@ -0,0 +1,68 @@
<template>
<div class="api-docs__item">
<div class="api-docs__left">
<div class="api-docs__heading-wrapper">
<h3 :id="'section-upload-file-via-url'" class="api-docs__heading-3">
<span>
{{ $t('apiDocs.uploadFileViaUrl') }}
</span>
</h3>
<div class="api-docs__endpoint-type"></div>
</div>
<MarkdownIt
tag="p"
class="api-docs__content"
:content="
$t('apiDocsUploadFileViaURL.description', {
PUBLIC_BACKEND_URL: `${$env.PUBLIC_BACKEND_URL}`,
})
"
/>
<h4 class="api-docs__heading-4">{{ $t('apiDocs.requestBodySchema') }}</h4>
<ul class="api-docs__parameters">
<APIDocsParameter name="url" :optional="false" type="string">
<MarkdownIt
class="api-docs__content"
:content="$t('apiDocs.uploadFileViaUrlDescription')"
/>
</APIDocsParameter>
</ul>
</div>
<div class="api-docs__right">
<APIDocsExample
:value="value"
type="POST"
:url="getUploadFileViaUrlListUrl()"
:response="getUploadFileResponse()"
:request="getUploadFileViaUrlRequestExample()"
:include-user-fields-checkbox="false"
@input="$emit('input', $event)"
></APIDocsExample>
</div>
</div>
</template>
<script>
import APIDocsExample from '@baserow/modules/database/components/docs/APIDocsExample'
import APIDocsParameter from '@baserow/modules/database/components/docs/APIDocsParameter'
export default {
name: 'APIDocsUploadFileViaURL',
components: {
APIDocsParameter,
APIDocsExample,
},
props: {
value: {
type: Object,
required: true,
},
getUploadFileViaUrlListUrl: { type: Function, required: true },
getUploadFileViaUrlRequestExample: { type: Function, required: true },
getUploadFileResponse: { type: Function, required: true },
},
}
</script>