jsonapi_swagger_helpers 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jsonapi_swagger_helpers/version.rb +1 -1
- data/lib/tasks/swagger_diff.rake +19 -13
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abb83bf2b0e772c1a1cc03a52e73166a2bbdd7df
|
4
|
+
data.tar.gz: bd30366f11ccdf800c455de0d18b5d2e61d70122
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2dfb9d76a78f713f83d4a1fad0745f104e9ca5037ffda8b31930b4a1badc7e4f1cd92c048b2ecdc3bc5fea881112abfd9afff19fc5d448dbf572efc0fddd0eb
|
7
|
+
data.tar.gz: 8bee607c72c241a36e7a2390c7691c342f8a20f13b8c91a99f1fa2771b4f33f5d994a429fcb4e3959de4bd39a38c6cf7a48ea30dda1a0770caf8c5f5a9e42d8c
|
data/lib/tasks/swagger_diff.rake
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'pp'
|
2
|
+
require 'net/http'
|
2
3
|
begin
|
3
4
|
require 'swagger/diff'
|
4
5
|
rescue LoadError
|
@@ -6,38 +7,43 @@ rescue LoadError
|
|
6
7
|
exit(1)
|
7
8
|
end
|
8
9
|
|
9
|
-
def
|
10
|
-
token = ENV['JSONAPI_TOKEN']
|
10
|
+
def get_local_swagger(path)
|
11
11
|
session = ActionDispatch::Integration::Session.new(Rails.application)
|
12
|
-
session.get path
|
13
|
-
'Authorization' => "Token token=\"#{token}\""
|
14
|
-
}
|
12
|
+
session.get path
|
15
13
|
session.response.body
|
16
14
|
end
|
17
15
|
|
16
|
+
def get_remote_swagger(path)
|
17
|
+
uri = URI(path)
|
18
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
19
|
+
req = Net::HTTP::Get.new(uri)
|
20
|
+
req['Authorization'] = "Token token=\"#{ENV['JSONAPI_TOKEN']}\""
|
21
|
+
res = http.request(req)
|
22
|
+
res.body
|
23
|
+
end
|
24
|
+
|
18
25
|
desc <<-DESC
|
19
26
|
Compare a local swagger.json to a remote swagger.json
|
20
27
|
|
21
|
-
Usage: swagger_diff[namespace,
|
28
|
+
Usage: swagger_diff[namespace,remote_host]
|
22
29
|
|
23
|
-
Example swagger_diff["api","http://
|
30
|
+
Example swagger_diff["api","http://myapp.com"]
|
24
31
|
|
25
32
|
If your app relies on JSON Web Tokens, you can set JSONAPI_TOKEN for authentication
|
26
33
|
DESC
|
27
|
-
task :swagger_diff, [:namespace, :
|
28
|
-
|
29
|
-
remote_host = args[:remote_host] || 'http://localhost:3000'
|
34
|
+
task :swagger_diff, [:namespace, :remote_host] => [:environment] do |_, args|
|
35
|
+
remote_host = args[:remote_host] || 'http://localhost:3001'
|
30
36
|
namespace = args[:namespace] || 'api'
|
31
37
|
|
32
|
-
old =
|
33
|
-
new =
|
38
|
+
old = get_remote_swagger("#{remote_host}/#{namespace}/swagger.json")
|
39
|
+
new = get_local_swagger("/#{namespace}/swagger.json")
|
34
40
|
diff = Swagger::Diff::Diff.new(old, new)
|
35
41
|
|
36
42
|
if diff.compatible?
|
37
43
|
puts 'No backwards incompatibilities found!'
|
38
44
|
else
|
39
45
|
puts "Found backwards incompatibilities!\n\n"
|
40
|
-
pp
|
46
|
+
pp diff.incompatibilities.inspect
|
41
47
|
exit(1)
|
42
48
|
end
|
43
49
|
end
|