You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.4 KiB

package nwweb
import "net/http"
type Response struct {
httpObj any
Body body
Headers headers
}
func newResponseClient(httpResponse *http.Response) *Response {
r := &Response{
httpObj: httpResponse,
Headers: newHeaders(httpResponse),
}
r.Body = newBody(r, httpResponse.Body)
return r
}
func newResponseServer(httpResponseWriter http.ResponseWriter) *Response {
r := &Response{
httpObj: httpResponseWriter,
Headers: newHeaders(httpResponseWriter),
}
r.Body = newBody(r, httpResponseWriter)
return r
}
func (r Response) StatusCode() int {
if response, ok := r.httpObj.(*http.Response); ok {
return response.StatusCode
}
return 0
}
func (r Response) Cookie(name string) *http.Cookie {
if response, ok := r.httpObj.(*http.Response); ok {
for _, cookie := range response.Cookies() {
if cookie.Name == name {
return cookie
}
}
}
return nil
}
func (r Response) SetStatusCode(statusCode int) {
if responseWriter, ok := r.httpObj.(http.ResponseWriter); ok {
responseWriter.WriteHeader(statusCode)
}
}
func (r Response) SetCookie(cookie *http.Cookie) {
if responseWriter, ok := r.httpObj.(http.ResponseWriter); ok {
http.SetCookie(responseWriter, cookie)
}
}
func (r Response) Redirect(request *Request, toUrl string, statusCode int) {
if responseWriter, ok := r.httpObj.(http.ResponseWriter); ok {
http.Redirect(responseWriter, request.httpRequest, toUrl, statusCode)
}
}