UNPKG

pip-services-imagesets-node

Version:
202 lines (160 loc) 5.53 kB
# ImageSets Microservice This is a system imagesets microservice from Pip.Services library. It allows system administrators and product owners to communicate to users key system events and product updates. Each imageset: - Can be written in multiple languages - Can include pictures and document attachments - Supports editing lifecycle via status tracking The microservice currently supports the following deployment options: * Deployment platforms: Standalone Process, Seneca * External APIs: HTTP/REST, Seneca, AWS Lambda * Persistence: In-Memory, Flat Files, MongoDB This microservice has dependencies on the following microservices: - [pip-services-attachments](https://github.com/pip-services-content/pip-services-attachments-node) - to reference pictures and documents associates with imagesets <a name="links"></a> Quick Links: * [Download Links](doc/Downloads.md) * [Development Guide](doc/Development.md) * [Configuration Guide](doc/Configuration.md) * [Deployment Guide](doc/Deployment.md) * Client SDKs - [Node.js SDK](https://github.com/pip-services-content/pip-clients-imagesets-node) * Communication Protocols - [HTTP Version 1](doc/HttpProtocolV1.md) - [Seneca Version 1](doc/SenecaProtocolV1.md) ## Contract Logical contract of the microservice is presented below. For physical implementation (HTTP/REST, Thrift, Seneca, Lambda, etc.), please, refer to documentation of the specific protocol. ```typescript class ImageSetV1 implements IStringIdentifiable { /* Identification */ public id: string; /* Automatically set fields */ public create_time: Date; /* Content */ public title: string; public pic_ids?: string[]; /* Search */ public tags?: string[]; public all_tags?: string[]; } interface IImageSetsV1 { getImageSets(correlationId: string, filter: FilterParams, paging: PagingParams, callback: (err: any, page: DataPage<ImageSetV1>) => void): void; getImageSetById(correlationId: string, imagesetId: string, callback: (err: any, imageset: ImageSetV1) => void): void; createImageSet(correlationId: string, imageset: ImageSetV1, callback: (err: any, imageset: ImageSetV1) => void): void; updateImageSet(correlationId: string, imageset: ImageSetV1, callback: (err: any, imageset: ImageSetV1) => void): void; deleteImageSetById(correlationId: string, imagesetId: string, callback: (err: any, imageset: ImageSetV1) => void): void; } ``` ## Download Right now the only way to get the microservice is to check it out directly from github repository ```bash git clone git@github.com:pip-services-content/pip-services-imagesets-node.git ``` Pip.Service team is working to implement packaging and make stable releases available for your as zip downloadable archieves. ## Run Add **config.yaml** file to the root of the microservice folder and set configuration parameters. As the starting point you can use example configuration from **config.example.yaml** file. Example of microservice configuration ```yaml --- - descriptor: "pip-services-commons:logger:console:default:1.0" level: "trace" - descriptor: "pip-services-imagesets:persistence:file:default:1.0" path: "./data/imagesets.json" - descriptor: "pip-services-imagesets:controller:default:default:1.0" - descriptor: "pip-services-attachments:client:http:default:1.0" connection: protocol: "http" host: "0.0.0.0" port: 8082 - descriptor: "pip-services-imagesets:service:http:default:1.0" connection: protocol: "http" host: "0.0.0.0" port: 8080 ``` For more information on the microservice configuration see [Configuration Guide](Configuration.md). Start the microservice using the command: ```bash node run ``` ## Use The easiest way to work with the microservice is to use client SDK. The complete list of available client SDKs for different languages is listed in the [Quick Links](#links) If you use Node.js then you should add dependency to the client SDK into **package.json** file of your project ```javascript { ... "dependencies": { .... "pip-clients-imagesets-node": "^1.0.*", ... } } ``` Inside your code get the reference to the client SDK ```javascript var sdk = new require('pip-clients-imagesets-node'); ``` Define client configuration parameters that match configuration of the microservice external API ```javascript // Client configuration var config = { connection: { protocol: 'http', host: 'localhost', port: 8080 } }; ``` Instantiate the client and open connection to the microservice ```javascript // Create the client instance var client = sdk.ImageSetsHttpClientV1(config); // Connect to the microservice client.open(null, function(err) { if (err) { console.error('Connection to the microservice failed'); console.error(err); return; } // Work with the microservice ... }); ``` Now the client is ready to perform operations ```javascript // Create a new imageset client.createImageSet( null, { title: 'Cars', tags: ['car', 'cars', 'cartoon'], pic_ids: ['111', '222', '333'] }, function (err, imageset) { ... } ); ``` ```javascript // Search for car images client.getImageSets( null, { tags: 'cars' }, null function(err, page) { ... } ); ``` ## Acknowledgements This microservice was created and currently maintained by *Sergey Seroukhov*.