Home

Awesome

IPFS Pinning Service API Client for JS

This client was generated using OpenAPI Generator from the IPFS Pinning Service API spec.

You can see the commands used to generate the client in the gen:fetch npm script.

Usage

npm install @ipfs-shipyard/pinning-service-client --save

This client only has a programmatic API at the moment (no CLI). You use it like so:


import { Configuration, RemotePinningServiceClient, Status } from '@ipfs-shipyard/pinning-service-client'
import type { PinsGetRequest, PinResults } from '@ipfs-shipyard/pinning-service-client'

const config = new Configuration({
  endpointUrl, // the URI for your pinning provider, e.g. `http://localhost:3000`
  accessToken, // the secret token/key given to you by your pinning provider
  // fetchApi: fetch, // You can pass your own fetchApi implementation, but we use NodeJS fetch by default.
})

const client = new RemotePinningServiceClient(config)

(async () => {
  // Get 10 failed Pins
  const pinsGetOptions: PinsGetRequest = {
    limit: 10,
    status: [Status.Failed]
  }
  const {count, results}: PinResults = await client.pinsGet(pinsGetOptions)

  console.log(count, results)

})()

Developing

Building

To build and compile the typescript sources to javascript use:

npm install
npm run build

Updating the generated client

To update the client, you need to npm run gen npm script. This will fetch the latest version of the OpenAPI spec and generate the client. However, openapi-generator-cli does not currently generate the client code with proper import syntax. So you must modify the imports in generated/fetch/** directly, or just git checkout -p to remove the invalid import path changes.

It also uses Sets for all collection types though it cannot serialize or deserialize these types to/from JSON. They must be manually changed to be Arrays.

If you need to modify the generated code's import paths, you will have to run npm run postgen manually.

Contributing

See CONTRIBUTING.md.

Publishing

First build the package then run npm publish

License

Licensed under either of

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.