Skip to content

Instantly share code, notes, and snippets.

@mgeeky
Forked from Integralist/web-server.rb
Created July 21, 2016 11:45
Show Gist options
  • Save mgeeky/d1863e24184cc7ef7a441ee548bcb5d3 to your computer and use it in GitHub Desktop.
Save mgeeky/d1863e24184cc7ef7a441ee548bcb5d3 to your computer and use it in GitHub Desktop.

Revisions

  1. Mark McDonnell created this gist Jun 3, 2012.
    65 changes: 65 additions & 0 deletions web-server.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,65 @@
    #!/usr/bin/env ruby

    require "webrick"

    =begin
    WEBrick is a Ruby library that makes it easy to build an HTTP server with Ruby.
    It comes with most installations of Ruby by default (it’s part of the standard library),
    so you can usually create a basic web/HTTP server with only several lines of code.
    The following code creates a generic WEBrick server on the local machine on port 1234,
    shuts the server down if the process is interrupted (often done with Ctrl+C).
    This example lets you call the URL's: "add" and "subtract" and pass through arguments to them
    Example usage:
    http://localhost:1234/ (this will show the specified error message)
    http://localhost:1234/add?a=10&b=10
    http://localhost:1234/subtract?a=10&b=9
    =end

    class MyNormalClass
    def self.add (a, b)
    a.to_i + b.to_i
    end

    def self.subtract (a, b)
    a.to_i - b.to_i
    end
    end

    class MyServlet < WEBrick::HTTPServlet::AbstractServlet
    def do_GET (request, response)
    if request.query["a"] && request.query["b"]
    a = request.query["a"]
    b = request.query["b"]
    response.status = 200
    response.content_type = "text/plain"
    result = nil

    case request.path
    when "/add"
    result = MyNormalClass.add(a, b)
    when "/subtract"
    result = MyNormalClass.subtract(a, b)
    else
    result = "No such method"
    end

    response.body = result.to_s + "\n"
    else
    response.status = 200
    response.body = "You did not provide the correct parameters"
    end
    end
    end

    server = WEBrick::HTTPServer.new(:Port => 1234)

    server.mount "/", MyServlet

    trap("INT") {
    server.shutdown
    }

    server.start