Class: HerokuAPIStub::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/heroku_api_stub/generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(doc = nil) ⇒ Generator

Returns a new instance of Generator.



3
4
5
# File 'lib/heroku_api_stub/generator.rb', line 3

def initialize(doc=nil)
  @doc = doc || read_default
end

Instance Method Details

#runObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/heroku_api_stub/generator.rb', line 7

def run
  @app = Sinatra.new(ServiceStub)
  @doc["resources"].each do |_, resource|
    example = build_example(resource["attributes"])
    resource["actions"].each do |name, action|
      method = action["method"]
      path   = action["path"]
      status = action["statuses"][0]
      required_params, optional_params = build_param_logic(action)
      # "{app}" to ":app"
      path.gsub!(/{([a-z_]*)}/, ':\1')
      #puts "method=#{method} path=#{path}"
      @app.send(method.downcase, path) do
        require_params!(required_params) if required_params
        validate_params!(optional_params) if optional_params
        if name == "List"
          [status, MultiJson.encode([example], pretty: true)]
        else
          [status, MultiJson.encode(example, pretty: true)]
        end
      end
    end
  end
  @app
end