@motorcycle/http
TypeScript icon, indicating that this package has built-in type declarations

4.1.0 • Public • Published

@motorcycle/http

Motorcycle Components and functions for dealing with HTTP

This is a thin abstraction and helpful functions built on top of most-request, which uses superagent under the hood.

Let me have it!

yarn add @motorcycle/http
# or
npm install --save @motorcycle/http

API

  • All functions of arity 2 or more are curried for you!
  • Types not described in the API can be found in the Types section.

Http(sinks: HttpSinks): HttpSources

Effectful component for making HTTP requests and retrieving HTTP responses.

import { run } from '@motorcycle/run';
import { Http } from '@motorcycle/http';

function Effects(sinks) {
  const { response$$ } = Http(sinks);

  return { response$$ }
}

run(Main, Effects);

request(method: HTTPMethod, url: string): RequestOptions

Create simple RequestOptions objects for use with Http component.

function Main(sources) {
  const { dom } = sources;

  ...

  const request$ = constant(request('GET', URL), makeRequest$);

  return { request$ }
}

There are also many functions similar to request that are for particular HTTP methods, all of which take a URL string and return RequestOptions.

  • get(url: string): RequestOptions
  • head(url: string): RequestOptions
  • post(url: string): RequestOptions
  • put(url: string): RequestOptions
  • del(url: string): RequestOptions
  • connect(url: string): RequestOptions
  • options(url: string): RequestOptions
  • trace(url: string): RequestOptions
  • patch(url: string): RequestOptions

Types

All of the types used in the API section.

export interface HttpSinks {
    request$: Stream<RequestOptions>;
}

export interface HttpSources {
    response$$: Stream<ResponseStream>;
}

export interface Response {
    text: string;
    body: any;
    files: any;
    header: any;
    type: string;
    charset: string;
    status: number;
    statusType: number;
    info: boolean;
    ok: boolean;
    redirect: boolean;
    clientError: boolean;
    serverError: boolean;
    error: Error;
    accepted: boolean;
    noContent: boolean;
    badRequest: boolean;
    unauthorized: boolean;
    notAcceptable: boolean;
    notFound: boolean;
    forbidden: boolean;
    xhr: XMLHttpRequest;
    get(header: string): string;
}

export declare type HTTPMethod =
  'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH';

export interface RequestOptions {
    url: string;
    method: HTTPMethod;
    query?: Object;
    send?: Object;
    headers?: Object;
    accept?: string;
    type?: string;
    user?: string;
    password?: string;
    field?: Object;
    progress?: boolean;
    attach?: Array<Attachment>;
    agent?: AgentOptions;
    withCredentials?: boolean;
    redirects?: number;
    lazy?: boolean;
}

export interface Attachment {
    name: string;
    path: string;
    filename?: string;
}

export interface AgentOptions {
    key: string;
    cert: string;
}

Readme

Keywords

none

Package Sidebar

Install

npm i @motorcycle/http

Weekly Downloads

1

Version

4.1.0

License

MIT

Last publish

Collaborators

  • tylors
  • motorcyclets
  • frikki