diff --git a/.gitignore b/.gitignore index 723ef36..706fd07 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.idea \ No newline at end of file +.idea +.vscode diff --git a/cmd/rest/main.go b/cmd/rest/main.go index 1d88bc3..b1f7568 100644 --- a/cmd/rest/main.go +++ b/cmd/rest/main.go @@ -1,20 +1,23 @@ package main import ( - "github.com/wshaman/course-rest/handlers/user" "log" "net/http" "github.com/gorilla/mux" + "github.com/wshaman/course-rest/handlers/user" ) + func main() { router := mux.NewRouter() router.HandleFunc("/api/v0/user", user.List).Methods(http.MethodGet) + router.HandleFunc("/api/v0/search", user.Search).Methods(http.MethodGet) router.HandleFunc("/api/v0/user", user.Create).Methods(http.MethodPost) router.HandleFunc("/api/v0/user/{id}", user.Delete).Methods(http.MethodDelete) router.HandleFunc("/api/v0/user/{id}", user.View).Methods(http.MethodGet) router.HandleFunc("/api/v0/user/{id}", user.Update).Methods(http.MethodPut) + log.Println("Starting API server on 8080") if err := http.ListenAndServe(":8080", router); err != nil { log.Fatal(err) diff --git a/go.mod b/go.mod index 448e22e..afb6896 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/wshaman/course-rest go 1.14 require ( - github.com/gorilla/mux v1.7.4 + github.com/gorilla/mux v1.8.0 github.com/stretchr/testify v1.7.0 // indirect github.com/wshaman/contacts-stub v0.0.0-20210724212216-60df974b9b84 ) diff --git a/go.sum b/go.sum index 0c48bfe..ce99898 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= -github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/handlers/user/list.go b/handlers/user/list.go index ceca821..4ce6f03 100644 --- a/handlers/user/list.go +++ b/handlers/user/list.go @@ -4,7 +4,6 @@ import ( "net/http" contacts "github.com/wshaman/contacts-stub" - "github.com/wshaman/course-rest/lib" ) diff --git a/handlers/user/search.go b/handlers/user/search.go new file mode 100644 index 0000000..0745bce --- /dev/null +++ b/handlers/user/search.go @@ -0,0 +1,22 @@ +package user + +import ( + "net/http" + + contacts "github.com/wshaman/contacts-stub" + "github.com/wshaman/course-rest/lib" +) + +func Search(w http.ResponseWriter, r *http.Request) { + // url transfer as a parameter + query := r.URL.Query() + number := query.Get("number") + p := contacts.LoadPersistent() + // find by phone + res, err := p.FindByPhone(number) + if err != nil { + lib.ReturnInternalError(w, err) + return + } + lib.ReturnJSON(w, res) +} \ No newline at end of file