Skip to content

Commit 61ad1e6

Browse files
UysimiNecas
authored andcommitted
generate swagger with headers
1 parent 43a1015 commit 61ad1e6

File tree

7 files changed

+26
-5
lines changed

7 files changed

+26
-5
lines changed

Gemfile.rails50

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ source "https://rubygems.org"
22

33
gemspec
44

5-
gem 'rails', '~> 5.0'
5+
gem 'rails', '~> 5.0.0'
66
gem 'mime-types', '~> 2.99.3'
77
gem 'rails-controller-testing'
8+

lib/apipie/swagger_generator.rb

+18-1
Original file line numberDiff line numberDiff line change
@@ -643,10 +643,27 @@ def swagger_params_array_for_method(method, path)
643643
add_params_from_hash(swagger_result, body_param_defs_hash)
644644
end
645645

646+
add_headers_from_hash(swagger_result, method.headers) if method.headers.present?
647+
646648
swagger_result
647649
end
648650

649651

652+
def add_headers_from_hash(swagger_params_array, headers)
653+
swagger_headers = headers.map do |header|
654+
{
655+
name: header[:name],
656+
in: 'header',
657+
required: header[:options][:required],
658+
description: header[:description],
659+
type: header[:options][:type] || 'string'
660+
}
661+
662+
end
663+
swagger_params_array.push(*swagger_headers)
664+
end
665+
666+
650667
def add_params_from_hash(swagger_params_array, param_defs, prefix=nil, default_value_for_in=nil)
651668

652669
if default_value_for_in
@@ -684,7 +701,7 @@ def add_params_from_hash(swagger_params_array, param_defs, prefix=nil, default_v
684701
end
685702
end
686703
end
687-
704+
688705
end
689706

690707
end

spec/controllers/apipies_controller_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@
143143
assert_response :success
144144
expect(response.body).to match(/"swagger":"2.0"/)
145145
# puts response.body
146+
146147
expect(JSON::Validator.validate(swagger_schema, response.body)).to be_truthy
147148
end
148149

spec/controllers/users_controller_spec.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,8 @@ def reload_controllers
482482
name: :OptionalHeaderName,
483483
description: 'Optional header description',
484484
options: {
485-
required: false
485+
required: false,
486+
type: "string"
486487
}
487488
}
488489
end

spec/dummy/app/controllers/users_controller.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ def create_route
291291

292292
api :GET, '/users/action_with_headers'
293293
header :RequredHeaderName, 'Required header description', required: true
294-
header :OptionalHeaderName, 'Optional header description', required: false
294+
header :OptionalHeaderName, 'Optional header description', required: false, type: 'string'
295295
def action_with_headers
296296
end
297297
end

spec/lib/swagger/openapi_2_0_schema.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1604,4 +1604,4 @@
16041604
}
16051605
}
16061606
}
1607-
}
1607+
}

spec/lib/swagger/swagger_dsl_spec.rb

+1
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ def have_field?(field, expected_name, breadcrumb)
558558

559559
expect(returns_obj.code).to eq(200)
560560
expect(returns_obj.is_array?).to eq(false)
561+
561562
expect(returns_obj).to match_field_structure([:pet_name, :animal_type, :age])
562563
end
563564

0 commit comments

Comments
 (0)