Skip to content

Commit e406abf

Browse files
committed
Update README.md
1 parent 6e050fb commit e406abf

22 files changed

+1081
-681
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ Gemfile.lock
3030
# For MacOS:
3131
#
3232
.DS_Store
33-
.project
33+
.project
34+
example.json

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ source 'http://rubygems.org'
22

33
gemspec
44

5-
case version = ENV['GRAPE_VERSION'] || '~> 0.9.0'
5+
case version = ENV['GRAPE_VERSION'] || '~> 0.13.0'
66
when 'HEAD'
77
gem 'grape', github: 'ruby-grape/grape'
88
else

README.md

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# grape-swagger
22

3+
## *don't us it, it is a work in progress version, to upgrade to swagger 2.0 spec*
4+
35
[![Gem Version](https://badge.fury.io/rb/grape-swagger.svg)](http://badge.fury.io/rb/grape-swagger)
46
[![Build Status](https://travis-ci.org/ruby-grape/grape-swagger.svg?branch=master)](https://travis-ci.org/ruby-grape/grape-swagger)
57
[![Dependency Status](https://gemnasium.com/ruby-grape/grape-swagger.svg)](https://gemnasium.com/ruby-grape/grape-swagger)
@@ -95,7 +97,8 @@ Allow markdown in `detail`/`notes`, default is `nil`. (disabled) See below for d
9597
9698
#### hide_format
9799
98-
Don't add `.(format)` to the end of URLs, default is `false`.
100+
~~Don't add `.(format)` to the end of URLs, default is `false`.~~
101+
`.(format)` would always be removed.
99102
100103
#### api_version
101104
@@ -501,17 +504,37 @@ end
501504

502505
## Response documentation
503506

504-
You can also document the HTTP status codes with a description and a specified model that your API returns with the following syntax.
507+
You can also document the HTTP status codes with a description ~~and a specified model~~ that your API returns with one of the following syntax.
508+
509+
``` ruby
510+
desc 'thing', http_codes: [ { code: 400, message: "Invalid parameter entry" } ]
511+
get '/thing' do
512+
...
513+
end
514+
```
515+
516+
``` ruby
517+
desc 'thing' do
518+
params Entities::Something.documentation
519+
http_codes [ { code: 400, message: "Invalid parameter entry" } ]
520+
end
521+
get '/thing' do
522+
...
523+
end
524+
```
505525

506526
``` ruby
507527
get '/', http_codes: [
508-
[200, 'Ok', Entities::Client],
509-
[400, "Invalid parameter entry"]
528+
{ code: 200, message: 'Ok' },
529+
{ code: 400, message: "Invalid parameter entry" }
510530
] do
511531
...
512532
end
513533
```
514534

535+
If no status code is defined [defaults](/lib/grape-swagger/endpoint.rb#L121) would be taken.
536+
537+
515538
## Contributing to grape-swagger
516539

517540
See [CONTRIBUTING](CONTRIBUTING.md).

grape-swagger.gemspec

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
1111
s.summary = 'A simple way to add auto generated documentation to your Grape API that can be displayed with Swagger.'
1212
s.license = 'MIT'
1313

14-
s.add_runtime_dependency 'grape', '>= 0.8.0'
14+
s.add_runtime_dependency 'grape'
1515
s.add_runtime_dependency 'grape-entity'
1616

1717
s.add_development_dependency 'rake'
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
2727
s.add_development_dependency 'rouge', '~> 1.6.1'
2828
s.add_development_dependency 'pry'
2929
s.add_development_dependency 'pry-byebug'
30+
s.add_development_dependency 'awesome_print'
3031

3132
s.files = `git ls-files`.split("\n")
3233
s.test_files = `git ls-files -- {test,spec}/*`.split("\n")

lib/grape-swagger.rb

Lines changed: 60 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
require 'grape'
22
require 'grape-swagger/version'
3+
require 'grape-swagger/endpoint'
34
require 'grape-swagger/errors'
45
require 'grape-swagger/doc_methods'
56
require 'grape-swagger/markdown'
67
require 'grape-swagger/markdown/kramdown_adapter'
78
require 'grape-swagger/markdown/redcarpet_adapter'
89

10+
require "awesome_print"
11+
912
module Grape
1013
class API
1114
class << self
@@ -155,66 +158,68 @@ def standalone_sub_namespaces(name, namespaces)
155158
sub_namespaces
156159
end
157160

158-
def get_non_nested_params(params)
159-
# Duplicate the params as we are going to modify them
160-
dup_params = params.each_with_object({}) do |(param, value), dparams|
161-
dparams[param] = value.dup
162-
end
163-
164-
dup_params.reject do |param, value|
165-
is_nested_param = /^#{ Regexp.quote param }\[.+\]$/
166-
0 < dup_params.count do |p, _|
167-
match = p.match(is_nested_param)
168-
dup_params[p][:required] = false if match && !value[:required]
169-
match
170-
end
171-
end
172-
end
173-
174-
def parse_array_params(params)
175-
modified_params = {}
176-
array_param = nil
177-
params.each_key do |k|
178-
if params[k].is_a?(Hash) && params[k][:type] == 'Array'
179-
array_param = k
180-
modified_params[k] = params[k]
181-
else
182-
new_key = k
183-
if !array_param.nil? && k.to_s.start_with?(array_param.to_s + '[')
184-
new_key = array_param.to_s + '[]' + k.to_s.split(array_param)[1]
185-
modified_params.delete array_param
186-
end
187-
modified_params[new_key] = params[k]
188-
end
189-
end
190-
modified_params
191-
end
192-
193-
def parse_enum_or_range_values(values)
194-
case values
195-
when Range
196-
parse_range_values(values) if values.first.is_a?(Integer)
197-
when Proc
198-
values_result = values.call
199-
if values_result.is_a?(Range) && values_result.first.is_a?(Integer)
200-
parse_range_values(values_result)
201-
else
202-
{ enum: values_result }
203-
end
204-
else
205-
{ enum: values } if values
206-
end
207-
end
208-
209-
def parse_range_values(values)
210-
{ minimum: values.first, maximum: values.last }
211-
end
212-
213161
def create_documentation_class
214162
Class.new(Grape::API) do
215163
extend GrapeSwagger::DocMethods
216164
end
217165
end
166+
167+
168+
# def get_non_nested_params(params)
169+
# # Duplicate the params as we are going to modify them
170+
# dup_params = params.each_with_object({}) do |(param, value), dparams|
171+
# dparams[param] = value.dup
172+
# end
173+
#
174+
# dup_params.reject do |param, value|
175+
# is_nested_param = /^#{ Regexp.quote param }\[.+\]$/
176+
# 0 < dup_params.count do |p, _|
177+
# match = p.match(is_nested_param)
178+
# dup_params[p][:required] = false if match && !value[:required]
179+
# match
180+
# end
181+
# end
182+
# end
183+
#
184+
# def parse_array_params(params)
185+
# modified_params = {}
186+
# array_param = nil
187+
# params.each_key do |k|
188+
# if params[k].is_a?(Hash) && params[k][:type] == 'Array'
189+
# array_param = k
190+
# modified_params[k] = params[k]
191+
# else
192+
# new_key = k
193+
# if !array_param.nil? && k.to_s.start_with?(array_param.to_s + '[')
194+
# new_key = array_param.to_s + '[]' + k.to_s.split(array_param)[1]
195+
# modified_params.delete array_param
196+
# end
197+
# modified_params[new_key] = params[k]
198+
# end
199+
# end
200+
# modified_params
201+
# end
202+
#
203+
# def parse_enum_or_range_values(values)
204+
# case values
205+
# when Range
206+
# parse_range_values(values) if values.first.is_a?(Integer)
207+
# when Proc
208+
# values_result = values.call
209+
# if values_result.is_a?(Range) && values_result.first.is_a?(Integer)
210+
# parse_range_values(values_result)
211+
# else
212+
# { enum: values_result }
213+
# end
214+
# else
215+
# { enum: values } if values
216+
# end
217+
# end
218+
#
219+
# def parse_range_values(values)
220+
# { minimum: values.first, maximum: values.last }
221+
# end
222+
218223
end
219224
end
220225
end

0 commit comments

Comments
 (0)