class RamlParser::SnippetGenerator
Attributes
raml[RW]
Public Class Methods
new(raml)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 5 def initialize(raml) @raml = raml end
Public Instance Methods
curl(resource, method_name)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 9 def curl(resource, method_name) method = resource.methods[method_name] curl_method = "-X#{method.method.upcase}" curl_content_type = map_nonempty(method.bodies.values.first) { |b| "-H \"Accept: #{b.media_type}\"" } query_parameters = map_nonempty(render_query_parameters(method.query_parameters.values)) { |s| '?' + s } curl_data = map_nonempty(method.bodies.values.first) { |b| "-d \"#{b.example}\"" } ['curl', curl_method, curl_content_type, resource.absolute_uri + query_parameters, curl_data].select { |p| not is_falsy(p) }.join(' ') end
javascript_vanilla(resource, method_name)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 20 def javascript_vanilla(resource, method_name) method = resource.methods[method_name] query_parameters = map_nonempty(render_query_parameters(method.query_parameters.values)) { |s| '?' + s } js_content_type = map_nonempty(method.bodies.values.first) { |b| "xhr.setRequestHeader('Accept', '#{b.media_type}');\n" } || '' data = map_nonempty(method.bodies.values.first) { |b| (b.example || '').chomp } result = "var xhr = new XMLHttpRequest();\n" result += "xhr.open('#{method.method.upcase}', '#{resource.absolute_uri + query_parameters}', true);\n" result += "xhr.onreadystatechange = function () {\n" result += " if (xhr.readyState != 4 || xhr.status != 200) return;\n" result += " console.log('Success', xhr.responseText);\n" result += "};\n" result += js_content_type result += "xhr.send(\"#{data}\");" result end
ruby(resource, method_name)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 39 def ruby(resource, method_name) method = resource.methods[method_name] send_method = method.method.downcase == 'post' || method.method.downcase == 'put' query_parameters = map_nonempty(render_query_parameters(method.query_parameters.values)) { |s| '?' + s } || '' uri = "#{resource.absolute_uri}#{query_parameters}" data = map_nonempty(method.bodies.values.first) { |b| b.example.chomp } headers = { 'Accept' => map_nonempty(method.bodies.values.first) { |b| b.media_type } } headers = headers.delete_if {|key, value| value.nil? } result = "require 'net/http'\n" result += "require 'json'\n" if send_method result += "uri = URI.parse('#{uri}')\n" result += "headers = #{headers}\n" unless headers.empty? result += "data = #{data}\n\n" if send_method result += "req = Net::HTTP::#{method.method.capitalize}.new(uri.path" result += headers.empty? ? ")\n" : ", initheader = headers)\n" result += "req.body = data.to_json\n" if send_method result += "response = Net::HTTP.start(uri.hostname, uri.port) { |http| http.request(req) }\n" result end
Private Instance Methods
is_falsy(value)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 63 def is_falsy(value) if value.is_a?(String) value.length == 0 else value.nil? end end
map_nonempty(value, &code)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 71 def map_nonempty(value, &code) if not is_falsy(value) code.call(value) else value end end
render_query_parameters(query_parameters)
click to toggle source
# File lib/raml_parser/snippet_generator.rb, line 79 def render_query_parameters(query_parameters) query_parameters .select { |q| q.required } .map { |q| "#{q.name}=#{q.example || 'value'}"} .join('&') end