Neatly Punctuated Musings

    @guseyn/cutie-rest

    1.0.7 • Public • Published

    cutie-rest

    Cutie extension for using REST (based on cutie-http) in Node.

    NPM Version

    Cutie extension for fs module in Node. It's based on the Async Tree Pattern.

    Usage

    const {
      // Needed async objects here from the table below
    } = require('@guseyn/cutie-rest');

    This library provides following objects: Backend, RestApi, ServingFiles, CachedServingFiles and Method, NotFoundMethod interfaces.

    Object Parameters Description
    Backend port (number), host (string), api (RestApi) Declares backend server(just http for now) on specified port and host, also it provides declared api (REST).
    RestApi ...methods(classes that extend Method) Declares methods of api.
    Method regexp (RegExp), method (string) Declares a method(in api) with url that matches regexp and specified method('GET', 'POST', etc.). This class has a method invoke(request, response) that needs to be overridden.
    ServingFiles regexp (RegExp), mapper (function(url)), notFoundMethod (Method) Extends Method and serves files on url that mathes regexp with mapper function that gets location of a file on a disk by the url. Also it's required to declare notFoundMethod that handles the cases when a file is not found.
    CachedServingFiles regexp (RegExp), mapper (function(url)), notFoundMethod (Method) Does the same that ServingFiles does and caches files for increasing speed of serving them.
    NotFoundMethod regexp (RegExp) Method is used in RestApi, ServingFiles, CachedServingFiles for declaring method on 404(NOT_FOUND) status.

    Example

    'use strict'
    
    const path = require('path');
    const {
      Backend,
      RestApi,
      CachedServingFiles
    } = require('@guseyn/cutie-rest');
    const GeneratedResponse = require('./GeneratedResponse');
    const CustomNotFoundMethod = require('./CustomNotFoundMethod');
    
    const notFoundMethod = new CustomNotFoundMethod(new RegExp(/\/not-found/));
    
    const mapper = (url) => {
      let paths = url.split('/').filter(path => path !== '');
      return path.join(...paths);
    }
    
    new Backend(8080, '127.0.0.1', new RestApi(
      new GeneratedResponse(new RegExp(/\/response/), 'GET'),
      new CachedServingFiles(new RegExp(/\/files/), mapper, notFoundMethod),
      notFoundMethod
    )).run();

    CustomNotFoundMethod

    'use strict'
    
    const { NotFoundMethod } = require('./NotFoundMethod');
    
    class CustomNotFoundMethod extends NotFoundMethod {
    
      constructor(regexpUrl) {
        super(regexpUrl);
      }
    
    }
    
    module.exports = CustomNotFoundMethod;

    GeneratedResponse

    This class also uses cutie-http

    'use strict'
    
    const { Method } = require('@guseyn/cutie-rest');
    
    const {
      EndedResponse,
      WrittenResponse,
      ResponseWithWrittenHead
    } = require('@guseyn/cutie-http');
    
    class GeneratedResponse extends Method {
    
      constructor(regexpUrl, type) {
        super(regexpUrl, type);
      }
    
      invoke(request, response) {
        new EndedResponse(
          new WrittenResponse(
            new ResponseWithWrittenHead(
              response, 200, 'ok',  {
                'Content-Type': 'text/plain' 
              }
            ), 'content ... '
          ), `is delivered`
        ).call();
      }
    
    }
    
    module.exports = GeneratedResponse;

    Keywords

    Install

    npm i @guseyn/cutie-rest

    DownloadsWeekly Downloads

    0

    Version

    1.0.7

    License

    MIT

    Unpacked Size

    29.3 kB

    Total Files

    33

    Last publish

    Collaborators

    • guseyn