decentraland-crypto-fetch
v2.0.1
Published
[![Coverage Status](https://coveralls.io/repos/github/decentraland/decentraland-crypto-fetch/badge.svg?branch=main)](https://coveralls.io/github/decentraland/decentraland-crypto-fetch?branch=main)
Downloads
1,697
Maintainers
Readme
decentraland-crypto-fetch
Make requests signed using a Decentraland Identity
Install
npm install decentraland-crypto-fetch
Usage
This library preserves the native fetch
API and works on browsers and nodejs, you only need an Identity generate with @dcl/crypto
import fetch from "decentraland-crypto-fetch";
fetch("https://service.decentraland.org/api/resource", {
method: "POST",
identity,
});
you can send signed metadata using the metadata
property
import fetch from "decentraland-crypto-fetch";
const metadata = { key1: "value1" };
fetch("https://service.decentraland.org/api/resource", {
method: "POST",
identity,
metadata,
});
You can also inject sign headers into an existing request
import fetch from "decentraland-crypto-fetch";
const metadata = { key1: "value1" };
const request = new Request("https://service.decentraland.org/api/resource", {
method: "POST",
});
fetch(request, { identity, metadata });
Auth Chain Generator
If you want to simulate signed headers you can use the Auth Chain Generator
Identity Generator
If you need an ephemeral identity you can generate one using the Identity Generator
Inject fetcher
If your environment doesn't have a global fetch
function, you can create a signedFetch injecting your own implementations as follow
import { signedFetchFactory } from "decentraland-crypto-fetch/lib/factory";
import { Headers, Request, fetch } from "node-fetch";
const signedFetch = signedFetchFactory({ Headers, Request, fetch });
Server
If you want to build services that accept Signed Request you use decentraland-crypto-middleware
CLI
> npm run fetch -- --help
Fetch the contents of the URL and sign the request with and identity if there is any
Options:
--help Show help [boolean]
--version Show version number [boolean]
-X, --method Specifies a custom request method to use when communicating with the HTTP server.
[choices: "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]
[default: "GET"]
-i, --include Include the HTTP response headers in the output. The HTTP response headers can include
things like server name, cookies, date of the document, HTTP version and more... [boolean]
--identity Path to the identity file uses to sign the request [string]
-H, --header Extra header to include in the request when sending HTTP to a server. [array]
-d, --data Sends the specified data in a POST request to the HTTP server [string]
--no-color Disabled color output [boolean]
Develop
If you want to contribute make you will need to setup husky
otherwise your commit may fail because is not following the format standard
npm run husky-setup