An open API service indexing awesome lists of open source software.

https://github.com/rarimo/ipfs-svc


https://github.com/rarimo/ipfs-svc

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

          

# ipfs-svc

## Description

This service provides IPFS uploading functionality

## Install

```
git clone github.com/rarimo/ipfs-svc
cd ipfs-svc
go build main.go
export KV_VIPER_FILE=./config.yaml
./main run service
```

## Documentation

We do use openapi:json standard for API. We use swagger for documenting our API.

To open online documentation, go to [swagger editor](http://localhost:8080/swagger-editor/) here is how you can start it
```
cd docs
npm install
npm start
```
To build documentation use `npm run build` command,
that will create open-api documentation in `web_deploy` folder.

To generate resources for Go models run `./generate.sh` script in root folder.
use `./generate.sh --help` to see all available options.

Note: if you are using Gitlab for building project `docs/spec/paths` folder must not be
empty, otherwise only `Build and Publish` job will be passed.

## Running from docker

Make sure that docker installed.

use `docker run ` with `-p 8080:80` to expose port 80 to 8080

```
docker build -t github.com/rarimo/ipfs-svc .
docker run -e KV_VIPER_FILE=/config.yaml github.com/rarimo/ipfs-svc
```

## Running from Source

* Set up environment value with config file path `KV_VIPER_FILE=./config.yaml`
* Provide valid config file
* Launch the service with `run service` command

## Testing and Local Development

### Setting up IPFS locally

1. **Install IPFS:**

```bash
# MacOS
brew install ipfs

# Linux
wget https://dist.ipfs.tech/kubo/v0.22.0/kubo_v0.22.0_linux-amd64.tar.gz
tar -xvzf kubo_v0.22.0_linux-amd64.tar.gz
cd kubo
sudo bash install.sh
```

2. **Initialize and start IPFS:**

```bash
ipfs init

ipfs daemon
```

3. **Upload endpoint:**

Upload JSON:

```bash
curl -X POST \
http://localhost:8000/integrations/ipfs-svc/v1/public/upload \
-H 'Content-Type: application/vnd.api+json' \
-d '{
"data": {
"type": "upload_json",
"attributes": {
"metadata": {
"name": "Test",
"description": "Test IPFS upload"
}
}
}
}'
```

Upload file:

```bash
curl -X POST \
http://localhost:8000/integrations/ipfs-svc/v1/public/upload-file \
-H 'Content-Type: multipart/form-data' \
-F 'file=@/path/to/file.jpg'
```

4. **Verify uploaded content:**

```bash
ipfs cat
```

### Third-party services

## Contact

Responsible //
The primary contact for this project is //