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

Support reloading responses from disk

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

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

51
		}
51
		}
52
	}
52
	}
53
53
54
	var responsesPath string
54
	if flag.NArg() == 1 {
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
	requestLog := make([]LogEntry, 0)
59
	requestLog := make([]LogEntry, 0)
63
60
64
	http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
61
	http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
62
		responses = loadResponses(flag.Arg(0), false, responses)
63
65
		var resp *http.Response
64
		var resp *http.Response
66
		if flags.proxyURL != "" {
65
		if flags.proxyURL != "" {
67
			resp = respondWithProxy(flags.proxyURL, w, req)
66
			resp = respondWithProxy(flags.proxyURL, w, req)
137
	})
136
	})
138
137
139
	http.HandleFunc("/_stubs", func(w http.ResponseWriter, req *http.Request) {
138
	http.HandleFunc("/_stubs", func(w http.ResponseWriter, req *http.Request) {
139
		responses = loadResponses(responsesPath, false, responses)
140
140
		var err error
141
		var err error
141
		if strings.Contains(req.Header.Get("Accept"), "application/yaml") {
142
		if strings.Contains(req.Header.Get("Accept"), "application/yaml") {
142
			err = renderYAML(w, responses)
143
			err = renderYAML(w, responses)
384
	return r
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
	out, err := ioutil.ReadFile(path)
400
	out, err := ioutil.ReadFile(path)
389
	if err != nil {
401
	if err != nil {
390
		return nil, err
402
		return nil, err