Pārlūkot izejas kodu

Support reloading responses from disk

Lu Stadler 7 gadi atpakaļ
vecāks
revīzija
36be6f8bc9
1 mainītis faili ar 18 papildinājumiem un 6 dzēšanām
  1. 18 6
      go/fake-http/fake-http.go

+ 18 - 6
go/fake-http/fake-http.go

@ -51,17 +51,16 @@ func main() {
51 51
		}
52 52
	}
53 53
54
	var responsesPath string
54 55
	if flag.NArg() == 1 {
55
		rs, err := loadResponses(flag.Arg(0))
56
		if err != nil {
57
			log.Fatalf("Error: Parsing %s: %s", flag.Arg(0), err)
58
		}
59
		responses = rs
56
		responsesPath = flag.Arg(0)
60 57
	}
61 58
62 59
	requestLog := make([]LogEntry, 0)
63 60
64 61
	http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
62
		responses = loadResponses(flag.Arg(0), false, responses)
63
65 64
		var resp *http.Response
66 65
		if flags.proxyURL != "" {
67 66
			resp = respondWithProxy(flags.proxyURL, w, req)
@ -137,6 +136,8 @@ func main() {
137 136
	})
138 137
139 138
	http.HandleFunc("/_stubs", func(w http.ResponseWriter, req *http.Request) {
139
		responses = loadResponses(responsesPath, false, responses)
140
140 141
		var err error
141 142
		if strings.Contains(req.Header.Get("Accept"), "application/yaml") {
142 143
			err = renderYAML(w, responses)
@ -384,7 +385,18 @@ func readResponse(form url.Values) Response {
384 385
	return r
385 386
}
386 387
387
func loadResponses(path string) ([]Response, error) {
388
func loadResponses(path string, abort bool, prevResponses []Response) []Response {
389
	rs, err := loadResponsesRaw(path)
390
	if err != nil {
391
		if abort {
392
			log.Fatalf("Error: Parsing %s: %s", flag.Arg(0), err)
393
		}
394
		return prevResponses
395
	}
396
	return rs
397
}
398
399
func loadResponsesRaw(path string) ([]Response, error) {
388 400
	out, err := ioutil.ReadFile(path)
389 401
	if err != nil {
390 402
		return nil, err