Class: RamlParser::SnippetGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/raml_parser/snippet_generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raml) ⇒ SnippetGenerator

Returns a new instance of SnippetGenerator.



5
6
7
# File 'lib/raml_parser/snippet_generator.rb', line 5

def initialize(raml)
  @raml = raml
end

Instance Attribute Details

#ramlObject

Returns the value of attribute raml.



3
4
5
# File 'lib/raml_parser/snippet_generator.rb', line 3

def raml
  @raml
end

Instance Method Details

#curl(resource, method_name) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# 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) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 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