Socket
Socket
Sign inDemoInstall

httpsnippet-lite

Package Overview
Dependencies
8
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    httpsnippet-lite

HTTP Request snippet generator for *most* languages


Version published
Weekly downloads
36K
increased by12.77%
Maintainers
1
Install size
1.28 MB
Created
Weekly downloads
 

Readme

Source

HTTPSnippet-lite

version License

HTTP Request snippet generator for many languages & tools including: cURL, HTTPie, JavaScript, Node, C, Java, PHP, Objective-C, Swift, Python, Ruby, C#, Go, OCaml and more!

Relies on the popular HAR format to import data and describe HTTP calls.

Build

Quickstart

Core Concepts

  1. HTTPSnippet's input is a JSON object that represents an HTTP request in the HAR Request Object format.
  2. HTTPSnippet's output is executable code that sends the input HTTP request, in a wide variety of languages and libraries.
  3. You provide HTTPSnippet your desired target, client, and options.
    • a target refers to a group of code generators. Generally, a target is a programming language like Rust, Go, C, or OCaml.
    • client refers to a more specific generator within the parent target. For example, the C# target has two available clients, httpclient and restsharp, each referring to a popular C# library for making requests.
    • options are per client and generally control things like specific indent behaviors or other formatting rules.

CLI Quickstart

npm install --save httpsnippet-lite

TypeScript Library Quickstart

import { HTTPSnippet } from 'httpsnippet-lite';

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});

const options = { indent: '\t' };
const output = await snippet.convert('shell', 'curl', options);
console.log(output);

TypeScript Library Usage

Library Installation

NPMYarn
npm install --save httpsnippet-lite
yarn add httpsnippet-lite

Types

HarRequest

See https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/har-format for the TypeScript type corresponding to this type

HarEntry
interface Entry {
  request: Partial<HarRequest>;
}

interface HarEntry {
  log: {
    version: string;
    creator: {
      name: string;
      version: string;
    };
    entries: {
      request: Partial<HarRequest>;
    }[];
  };
}
TargetId
type TargetId = string;
ClientId
type ClientId = string;
Converter
type Converter<T extends Record<string, any>> = (
  request: Request,
  options?: Merge<CodeBuilderOptions, T>,
) => string;
Client
interface Client<T extends Record<string, any> = Record<string, any>> {
  info: ClientInfo;
  convert: Converter<T>;
}
Extension
type Extension = `.${string}` | null;
TargetInfo
interface TargetInfo {
  key: TargetId;
  title: string;
  extname: Extension;
  default: string;
}
Target
interface Target {
  info: TargetInfo;
  clientsById: Record<ClientId, Client>;
}

Library Exports

new HTTPSnippet(source: HarRequest | HarEntry)

Name of conversion target

import { HTTPSnippet } from 'httpsnippet-lite';

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});
snippet.convert(targetId: string, clientId?: string, options?: T)

The convert method requires a target ID such as node, shell, go, etc. If no client ID is provided, the default client for that target will be used.

Note: to see the default targets for a given client, see target.info.default. For example shell's target has the default of curl.

Many targets provide specific options. Look at the TypeScript types for the target you are interested in to see what options it provides. For example shell:curl's options correspond to the CurlOptions interface in the shell:curl client file.

import { HTTPSnippet } from 'httpsnippet';

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});

// generate Node.js: Native output
console.log(await snippet.convert('node'));

// generate Node.js: Native output, indent with tabs
console.log(
  await snippet.convert('node', {
    indent: '\t',
  }),
);
isTarget

Useful for validating that a custom target is considered valid by HTTPSnippet.

const isTarget: (target: Target) => target is Target;
import { myCustomTarget } from './my-custom-target';
import { isTarget } from 'httpsnippet-lite';

try {
  console.log(isTarget(myCustomTarget));
} catch (error) {
  console.error(error);
}
addTarget

Use addTarget to add a new custom target that you can then use in your project.

const addTarget: (target: Target) => void;
import { myCustomClient } from './my-custom-client';
import { HAR } from 'my-custom-har';
import { HTTPSnippet, addTargetClient } from 'httpsnippet-lite';

addTargetClient(myCustomClient);

const snippet = new HTTPSnippet(HAR);
const output = await snippet.convert('customTargetId');
console.log(output);
isClient

Useful for validating that a custom client is considered valid by HTTPSnippet.

const isClient: (client: Client) => client is Client;
import { myCustomClient } from './my-custom-client';
import { isClient } from 'httpsnippet';

try {
  console.log(isClient(myCustomClient));
} catch (error) {
  console.error(error);
}
addTargetClient

Use addTargetClient to add a custom client to an existing target. See addTarget for how to add a custom target.

const addTargetClient: (targetId: TargetId, client: Client) => void;

Documentation

At the heart of this module is the HAR Format as the HTTP request description format, please review some of the sample JSON HAR Request objects in test fixtures, or read the HAR Docs for more details.

For detailed information on each target, please review the wiki.

Differences from kong/httpsnippet

Here's a list of the most significant differences between httpsnippet-lite and httpsnippet upstream:

  • No reliance on Node.js core modules and globals
  • convert() method is async
  • HAR is not validated
  • CLI is not bundled
  • Dual packaging available

License

MIT © Kong

Keywords

FAQs

Last updated on 02 Apr 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc