From 8a94110728cca144388958d4bd322045f8bfb9e4 Mon Sep 17 00:00:00 2001 From: jet2tlf Date: Mon, 3 Jun 2024 13:28:07 -0300 Subject: codecrafters submit [skip ci] --- app/request.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 app/request.go (limited to 'app/request.go') diff --git a/app/request.go b/app/request.go new file mode 100644 index 0000000..a859154 --- /dev/null +++ b/app/request.go @@ -0,0 +1,37 @@ +package main + +import ( + "bufio" + "bytes" + "fmt" + "io" +) + +type Request struct { + Method string + Target string + Version string +} + +func NewRequest(reader io.Reader) (*Request, error) { + scanner := bufio.NewScanner(reader) + + ok := scanner.Scan() + if !ok { + err := scanner.Err() + if err == nil { + err = io.EOF + } + + return nil, err + } + + line := scanner.Bytes() + elements := bytes.Split(line, []byte(" ")) + + if len(elements) != 3 { + return nil, fmt.Errorf("invalid request, excepted 3 elements, got %d", len(elements)) + } + + return &Request{Method: string(elements[0]), Target: string(elements[1]), Version: string(elements[2])}, nil +} -- cgit v1.2.3