Skip to content

Instantly share code, notes, and snippets.

@buglessdr
Forked from mgeeky/web-server.rb
Created September 1, 2017 06:29
Show Gist options
  • Save buglessdr/2c935b23c222e612e0a76e53da06310d to your computer and use it in GitHub Desktop.
Save buglessdr/2c935b23c222e612e0a76e53da06310d 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