package interceptor

import (
	"bufio"
	"net"
	"net/http"

	"github.com/gin-gonic/gin"
)

type fakeResponseWriter struct {
	status int
}

var _ gin.ResponseWriter = &fakeResponseWriter{}

func (w *fakeResponseWriter) Header() http.Header {
	return http.Header{}
}

func (w *fakeResponseWriter) WriteHeader(code int) {
}

func (w *fakeResponseWriter) WriteHeaderNow() {
}

func (w *fakeResponseWriter) Write(data []byte) (n int, err error) {
	return 0, nil
}

func (w *fakeResponseWriter) WriteString(s string) (n int, err error) {
	return 0, nil
}

func (w *fakeResponseWriter) Status() int {
	return w.status
}
func (w *fakeResponseWriter) Size() int {
	return 0
}

func (w *fakeResponseWriter) Written() bool {
	return true
}

// Hijack implements the http.Hijacker interface.
func (w *fakeResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
	return nil, nil, nil
}

// CloseNotify implements the http.CloseNotify interface.
func (w *fakeResponseWriter) CloseNotify() <-chan bool {
	n := make(chan bool)
	return n
}

// Flush implements the http.Flush interface.
func (w *fakeResponseWriter) Flush() {
}

func (w *fakeResponseWriter) Pusher() (pusher http.Pusher) {
	return nil
}
