Socket
Book a DemoInstallSign in
Socket

@map-colonies/csw-client

Package Overview
Dependencies
Maintainers
11
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@map-colonies/csw-client

TypeScript and JavaScript classes for osm elements

latest
Source
npmnpm
Version
1.2.0
Version published
Maintainers
11
Created
Source

CSW-CLIENT

This package provides client-side API for OGC CSW service(s) written in TypeScript.

Suits for Node.JS and React/Angular applications

Package boilerplate based on ts-npm-package-boilerplate

This Client library is based on Jsonix and ogc-schemas libraries.

Code samples are provided by TypeScript.

Installation

Install package by NPM

npm install @map-colonies/csw-client --save

Install package by YARN

yarn add @map-colonies/csw-client --save

!!! IMPORTANT: Apply integrated PATCHES

Add following script to your package.json

"scripts": {
  .
  .
  .
  "patch:deps": "cd ./node_modules/@map-colonies/csw-client && patch-package --patch-dir ./dist/patches"
}

You can add patch:deps script to one of the npm hooks or run it manually.

For example add it to postinstall hook:

"scripts": {
  "postinstall": "yarn run patch:deps && <your_own_postinstall>",
  .
  .
  .
  "patch:deps": "cd ./node_modules/@map-colonies/csw-client && patch-package --patch-dir ./dist/patches"
}

Usage

// import CswClient class 
import { CswClient, ICapabilities } from from '@map-colonies/csw-client';

// later in code
const csw = new CswClient('<YOUR_OGC_CSW_SRV_URL>', <YOUR_REQUEST_EXECUTOR_FUNC>, <CONFIG>);
// trigger one of the exposed methods
csw.GetDomain('<propertyName>').then((data: ICapabilities) => {
  // your code
}); 

Implemented operations/methods

Client library instantiation

  • Instantiation - new
      // import CswClient class 
      import { CswClient } from from '@map-colonies/csw-client';
      import Axios, { Method } from 'axios';
    
      // import desired ADDITIONAL schemas
      const ISO19139_GCO_20060504 = require('ogc-schemas').ISO19139_GCO_20060504;
      const ISO19139_GMD_20060504 = require('ogc-schemas').ISO19139_GMD_20060504;
      const GML_3_2_0 = require('ogc-schemas').GML_3_2_0;
    
      // define your own requestExecutor
      const myRequest = async (url: string, method: string, params: Record<string, unknown>): Promise<any> => {
        const errorMsg = 'CLIENT HTTP ERROR BY AXIOS';
        return Axios.request({
          url,
          method: method as Method,
          ...params,
        })
          .then((res) => res)
          .catch((error) => {
            console.error(errorMsg);
            throw error;
          });
      };
    
      // later in code
      const cswConfig = {
        schemas: [
          GML_3_2_0,
          ISO19139_GCO_20060504,
          ISO19139_GMD_20060504,
        ],
        nameSpaces: {
          namespacePrefixes: { // define ADDITIONAL namespace prefixes
            'http://schema.mapcolonies.com': 'mc',
            'http://www.isotc211.org/2005/gmd': 'gmd',
            'http://www.isotc211.org/2005/gco': 'gco',
          },
        },
        credentials: {},
      };
      const csw = new CswClient('http://127.0.0.1:56477/?version=2.0.2&service=CSW', myRequest, cswConfig);
    

Basic OWS operations

  • GetCapabilities(): Promise

    Allow clients to retrieve information describing the service instance

      csw.GetCapabilities().then((data: ICapabilities) => {
        ... // your code
      });
    
  • DescribeRecord(): Promise

    Allows a client to discover elements of the information model supported by the target catalog service

      csw.DescribeRecord().then((data) => {
        ... // your code
      });
    

CSW queries

  • GetDomain(propertyName: string): Promise

    Obtain runtime information about the range of values of a metadata record element or request parameter.

      csw.GetDomain('title').then((data) => {
        ... // your code
      });
    
  • GetRecords(start: number, max: number, opts: { filter?: IFilterField[]; sort?: ISortField[] }, outputSchema: string): Promise

    Get metadata records according to defined filter and sort order

     const options = {
       filter: [
         {
           field: 'mcgc:geojson',
           bbox: {
             llat: 31.90,
             llon: 36.80,
             ulat: 31.91,
             ulon: 36.81,
           },
         },
         {
           field: 'mcgc:name',
           like: 'magic_place',
         },
       ],
       sort: [
         {
           field: 'mcgc:name',
           desc: false,
         },
         {
           field: 'mcgc:creation_date',
           desc: true,
         },
    
       ]
     };
     csw.GetRecords(1, 10, options, 'http://schema.myschema.com').then((data) => {
       ... // your code
     });
    
  • GetRecordsById(id_list: string[]): Promise

    Get metadata records by ID list

     csw.GetRecordsById(['1', '2', '5']).then((data) => {
       ... // your code
     });
    

CSW CRUD operations

  • InsertRecords(records: any[]): Promise

    Create catalog records

     csw.InsertRecords(records).then((data) => {
       ... // your code
     });
    
  • UpdateRecord(record: any): Promise

    Modify catalog record

     csw.UpdateRecord(records).then((data) => {
       ... // your code
     });
    
  • DeleteRecords(filters: IFilterField[]): Promise

    Delete catalog records according to defined filter

     csw.DeleteRecords(filters).then((data) => {
       ... // your code
     });
    

Utils

  • xmlStringToJson(xmlString: string): any

    Converts XML-like string to JSON object according to defined schemas

     const obj = csw.xmlStringToJson(xmlString);
    
  • jsonToXml(json: any): XMLDocument
    Converts JSON object to XMLDocument according to defined schemas

     const xmlDoc: XMLDocument = csw.jsonToXml(json);
    
  • xmlToJson(xml: XMLDocument): any

    Converts XMLDocument to JSON object according to defined schemas

     const obj = csw.xmlToJson(xml);
    
  • xmlToString(xml: XMLDocument): string

    Converts XMLDocument to XML-like string according to defined schemas

     const str = csw.xmlToString(xml);
    

OGC Filters

  • Operators:

    • Logical Operators:
      • AND
          let filter: any = new FilterBuilder().PropertyName('dc:title').isLike('%water%');
          filter = filter.and(new FilterBuilder().PropertyName('dc:subject').isLike('%polution%'));
      
      • OR
          let filter: any = new FilterBuilder().PropertyName('dc:title').isLike('%water%');
          filter = filter.or(new FilterBuilder().PropertyName('dc:title').isLike('%oil%'));
      
  • Spatial Operatos:

    • BBOX
    let filter: any = new FilterBuilder().PropertyName('dc:title').isLike('%water%');
    filter = filter.and(new FilterBuilder().BBOX(-80, 150, 80, -150));
    
  • Comparison

    • isLike
    • isBetween
    • isEqualTo
    • isLessThanOrEqualTo
    • isGreaterThan
    • isLessThan
    • isGreaterThanOrEqualTo
    • isNotEqualTo

OGC Sort

  const sort: SortBuilder = new SortBuilder().Sort('dc:title');
  sort.Sort('dc:dummy', true);

Applyed patches ( ./patches/*.patch )

FAQs

Package last updated on 04 Aug 2021

Did you know?

Socket

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