-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathet
More file actions
141 lines (141 loc) · 5.56 KB
/
et
File metadata and controls
141 lines (141 loc) · 5.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[1mdiff --git a/package-lock.json b/package-lock.json[m
[1mindex dae27a2..fc7c07e 100644[m
[1m--- a/package-lock.json[m
[1m+++ b/package-lock.json[m
[36m@@ -1,6 +1,6 @@[m
{[m
[31m- "name": "openapi-validator",[m
[31m- "version": "1.0.0",[m
[32m+[m[32m "name": "openapi-checker",[m
[32m+[m[32m "version": "1.1.4",[m
"lockfileVersion": 1,[m
"requires": true,[m
"dependencies": {[m
[36m@@ -16,6 +16,11 @@[m
"version": "1.13.3",[m
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",[m
"integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA=="[m
[32m+[m[32m },[m
[32m+[m[32m "yaml": {[m
[32m+[m[32m "version": "1.10.2",[m
[32m+[m[32m "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",[m
[32m+[m[32m "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="[m
}[m
}[m
}[m
[1mdiff --git a/package.json b/package.json[m
[1mindex 0ad70f4..cddbd42 100644[m
[1m--- a/package.json[m
[1m+++ b/package.json[m
[36m@@ -1,8 +1,9 @@[m
{[m
"name": "openapi-checker",[m
[31m- "version": "1.1.4",[m
[32m+[m[32m "version": "1.1.5",[m
"description": "Node CLI script to validate OPENAPI Json and Yaml files using validator.swagger.io",[m
"main": "validator.js",[m
[32m+[m[32m "type": "module",[m
"scripts": {[m
"validate": "node validator.js",[m
"test": "echo \"Error: no test specified\" && exit 1"[m
[36m@@ -22,6 +23,7 @@[m
"author": "Fenn-CS",[m
"license": "ISC",[m
"dependencies": {[m
[31m- "axios": "^0.21.1"[m
[32m+[m[32m "axios": "^0.21.1",[m
[32m+[m[32m "yaml": "^1.10.2"[m
}[m
}[m
[1mdiff --git a/validator.js b/validator.js[m
[1mindex d3cd00a..5d2cca8 100755[m
[1m--- a/validator.js[m
[1m+++ b/validator.js[m
[36m@@ -1,34 +1,62 @@[m
#!/usr/bin/env node[m
[31m-const axios = require('axios');[m
[31m-const fs = require('fs');[m
[m
[31m-let isPath = (path) => {[m
[32m+[m[32mimport axios from 'axios';[m
[32m+[m[32mimport YAML from 'yaml';[m
[32m+[m[32mimport fs from 'fs';[m
[32m+[m[32mimport path from 'path';[m
[32m+[m[32mimport {[m
[32m+[m[32m exit[m
[32m+[m[32m} from 'process';[m
[32m+[m
[32m+[m
[32m+[m[32mconst validate = async (payload) => {[m
[32m+[m[32m console.log("Validation started...");[m
[32m+[m[32m let res = await axios.post('https://validator.swagger.io/validator/debug', payload);[m
[32m+[m[32m if (Object.keys(res.data).length === 0) {[m
[32m+[m[32m console.log("Validation passed.");[m
[32m+[m[32m process.exit(0);[m
[32m+[m[32m } else {[m
[32m+[m[32m console.log("Validation failed\n==================\n");[m
[32m+[m[32m console.log(res.data);[m
[32m+[m[32m console.log("\nPaste your JSON in https://editor.swagger.io/ for more information.")[m
[32m+[m[32m process.exit(1);[m
[32m+[m[32m }[m
[32m+[m[32m}[m
[32m+[m
[32m+[m
[32m+[m[32mconst isPath = (path) => {[m
return /((\/)?([A-Za-z0-9_-]+)(\/)?)+[A-Za-z0-9_-]+.((json)|(yaml))/g.test(path);[m
}[m
[m
[31m-let openapi_file = process.argv[2];[m
[31m-if (openapi_file !== undefined) {[m
[32m+[m[32mconst run = () => {[m
[m
[31m- if (!isPath(openapi_file)) {[m
[31m- console.log("Invalid JSON or YAML file path: Run npm run validate <file-path> # Example /path/to/file.json");[m
[31m- return;[m
[31m- }[m
[31m- let payload = JSON.parse(fs.readFileSync(openapi_file, { encoding: 'utf8', flag: 'r' }));[m
[31m- let validate = async (payload) => {[m
[31m- let res = await axios.post('https://validator.swagger.io/validator/debug', payload);[m
[31m- if (Object.keys(res.data).length === 0) {[m
[31m- console.log("Validation passed.");[m
[31m- process.exit(0);[m
[31m- } else {[m
[31m- console.log("Validation failed\n==================\n");[m
[31m- console.log(res.data);[m
[31m- console.log("\nPaste your JSON in https://editor.swagger.io/ for more information.")[m
[31m- process.exit(1);[m
[32m+[m[32m let openapi_file = process.argv[2];[m
[32m+[m[32m if (openapi_file !== undefined) {[m
[32m+[m
[32m+[m[32m if (!isPath(openapi_file)) {[m
[32m+[m[32m console.log("Invalid JSON or YAML file path: Run npm run validate <file-path> # Example /path/to/file.json");[m
[32m+[m[32m exit;[m
}[m
[32m+[m
[32m+[m[32m const extension = path.extname(openapi_file);[m
[32m+[m[32m let payload = fs.readFileSync(openapi_file, {[m
[32m+[m[32m encoding: 'utf8',[m
[32m+[m[32m flag: 'r'[m
[32m+[m[32m });[m
[32m+[m
[32m+[m[32m if (extension === '.json') {[m
[32m+[m[32m payload = JSON.parse(payload);[m
[32m+[m[32m }[m
[32m+[m
[32m+[m[32m if (extension === '.yaml') {[m
[32m+[m[32m payload = YAML.parse(payload);[m
[32m+[m[32m }[m
[32m+[m
[32m+[m[32m validate(payload);[m
[32m+[m[32m } else {[m
[32m+[m[32m console.log("Parameter missing: Run npm run validate <file-path>")[m
}[m
[31m- validate(payload);[m
[31m-} else {[m
[31m- console.log("Parameter missing: Run npm run validate <file-path>")[m
[31m-}[m
[m
[32m+[m[32m}[m
[m
[32m+[m[32mrun();[m
\ No newline at end of file[m