Class: APIBuilder
- Inherits:
-
Object
- Object
- APIBuilder
- Defined in:
- bin/minecraftctlserver
Defined Under Namespace
Classes: DSL
Instance Method Summary collapse
- #help ⇒ Object
-
#initialize(sinatra, description, path = '', &block) ⇒ APIBuilder
constructor
A new instance of APIBuilder.
- #root_path ⇒ Object
Constructor Details
#initialize(sinatra, description, path = '', &block) ⇒ APIBuilder
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'bin/minecraftctlserver', line 44 def initialize(sinatra, description, path = '', &block) @sinatra = sinatra @description = description @dsl = DSL.new(sinatra, path, &block).data @path = path root = self @sinatra.get(root_path) do root.help.join("\n") + "\n" end @dsl.gets.each do |op| @sinatra.get(path + '/' + op.name, &op.block) end post_map = {} @dsl.posts.each do |op| post_map[op.name] = op end @sinatra.post(root_path) do cmd, *args = request.body.read.split(' ') op = post_map[cmd] or return [400, "Unknown argument: #{cmd} for request: #{request.path_info}\n"] op.block.call(args) end end |
Instance Method Details
#help ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'bin/minecraftctlserver', line 77 def help out = [] out << "#{root_path} - #{@description}" @dsl.posts.each do |op| out << "#{root_path} #{op.name} - #{op.description}" end @dsl.gets.each do |op| out << "#{@path}/#{op.name} - #{op.description}" end @dsl.paths.each do |path| out += path.help end out end |
#root_path ⇒ Object
73 74 75 |
# File 'bin/minecraftctlserver', line 73 def root_path @path.empty? ? '/' : @path end |