duri

Crates.ioduri
lib.rsduri
version0.1.4
sourcesrc
created_at2021-08-08 14:47:21.969274
updated_at2023-05-25 19:13:23.501981
descriptionCLI tool to get data URI of a file
homepagehttps://github.com/hongquan/Duri
repositoryhttps://github.com/hongquan/Duri.git
max_upload_size
id433166
size74,924
Nguyễn Hồng Quân (hongquan)

documentation

README

Duri

made-in-vietnam registry

CLI tool to get data URI of a file.

Logo

Install

Duri is written in Rust, so you can install it from crates.io:

cargo install duri

Usage

  • Read from file path:

    duri image.png
    
  • Read from standard input:

    echo image.png | duri -
    
  • To see more option, run with --help:

    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.

You can combine Duri with jo to build JSON, like:

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

then pass to a CLI HTTP client, like HTTPie:

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

{
  "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:

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

Credit

Commit count: 10

cargo fmt