
Security News
ESLint Adds Support for Parallel Linting, Closing 10-Year-Old Feature Request
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.
Convert API Blueprint, Swagger and OpenAPI to minimal routes with JSON Schema. For ease of use and creation of new tools.
Will look like
[
{
"path": "/sessions",
"method": "POST",
"content-type": "application/json",
"requests": [{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"login": {
"type": "string"
},
"password": {
"type": "string"
},
"captcha": {
"type": "string"
}
},
"required": [
"login",
"password"
]
}],
"responses": [
{
"status": "401",
"content-type": "application/json",
"body": {}
},
{
"status": "429",
"content-type": "application/json",
"body": {}
},
{
"status": "201",
"content-type": "application/json",
"body": {
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"confirmation": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"operation": {
"type": "string"
}
},
"required": [
"id",
"type",
"operation"
]
},
"captcha": {
"type": "string"
},
"captcha_does_not_match": {
"type": "boolean"
}
}
}
}
]
}
]
Then add this line to your application's Gemfile:
gem 'tomograph'
After that execute:
$ bundle
Or install the gem by yourself:
$ gem install tomograph
Also Swagger
require 'tomograph'
tomogram = Tomograph::Tomogram.new(openapi2_json_path: '/path/to/doc.json')
Also OpenAPI
require 'tomograph'
tomogram = Tomograph::Tomogram.new(openapi3_yaml_path: '/path/to/doc.yaml')
First you need to install drafter. Works after conversion from API Blueprint to API Elements (in YAML file) with Drafter.
That is, I mean that you first need to do this
drafter doc.apib -o doc.yaml
and then
require 'tomograph'
tomogram = Tomograph::Tomogram.new(drafter_yaml_path: '/path/to/doc.yaml')
To use additional features of the pre-converted
require 'tomograph'
tomogram = Tomograph::Tomogram.new(tomogram_json_path: '/path/to/doc.json')
Default: ''
You can specify API prefix and path to the spec using one of the possible formats:
Tomograph::Tomogram.new(prefix: '/api/v2', drafter_yaml_path: '/path/to/doc.yaml')
Tomograph::Tomogram.new(prefix: '/api/v2', tomogram_json_path: '/path/to/doc.json')
Use to_json
for converting to JSON, example from API Blueprint:
tomogram.to_json
FORMAT: 1A
HOST: http://test.local
# project
# Group project
Project
## Authentication [/sessions]
### Sign In [POST]
+ Request (application/json)
+ Attributes
+ login (string, required)
+ password (string, required)
+ captcha (string, optional)
+ Response 401 (application/json)
+ Response 429 (application/json)
+ Response 201 (application/json)
+ Attributes
+ confirmation (Confirmation, optional)
+ captcha (string, optional)
+ captcha_does_not_match (boolean, optional)
# Data Structures
## Confirmation (object)
+ id (string, required)
+ type (string, required)
+ operation (string, required)
[
{
"path": "/sessions",
"method": "POST",
"content-type": "application/json",
"requests": [{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"login": {
"type": "string"
},
"password": {
"type": "string"
},
"captcha": {
"type": "string"
}
},
"required": [
"login",
"password"
]
}],
"responses": [
{
"status": "401",
"content-type": "application/json",
"body": {}
},
{
"status": "429",
"content-type": "application/json",
"body": {}
},
{
"status": "201",
"content-type": "application/json",
"body": {
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"confirmation": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"operation": {
"type": "string"
}
},
"required": [
"id",
"type",
"operation"
]
},
"captcha": {
"type": "string"
},
"captcha_does_not_match": {
"type": "boolean"
}
}
}
}
]
}
]
tomogram.to_a
request = tomogram.find_request(method: 'GET', path: '/status/1?qwe=rty')
request = tomogram.find_request_with_content_type(method: 'GET', path: '/status/1?qwe=rty', content_type: 'application/json')
find_responses
responses = request.find_responses(status: '200')
This may be useful if you specify a prefix.
tomogram.prefix_match?('http://local/api/v2/users')
Maps resources for API Blueprint with possible requests.
Example output:
{
'/sessions' => ['POST /sessions']
}
CLI allows you to convert files from API Blueprint (API Elements), Swagger and OpenAPI to JSON Schema.
Run CLI with -h
to get detailed help:
tomograph -h
To specify the handler version use the -d
flag:
tomograph -d openapi2 openapi2.json tomogram.json
tomograph -d openapi3 openapi3.yaml doc.json
tomograph -d 4 apielemetns.yaml doc.json
Exclude "description" keys from json-schemas.
tomograph -d 4 apielemetns.yaml doc.json --exclude-description
Split output into files by method. Output in dir path.
tomograph -d 4 --split apielemetns.yaml jsons/
The gem is available as open source under the terms of the MIT License.
FAQs
Unknown package
We found that tomograph demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
ESLint now supports parallel linting with a new --concurrency flag, delivering major speed gains and closing a 10-year-old feature request.
Research
/Security News
A malicious Go module posing as an SSH brute forcer exfiltrates stolen credentials to a Telegram bot controlled by a Russian-speaking threat actor.
Security News
Rspack launches Rslint, a fast TypeScript-first linter built on typescript-go, joining in on the trend of toolchains creating their own linters.