UNPKG

feed-validator

Version:

Simple validator for RSS, Atom or opensearch.xml that using validator.w3.org/feed and plugins

103 lines (83 loc) 3.63 kB
# Feed validator Simple validator for feeds like RSS or Atom. Supports opensearch.xml validation. Based on validator.w3.org/feed Supports plugins for custom checks [![Build Status](https://travis-ci.org/andre487/feed-validator.svg?branch=master)](https://travis-ci.org/andre487/feed-validator) [![Code Climate](https://codeclimate.com/github/Andre-487/feed-validator/badges/gpa.svg)](https://codeclimate.com/github/Andre-487/feed-validator) [![bitHound Overall Score](https://www.bithound.io/github/andre487/feed-validator/badges/score.svg)](https://www.bithound.io/github/andre487/feed-validator) [![npm version](https://badge.fury.io/js/feed-validator.svg)](http://badge.fury.io/js/feed-validator) ## Installation ``` npm install [-g] feed-validator ``` ## Usage ``` usage: feed-validator [-h] [-v] [-c FILE_PATH] [-r REPORTER_NAME] [--no-colors] url Simple validator for RSS, Atom or opensearch.xml that using validator.w3. org/feed and plugins Positional arguments: url Feed url or file-path to validate Optional arguments: -h, --help Show this help message and exit. -v, --version Show program's version number and exit. -c FILE_PATH, --config FILE_PATH Config file path -r REPORTER_NAME, --reporter REPORTER_NAME Reporter name: text, json --no-colors Don't use colors --no-showfeed Don't show the feed content ``` ## Arguments and options Options can be defined by command line and configuration file. ### url URL or file-path of the validated feed. ### config Configuration file. Can be passed from command line. Example of config file see in `examples` folder. ### reporter Reporter type: text or JSON. Can be defined in command line: `--reporter json` or in config file: `reporter: 'json'` ### noColors Don't use colors in report. Can be passed from command line: `--no-colors` and from config file: `noColors: true`. ### noShowFeed Don't show the feed's xml content in the report. Can be passed from command line: `--no-showfeed` and from config file: `noShowFeed: true`. ### suppress You can suppress some messages by defining objects that contains fields to match in config file. Example of suppressing: ```js suppress: [ {level: 'error', text: 'Unexpected method attribute on Url element'}, {level: 'warning', type: 'ShouldIncludeExample'} ], ``` ### plugins Can be defined in config file (see `examples`). Each plugin is function that take JSON feed representation and returns errors, warnings and information messages list. Plugin function example: ```js /** * Check HTTPS in urls from opensearch.xml * @param {Object} feedJson Feed JSON representation * @param {Object} options Program options */ function checkHttps(feedJson, options) { var path = 'OpenSearchDescription.Url'; var urls = _.get(feedJson, path); var errors = []; if (!urls) { errors.push({level: 'error', path: path, text: 'No urls'}); } _.each(urls, function (item, i) { var url = _.get(item, '$.template'); var type = _.get(item, '$.type'); var errPath = [path, i, '$.template'].join('.'); if (!url) { errors.push({level: 'error', path: errPath, text: 'No url template for type ' + type}); } else if (!/(https:)?\/\//.test(url)) { errors.push({level: 'error', path: errPath, text: 'Non HTTPS schema in type ' + type}); } }); return errors; } ``` You should define `level` and `text` fields. And you can define your own custom `type` field.