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

https://github.com/hongquan/duri

CLI tool to get data URI of a file
https://github.com/hongquan/duri

api-client base64 cli data-uri image made-in-vietnam

Last synced: 11 months ago
JSON representation

CLI tool to get data URI of a file

Awesome Lists containing this project

README

          

# Duri #

![made-in-vietnam](https://madewithlove.vercel.app/vn?heart=true&colorA=%23ffcd00&colorB=%23da251d)
[![registry](https://badgen.net/crates/v/duri)](https://crates.io/crates/duri)

CLI tool to get data URI of a file.

![Logo](data/durian.svg)

## Install

Duri is written in [Rust](https://www.rust-lang.org/), so you can install it from [crates.io](https://crates.io/crates/duri):

```console
cargo install duri
```

## Usage

- Read from file path:

```console
duri image.png
```

- Read from standard input:

```console
echo image.png | duri -
```

- To see more option, run with `--help`:

```console
duri --help
```

## Use cases

Assume that you need to upload file to a RESTful HTTP API. The HTTP API may require posted data to be JSON string and the file content to be in form of base64-encoded [data URI](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs).

You can combine Duri with [jo](https://github.com/jpmens/jo) to build JSON, like:

```console
jo -d. file.name=image.png file.content=$(duri image.png)
```

then pass to a CLI HTTP client, like [HTTPie](https://httpie.io/):

```console
jo -d. file.name=image.png file.content=$(duri image.png) | http example-api.vn/ekyc/
```

The `duri` + `jo` combo will generate a JSON like

```json
{
"file": {
"name": "image.png",
"content": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAAAAAA6fptVAAABI2..."
}
}

```

The string is passed to HTTPie via standard input and HTTPie will build a POST request with that JSON data.

Note that, if your HTTP API requires file to be in plain base64 string, not beginning with `data:xxx`, you don't need Duri.
In that case, just use `jo` alone, with its `%` modifier:

```console
jo -d. file.name=image.png file.content=%image.png | http example-api.vn/ekyc/
```

Credit
------

- Brought to you by [Nguyễn Hồng Quân](https://quan.hoabinh.vn).
- Icon is from [Freepik](https://www.flaticon.com/free-icon/durian_765534).