35 lines
No EOL
1.1 KiB
Ruby
35 lines
No EOL
1.1 KiB
Ruby
require 'debug'
|
|
class Router
|
|
attr_reader :routes
|
|
def initialize()
|
|
@routes = []
|
|
end
|
|
|
|
def add_route(method, input, &block)
|
|
routeHash = {method: method, resource: input, block: block}
|
|
@routes << routeHash
|
|
p "added successfully, @routes are: #{@routes}"
|
|
end
|
|
|
|
def match_route(request)
|
|
|
|
#spec ["3" "bostongurka"]
|
|
|
|
match = @routes.find {|route| (route[:method] == request.method) && (request.resource.match?(route[:resource]))}
|
|
|
|
if match != nil
|
|
print("\nMatch: ", match, "\n")
|
|
return 200
|
|
else
|
|
if request.resource.match?(@routes[0][:resource]) != true
|
|
p "failed to find: #{request.resource} resource.\nExpected: #{String(@routes[0][:resource])} resource"
|
|
elsif @routes[0][:method] != request.method
|
|
p "failed to find #{request.method} method.\nExpected: #{@routes[0][:method]} method"
|
|
else
|
|
p "Failed to match, got no reason, just kinda didn't feel like it"
|
|
end
|
|
return 404
|
|
end
|
|
end
|
|
|
|
end |