Skip to content

Commit 93b0eef

Browse files
author
yanglong.2017
committed
refactor: reuse code
Change-Id: I172f392e4c7ae4b6a85a5602cd5d81f42c254bed
1 parent e7d2b40 commit 93b0eef

File tree

1 file changed

+31
-52
lines changed

1 file changed

+31
-52
lines changed

queue/server.go

Lines changed: 31 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,8 @@ type createResponse struct {
3535
}
3636

3737
func createHandler(w http.ResponseWriter, r *http.Request) {
38-
if r.Method != http.MethodPost {
39-
w.WriteHeader(400)
40-
return
41-
}
4238
var request createRequest
43-
data, err := ioutil.ReadAll(r.Body)
44-
if err != nil {
45-
log.WithError(err).Error("io read from frontend fail")
46-
w.WriteHeader(500)
47-
return
48-
}
49-
err = json.Unmarshal(data, &request)
50-
if err != nil {
51-
log.WithError(err).Error("json unmarshal fail")
52-
w.WriteHeader(400)
39+
if ok := decode(w, r, &request); !ok {
5340
return
5441
}
5542
task := &Task{
@@ -61,49 +48,30 @@ func createHandler(w http.ResponseWriter, r *http.Request) {
6148
Content: request.Content,
6249
CreatTime: time.Now().Unix(),
6350
}
64-
err = createTask(task)
51+
err := createTask(task)
6552
if err != nil {
6653
log.WithError(err).Error("create task fail")
6754
w.WriteHeader(500)
6855
return
6956
}
7057
response := createResponse{ID: task.ID}
71-
respData, err := json.Marshal(response)
72-
if err != nil {
73-
log.WithError(err).Error("json marshal fail")
74-
w.WriteHeader(500)
75-
return
76-
}
77-
w.Write(respData)
58+
write(w, response)
7859
}
7960

8061
type deleteRequest struct {
8162
ID string `json:"id"`
8263
}
8364

8465
func deleteHandler(w http.ResponseWriter, r *http.Request) {
85-
if r.Method != http.MethodPost {
86-
w.WriteHeader(400)
87-
return
88-
}
8966
var request deleteRequest
90-
data, err := ioutil.ReadAll(r.Body)
91-
if err != nil {
92-
log.WithError(err).Error("io read from frontend fail")
93-
w.WriteHeader(500)
94-
return
95-
}
96-
err = json.Unmarshal(data, &request)
97-
if err != nil {
98-
log.WithError(err).Error("json unmarshal fail")
99-
w.WriteHeader(400)
67+
if ok := decode(w, r, &request); !ok {
10068
return
10169
}
10270
if request.ID == "" {
10371
w.WriteHeader(400)
10472
return
10573
}
106-
err = deleteTask(request.ID)
74+
err := deleteTask(request.ID)
10775
if err != nil {
10876
log.WithError(err).Error("delete task fail")
10977
w.WriteHeader(500)
@@ -128,21 +96,8 @@ type queryResponse struct {
12896
}
12997

13098
func queryHandler(w http.ResponseWriter, r *http.Request) {
131-
if r.Method != http.MethodPost {
132-
w.WriteHeader(400)
133-
return
134-
}
13599
var request queryRequest
136-
data, err := ioutil.ReadAll(r.Body)
137-
if err != nil {
138-
log.WithError(err).Error("io read from frontend fail")
139-
w.WriteHeader(500)
140-
return
141-
}
142-
err = json.Unmarshal(data, &request)
143-
if err != nil {
144-
log.WithError(err).Error("json unmarshal fail")
145-
w.WriteHeader(400)
100+
if ok := decode(w, r, &request); !ok {
146101
return
147102
}
148103
if request.ID == "" {
@@ -169,7 +124,31 @@ func queryHandler(w http.ResponseWriter, r *http.Request) {
169124
Content: task.Content,
170125
CreatTime: task.CreatTime,
171126
}
172-
respData, err := json.Marshal(response)
127+
write(w, response)
128+
}
129+
130+
func decode(w http.ResponseWriter, r *http.Request, obj interface{}) bool {
131+
if r.Method != http.MethodPost {
132+
w.WriteHeader(400)
133+
return false
134+
}
135+
data, err := ioutil.ReadAll(r.Body)
136+
if err != nil {
137+
log.WithError(err).Error("io read from frontend fail")
138+
w.WriteHeader(500)
139+
return false
140+
}
141+
err = json.Unmarshal(data, obj)
142+
if err != nil {
143+
log.WithError(err).Error("json unmarshal fail")
144+
w.WriteHeader(400)
145+
return false
146+
}
147+
return true
148+
}
149+
150+
func write(w http.ResponseWriter, obj interface{}) {
151+
respData, err := json.Marshal(obj)
173152
if err != nil {
174153
log.WithError(err).Error("json marshal fail")
175154
w.WriteHeader(500)

0 commit comments

Comments
 (0)