mirror of
https://github.com/oceanprotocol/commons.git
synced 2023-03-15 18:03:00 +01:00
cleanup contentType in one central place, add more manual replacements
This commit is contained in:
parent
48d9b26cb6
commit
5e94d73197
@ -54,6 +54,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.empty {
|
||||||
|
font-size: $font-size-mini;
|
||||||
|
font-weight: $font-weight-base;
|
||||||
|
opacity: .75;
|
||||||
|
}
|
||||||
|
|
||||||
// move spinner a bit up
|
// move spinner a bit up
|
||||||
+ div {
|
+ div {
|
||||||
margin-top: $spacer / 2;
|
margin-top: $spacer / 2;
|
||||||
|
@ -6,6 +6,7 @@ import Spinner from '../../atoms/Spinner'
|
|||||||
import { User } from '../../../context'
|
import { User } from '../../../context'
|
||||||
import styles from './AssetFile.module.scss'
|
import styles from './AssetFile.module.scss'
|
||||||
import ReactGA from 'react-ga'
|
import ReactGA from 'react-ga'
|
||||||
|
import cleanupContentType from '../../../utils/cleanupContentType'
|
||||||
|
|
||||||
export const messages = {
|
export const messages = {
|
||||||
start: 'Decrypting file URL...',
|
start: 'Decrypting file URL...',
|
||||||
@ -96,19 +97,27 @@ export default class AssetFile extends PureComponent<
|
|||||||
const { ddo, file } = this.props
|
const { ddo, file } = this.props
|
||||||
const { isLoading, error, step } = this.state
|
const { isLoading, error, step } = this.state
|
||||||
const { isLogged, isOceanNetwork } = this.context
|
const { isLogged, isOceanNetwork } = this.context
|
||||||
const { index } = file
|
const { index, contentType, contentLength } = file
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.fileWrap}>
|
<div className={styles.fileWrap}>
|
||||||
<ul key={index} className={styles.file}>
|
<ul key={index} className={styles.file}>
|
||||||
<li>
|
{contentType || contentLength ? (
|
||||||
{file.contentType && file.contentType.split('/')[1]}
|
<>
|
||||||
</li>
|
<li>
|
||||||
<li>
|
{contentType && cleanupContentType(contentType)}
|
||||||
{file.contentLength && filesize(file.contentLength)}
|
</li>
|
||||||
</li>
|
<li>
|
||||||
{/* <li>{file.encoding}</li> */}
|
{contentLength && contentLength > 0
|
||||||
{/* <li>{file.compression}</li> */}
|
? filesize(contentLength)
|
||||||
|
: ''}
|
||||||
|
</li>
|
||||||
|
{/* <li>{encoding}</li> */}
|
||||||
|
{/* <li>{compression}</li> */}
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<li className={styles.empty}>No file info available</li>
|
||||||
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{isLoading ? (
|
{isLoading ? (
|
||||||
|
@ -7,6 +7,7 @@ import Item from './Item'
|
|||||||
import styles from './index.module.scss'
|
import styles from './index.module.scss'
|
||||||
|
|
||||||
import { serviceHost, servicePort, serviceScheme } from '../../../config'
|
import { serviceHost, servicePort, serviceScheme } from '../../../config'
|
||||||
|
import cleanupContentType from '../../../utils/cleanupContentType'
|
||||||
|
|
||||||
interface File {
|
interface File {
|
||||||
url: string
|
url: string
|
||||||
@ -38,32 +39,6 @@ interface FilesStates {
|
|||||||
isFormShown: boolean
|
isFormShown: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getFileCompression = async (contentType: string) => {
|
|
||||||
// TODO: add all the possible archive & compression MIME types
|
|
||||||
if (
|
|
||||||
contentType === 'application/zip' ||
|
|
||||||
contentType === 'application/gzip' ||
|
|
||||||
contentType === 'application/x-lzma' ||
|
|
||||||
contentType === 'application/x-xz' ||
|
|
||||||
contentType === 'application/x-tar' ||
|
|
||||||
contentType === 'application/x-gtar' ||
|
|
||||||
contentType === 'application/x-bzip2' ||
|
|
||||||
contentType === 'application/x-7z-compressed' ||
|
|
||||||
contentType === 'application/x-rar-compressed' ||
|
|
||||||
contentType === 'application/x-apple-diskimage'
|
|
||||||
) {
|
|
||||||
const contentTypeSplit = contentType.split('/')
|
|
||||||
|
|
||||||
if (contentTypeSplit[1].includes('x-')) {
|
|
||||||
return contentTypeSplit[1].replace('x-', '')
|
|
||||||
}
|
|
||||||
|
|
||||||
return contentTypeSplit[1]
|
|
||||||
} else {
|
|
||||||
return 'none'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default class Files extends PureComponent<FilesProps, FilesStates> {
|
export default class Files extends PureComponent<FilesProps, FilesStates> {
|
||||||
public state: FilesStates = {
|
public state: FilesStates = {
|
||||||
isFormShown: false
|
isFormShown: false
|
||||||
@ -106,7 +81,7 @@ export default class Files extends PureComponent<FilesProps, FilesStates> {
|
|||||||
res = await response.json()
|
res = await response.json()
|
||||||
file.contentLength = res.result.contentLength
|
file.contentLength = res.result.contentLength
|
||||||
file.contentType = res.result.contentType
|
file.contentType = res.result.contentType
|
||||||
file.compression = await getFileCompression(res.result.contentType)
|
file.compression = await cleanupContentType(res.result.contentType)
|
||||||
file.found = res.result.found
|
file.found = res.result.found
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// error
|
// error
|
||||||
|
41
client/src/utils/cleanupContentType.ts
Normal file
41
client/src/utils/cleanupContentType.ts
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
const cleanupContentType = (contentType: string) => {
|
||||||
|
// strip away the 'application/' part
|
||||||
|
const contentTypeSplit = contentType.split('/')[1]
|
||||||
|
|
||||||
|
let contentTypeCleaned
|
||||||
|
|
||||||
|
// TODO: add all the possible archive & compression MIME types
|
||||||
|
if (
|
||||||
|
contentType === 'application/x-lzma' ||
|
||||||
|
contentType === 'application/x-xz' ||
|
||||||
|
contentType === 'application/x-tar' ||
|
||||||
|
contentType === 'application/x-gtar' ||
|
||||||
|
contentType === 'application/x-bzip2' ||
|
||||||
|
contentType === 'application/x-gzip' ||
|
||||||
|
contentType === 'application/x-7z-compressed' ||
|
||||||
|
contentType === 'application/x-rar-compressed' ||
|
||||||
|
contentType === 'application/x-zip-compressed' ||
|
||||||
|
contentType === 'application/x-apple-diskimage'
|
||||||
|
) {
|
||||||
|
contentTypeCleaned = contentTypeSplit
|
||||||
|
.replace('x-', '')
|
||||||
|
.replace('-compressed', '')
|
||||||
|
} else {
|
||||||
|
contentTypeCleaned = contentTypeSplit
|
||||||
|
}
|
||||||
|
|
||||||
|
// Manual replacements
|
||||||
|
contentTypeCleaned = contentTypeCleaned
|
||||||
|
.replace(
|
||||||
|
'vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||||
|
'xlsx'
|
||||||
|
)
|
||||||
|
.replace('vnd.ms-excel', 'xls')
|
||||||
|
.replace('apple-diskimage', 'dmg')
|
||||||
|
.replace('octet-stream', 'Binary')
|
||||||
|
.replace('svg+xml', 'svg')
|
||||||
|
|
||||||
|
return contentTypeCleaned
|
||||||
|
}
|
||||||
|
|
||||||
|
export default cleanupContentType
|
Loading…
x
Reference in New Issue
Block a user