mirror of
https://github.com/oceanprotocol/commons.git
synced 2023-03-15 18:03:00 +01:00
support adding files from IPFS url
This commit is contained in:
parent
10b662343f
commit
475cade27f
32
client/package-lock.json
generated
32
client/package-lock.json
generated
@ -9125,10 +9125,13 @@
|
|||||||
"unc-path-regex": "^0.1.2"
|
"unc-path-regex": "^0.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-url": {
|
"is-url-superb": {
|
||||||
"version": "1.2.4",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-3.0.0.tgz",
|
||||||
"integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
|
"integrity": "sha512-3faQP+wHCGDQT1qReM5zCPx2mxoal6DzbzquFlCYJLWyy4WPTved33ea2xFbX37z4NoriEwZGIYhFtx8RUB5wQ==",
|
||||||
|
"requires": {
|
||||||
|
"url-regex": "^5.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"is-utf8": {
|
"is-utf8": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
@ -16371,6 +16374,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
|
||||||
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
|
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
|
||||||
},
|
},
|
||||||
|
"tlds": {
|
||||||
|
"version": "1.203.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tlds/-/tlds-1.203.1.tgz",
|
||||||
|
"integrity": "sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw=="
|
||||||
|
},
|
||||||
"tmp": {
|
"tmp": {
|
||||||
"version": "0.0.33",
|
"version": "0.0.33",
|
||||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||||
@ -17010,6 +17018,22 @@
|
|||||||
"prepend-http": "^1.0.1"
|
"prepend-http": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"url-regex": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g==",
|
||||||
|
"requires": {
|
||||||
|
"ip-regex": "^4.1.0",
|
||||||
|
"tlds": "^1.203.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ip-regex": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"url-set-query": {
|
"url-set-query": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz",
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
"ethereum-blockies": "github:MyEtherWallet/blockies",
|
"ethereum-blockies": "github:MyEtherWallet/blockies",
|
||||||
"filesize": "^4.1.2",
|
"filesize": "^4.1.2",
|
||||||
"history": "^4.9.0",
|
"history": "^4.9.0",
|
||||||
"is-url": "^1.2.4",
|
"is-url-superb": "^3.0.0",
|
||||||
"moment": "^2.24.0",
|
"moment": "^2.24.0",
|
||||||
"query-string": "^6.8.2",
|
"query-string": "^6.8.2",
|
||||||
"react": "16.8.6",
|
"react": "16.8.6",
|
||||||
|
@ -30,6 +30,7 @@ interface InputProps {
|
|||||||
rows?: number
|
rows?: number
|
||||||
group?: any
|
group?: any
|
||||||
multiple?: boolean
|
multiple?: boolean
|
||||||
|
pattern?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface InputState {
|
interface InputState {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import React, { PureComponent } from 'react'
|
import React, { PureComponent } from 'react'
|
||||||
import isUrl from 'is-url'
|
import isUrl from 'is-url-superb'
|
||||||
import Input from '../../../components/atoms/Form/Input'
|
import Input from '../../../components/atoms/Form/Input'
|
||||||
import Button from '../../../components/atoms/Button'
|
import Button from '../../../components/atoms/Button'
|
||||||
import styles from './ItemForm.module.scss'
|
import styles from './ItemForm.module.scss'
|
||||||
@ -37,7 +37,7 @@ export default class ItemForm extends PureComponent<
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url && !isUrl(url)) {
|
if (url && !url.includes('ipfs://') && !isUrl(url)) {
|
||||||
this.setState({ noUrl: true })
|
this.setState({ noUrl: true })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1 +1,2 @@
|
|||||||
SENDGRID_API_KEY='xxx'
|
SENDGRID_API_KEY='xxx'
|
||||||
|
IPFS_GATEWAY_URL='https://gateway.ipfs.io'
|
||||||
|
@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
This folder contains server component written in TypeScript using [Express](https://expressjs.com). The server provides various microservices.
|
This folder contains server component written in TypeScript using [Express](https://expressjs.com). The server provides various microservices.
|
||||||
|
|
||||||
- [Get Started](#Get-Started)
|
- [Get Started](#get-started)
|
||||||
- [✨ API Documentation](#-API-Documentation)
|
- [✨ API Documentation](#-api-documentation)
|
||||||
- [Url Checker](#Url-Checker)
|
- [Url Checker](#url-checker)
|
||||||
- [Report](#Report)
|
- [Report](#report)
|
||||||
- [🎁 Contributing](#-Contributing)
|
- [🎁 Contributing](#-contributing)
|
||||||
- [🏛 License](#-License)
|
- [🏛 License](#-license)
|
||||||
|
|
||||||
## Get Started
|
## Get Started
|
||||||
|
|
||||||
@ -36,6 +36,12 @@ Url Checker returns size and additional information about requested file. This s
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"url": "ipfs://QmQfpdcMWnLTXKKW9GPV7NgtEugghgD6HgzSF6gSrp2mL9"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
**Response: Success**
|
**Response: Success**
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
|
import 'dotenv/config'
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
app: {
|
app: { port: 4000 },
|
||||||
port: 4000
|
sendgridApiKey: process.env.SENDGRID_API_KEY,
|
||||||
}
|
ipfsGatewayUrl: process.env.IPFS_GATEWAY_URL || 'https://gateway.ipfs.io'
|
||||||
}
|
}
|
||||||
|
|
||||||
export default config
|
export default config
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { Router, Request, Response } from 'express'
|
import { Router, Request, Response } from 'express'
|
||||||
import SendgridMail from '@sendgrid/mail'
|
import SendgridMail from '@sendgrid/mail'
|
||||||
import 'dotenv/config'
|
import config from '../config/config'
|
||||||
|
|
||||||
SendgridMail.setApiKey(process.env.SENDGRID_API_KEY)
|
SendgridMail.setApiKey(config.sendgridApiKey)
|
||||||
|
|
||||||
export class ReportRouter {
|
export class ReportRouter {
|
||||||
public router: Router
|
public router: Router
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { Router, Request, Response } from 'express'
|
import { Router, Request, Response } from 'express'
|
||||||
import request from 'request'
|
import request from 'request'
|
||||||
|
import config from '../config/config'
|
||||||
|
|
||||||
export class UrlCheckRouter {
|
export class UrlCheckRouter {
|
||||||
public router: Router
|
public router: Router
|
||||||
@ -12,13 +13,22 @@ export class UrlCheckRouter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public checkUrl(req: Request, res: Response) {
|
public checkUrl(req: Request, res: Response) {
|
||||||
if (!req.body.url) {
|
let { url } = req.body
|
||||||
|
|
||||||
|
if (!url) {
|
||||||
return res.send({ status: 'error', message: 'missing url' })
|
return res.send({ status: 'error', message: 'missing url' })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// map native IPFS URLs to gateway URLs
|
||||||
|
if (url.includes('ipfs://')) {
|
||||||
|
const cid = url.split('ipfs://')[1]
|
||||||
|
url = `${config.ipfsGatewayUrl}/ipfs/${cid}`
|
||||||
|
}
|
||||||
|
|
||||||
request(
|
request(
|
||||||
{
|
{
|
||||||
method: 'HEAD',
|
method: 'HEAD',
|
||||||
url: req.body.url,
|
url,
|
||||||
headers: { Range: 'bytes=0-' }
|
headers: { Range: 'bytes=0-' }
|
||||||
},
|
},
|
||||||
(error, response) => {
|
(error, response) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user