2019-12-01 14:07:12 +01:00
|
|
|
package reqlog
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
"sync"
|
|
|
|
)
|
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
type Request struct {
|
|
|
|
Request http.Request
|
|
|
|
Body []byte
|
2019-12-01 14:07:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
type response struct {
|
|
|
|
res http.Response
|
|
|
|
body []byte
|
|
|
|
}
|
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
type RequestLogStore struct {
|
|
|
|
reqStore []Request
|
2019-12-01 14:07:12 +01:00
|
|
|
resStore []response
|
|
|
|
reqMu sync.Mutex
|
|
|
|
resMu sync.Mutex
|
|
|
|
}
|
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
func NewRequestLogStore() RequestLogStore {
|
|
|
|
return RequestLogStore{
|
|
|
|
reqStore: make([]Request, 0),
|
2019-12-01 14:07:12 +01:00
|
|
|
resStore: make([]response, 0),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
func (store *RequestLogStore) AddRequest(req http.Request, body []byte) {
|
|
|
|
store.reqMu.Lock()
|
|
|
|
defer store.reqMu.Unlock()
|
|
|
|
|
|
|
|
store.reqStore = append(store.reqStore, Request{req, body})
|
|
|
|
}
|
|
|
|
|
|
|
|
func (store *RequestLogStore) Requests() []Request {
|
|
|
|
store.reqMu.Lock()
|
|
|
|
defer store.reqMu.Unlock()
|
2019-12-01 14:07:12 +01:00
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
return store.reqStore
|
2019-12-01 14:07:12 +01:00
|
|
|
}
|
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
func (store *RequestLogStore) AddResponse(res http.Response, body []byte) {
|
|
|
|
store.resMu.Lock()
|
|
|
|
defer store.resMu.Unlock()
|
2019-12-01 14:07:12 +01:00
|
|
|
|
2020-02-23 22:07:46 +01:00
|
|
|
store.resStore = append(store.resStore, response{res, body})
|
2019-12-01 14:07:12 +01:00
|
|
|
}
|