Просмотр исходного кода

Simplify response rendering code

Lu Stadler лет назад: 7
Родитель
Сommit
e1dedf66ff
1 измененных файлов с 1 добавлено и 48 удалено
  1. 1 48
      go/fake-http/fake-http.go

+ 1 - 48
go/fake-http/fake-http.go

6
	"encoding/json"
6
	"encoding/json"
7
	"flag"
7
	"flag"
8
	"fmt"
8
	"fmt"
9
	"html/template"
10
	"io"
9
	"io"
11
	"io/ioutil"
10
	"io/ioutil"
12
	"log"
11
	"log"
115
		}
114
		}
116
	})
115
	})
117
116
118
	http.HandleFunc("/_stub", func(w http.ResponseWriter, req *http.Request) {
119
		switch req.Method {
120
		case "GET":
121
			err := stubTmpl.Execute(w, nil)
122
			if err != nil {
123
				log.Printf("Error: Rendering stub template: %s", err)
124
				return
125
			}
126
		case "POST":
127
			err := req.ParseForm()
128
			if err != nil {
129
				log.Printf("Error: Parsing form: %s", err)
130
				return
131
			}
132
			responses = append(responses, readResponse(req.Form))
133
		default:
134
			http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
135
		}
136
	})
137
138
	http.HandleFunc("/_stubs", func(w http.ResponseWriter, req *http.Request) {
117
	http.HandleFunc("/_stubs", func(w http.ResponseWriter, req *http.Request) {
139
		responses = loadResponses(responsesPath, false, responses)
118
		responses = loadResponses(responsesPath, false, responses)
140
119
141
		var err error
142
		if strings.Contains(req.Header.Get("Accept"), "application/yaml") {
143
			err = renderYAML(w, responses)
144
		} else {
145
			err = renderHTML(w, responses)
146
		}
120
		err := renderYAML(w, responses)
147
		if err != nil {
121
		if err != nil {
148
			log.Printf("Error: Rendering stubs: %s", err)
122
			log.Printf("Error: Rendering stubs: %s", err)
149
		}
123
		}
409
383
410
	return responses, nil
384
	return responses, nil
411
}
385
}
412
413
var stubTmpl = template.Must(template.New("").Parse(`<!doctype html>
414
<html>
415
	<head>
416
	</head>
417
418
	<body>
419
		<form method="POST" action="/_stub">
420
			<input type="text" name="method" placeholder="GET" />
421
			<input type="text" name="path" placeholder="/request/path?query" />
422
			<ul>
423
				<li>
424
					<input type="text" name="header" placeholder="Content-Type" />
425
					<input type="text" name="value" placeholder="application/json" />
426
				</li>
427
			</ul>
428
			<textarea name="body" placeholder="{}"></textarea>
429
			<input type="submit" />
430
		</form>
431
	</body>
432
</html>`))