lib/rambo/raml_models/api.rb in rambo_ruby-0.2.3 vs lib/rambo/raml_models/api.rb in rambo_ruby-0.3.0
- old
+ new
@@ -1,19 +1,46 @@
module Rambo
module RamlModels
class Api
- attr_reader :schema
+ attr_reader :schema, :options
- def initialize(parsed_raml)
- @schema = parsed_raml
+ def initialize(parsed_raml, options={})
+ @schema, @options = parsed_raml, options
end
def resources
- @resources ||= schema.resources.map {|resource| Rambo::RamlModels::Resource.new(resource) }
+ @resources ||= schema.resources.map {|resource| Rambo::RamlModels::Resource.new(resource, headers) }
end
def title
@title ||= schema.title
+ end
+
+ def security_schemes
+ @security_schemes ||= schema.security_schemes.map {|scheme| Rambo::RamlModels::SecurityScheme.new(scheme, options) }
+ end
+
+ def headers
+ @headers ||= Rambo::RamlModels::Headers.new({})
+
+ add_content_type_header!(@headers)
+ add_security_headers!(@headers)
+
+ @headers
+ end
+
+ private
+
+ def add_content_type_header!(h)
+ h.add({ "Content-Type" => schema.media_type }) if schema.media_type
+ end
+
+ def add_security_headers!(h)
+ return unless schema.secured_by
+
+ scheme = security_schemes.find {|sch| sch.title == schema.secured_by.first }
+
+ h.merge!(scheme.headers)
end
end
end
end