netper

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2023 License: MIT Imports: 16 Imported by: 0

README

NETPER

Github go.mod Github Release Github Pre-Release

Netper is Go Module to help Developer handling HTTP Request & Response.

go get github.com/nazudis/netper
Disclaimer

This is a copy of the original code https://git.verzth.work/go/jumper.

Usage
Request Parser
func SomeHandler(w http.ResponseWriter, r *http.Request) {
    var req = netper.PlugRequest(r, w) // Request Parser

    if req.HasHeader("X-Custom") {
        // Check whether 'X-Custom' header exist without check the value
    }
    if req.HeaderFilled("X-Custom") {
        // Check whether 'X-Custom' header exist and filled
    }
    customHeader := req.Header("X-Custom") // Get header value

    // http://localhost/service/{id:[0-9]+}/{segment...}
    id := req.GetSegment("id") // Named segment from mux router
    id := req.GetSegmentUint64("id") // Named segment from mux router
    id := req.GetSegmentUint32("id") // Named segment from mux router
    id := req.GetSegmentUint("id") // Named segment from mux router
    id := req.GetSegmentInt64("id") // Named segment from mux router
    id := req.GetSegmentInt32("id") // Named segment from mux router
    id := req.GetSegmentInt("id") // Named segment from mux router

    if req.Has("name") {
        // Check whether 'name' exist without check the value
    }
    if req.Filled("name") {
        // Check whether 'name' exist and filled
    }

    // Add Ptr to get the Pointer
    someVr := req.Get("key") // Get key value as interface
    name := req.GetString("name") // Get name value as string
    id := req.GetUint64("id") // Get id value as uint64
    id := req.GetUint32("id") // Get id value as uint32
    id := req.GetUint("id") // Get id value as uint
    id := req.GetInt64("id") // Get id value as int64
    id := req.GetInt32("id") // Get id value as int32
    id := req.GetInt("id") // Get id value as int
    price := req.GetFloat64("price") // Get price value as float64
    price := req.GetFloat32("price") // Get price value as float32
    status := req.GetBool("active") // Get active value as bool
    birthdate, err := req.GetTime("birthdate") // Get birthdate value as *time.Time with Error handler
    birthdate := req.GetTimeNE("birthdate") // Get birthdate value as *time.Time with No Error
    ids := req.GetArray("ids") // Get ids value as Array of interface{}
    ids := req.GetArrayUniquify("ids") // Get ids value as Array of interface{} and uniquify if possible
    obj := req.GetMap("object") // Get object value as Map of map[string]interface{}
    obj := req.GetStruct("object") // Get object value as struct of interface{}
    json := req.GetJSON("jsonstring") // Get jsonstring value as netper.JSON
    file := req.GetFile("file") // Get file value as netper.File
    files := req.GetFiles("files") // Get files value as Array of netper.File
}
Response Writer

Response Failed sample:

{
  "status": 0,
  "status_number": "1000001",
  "status_code": "ABCDEF",
  "status_message": "Error occurred",
  "data": null
}

Response Success sample:

{
  "status": 1,
  "status_number": "F000002",
  "status_code": "SSSSSS",
  "status_message": "Success",
  "data": {
    "id": 1,
    "name": "json"
  }
}

Plug Response Writer

package mypackage

import (
    // SOME PACKAGES
	"github.com/nazudis/netper"
    // SOME PACKAGES
)

func SomeHandler(w http.ResponseWriter, r *http.Request) {
    var res = netper.PlugResponse(w) // Response Writer
    var data interface{}

    res.SetHttpCode(200) // Set HTTP Response Code. HTTP/1.1 standard (RFC 7231)

    res.Reply(0, "1000001", "ABCDEF", "Error Occurred")
    res.Reply(1, "F000002", "SSSSSS", "Success", data)
    res.ReplyFailed("1000001", "ABCDEF", "Error Occurred")
    res.ReplySuccess("F000002", "SSSSSS", "Success", data)
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseOf

func ParseOf[T any](r *Request, en *T) error

func ParseTo

func ParseTo[T any](r *Request) (T, error)

Types

type File

type File struct {
	// contains filtered or unexported fields
}

func (*File) GetFile

func (f *File) GetFile() multipart.File

func (*File) GetFileHeader

func (f *File) GetFileHeader() *multipart.FileHeader

func (*File) Name

func (f *File) Name() string

func (*File) Store

func (f *File) Store(path string, pattern string, perm os.FileMode) (string, error)

func (*File) StoreAs

func (f *File) StoreAs(path string, name string, perm os.FileMode) error

type JSON

type JSON []byte

func (JSON) Equals

func (j JSON) Equals(j1 JSON) bool

func (JSON) IsNull

func (j JSON) IsNull() bool

func (JSON) MarshalJSON

func (j JSON) MarshalJSON() ([]byte, error)

func (*JSON) Scan

func (j *JSON) Scan(value interface{}) error

func (JSON) String

func (j JSON) String() string

func (*JSON) UnmarshalJSON

func (j *JSON) UnmarshalJSON(data []byte) error

func (JSON) Value

func (j JSON) Value() (driver.Value, error)

type Netper

type Netper struct {
	Request
	Response
}

type Params

type Params map[string]interface{}

type Request

type Request struct {
	Method     string
	ClientIP   string
	ClientPort string
	// contains filtered or unexported fields
}

func PlugRequest

func PlugRequest(r *http.Request, w http.ResponseWriter) *Request

func TouchRequest

func TouchRequest(r *http.Request, w http.ResponseWriter) *Request

TouchRequest touch request with rewrite to reader, so handler can reuse the reader.

func (*Request) Append

func (r *Request) Append(key string, val string)

func (*Request) Filled

func (r *Request) Filled(keys ...string) (found bool)

func (*Request) Get

func (r *Request) Get(key string) interface{}

func (*Request) GetAll

func (r *Request) GetAll() map[string]interface{}

func (*Request) GetArray

func (r *Request) GetArray(key string) []interface{}

func (*Request) GetArrayUniquify

func (r *Request) GetArrayUniquify(key string) []interface{}

func (*Request) GetBool

func (r *Request) GetBool(key string) bool

func (*Request) GetBoolPtr

func (r *Request) GetBoolPtr(key string) *bool

func (*Request) GetFile

func (r *Request) GetFile(key string) (*File, error)

func (*Request) GetFiles

func (r *Request) GetFiles(key string) ([]*File, error)

func (*Request) GetFloat

func (r *Request) GetFloat(key string) float32

func (*Request) GetFloat32Ptr

func (r *Request) GetFloat32Ptr(key string) *float32

func (*Request) GetFloat64

func (r *Request) GetFloat64(key string) float64

func (*Request) GetFloat64Ptr

func (r *Request) GetFloat64Ptr(key string) *float64

func (*Request) GetFragment

func (r *Request) GetFragment() string

func (*Request) GetFullUrl

func (r *Request) GetFullUrl() string

func (*Request) GetHost

func (r *Request) GetHost() string

func (*Request) GetInt

func (r *Request) GetInt(key string) int

func (*Request) GetInt32

func (r *Request) GetInt32(key string) int32

func (*Request) GetInt32Ptr

func (r *Request) GetInt32Ptr(key string) *int32

func (*Request) GetInt64

func (r *Request) GetInt64(key string) int64

func (*Request) GetInt64Ptr

func (r *Request) GetInt64Ptr(key string) *int64

func (*Request) GetIntPtr

func (r *Request) GetIntPtr(key string) *int

func (*Request) GetJSON

func (r *Request) GetJSON(key string) JSON

func (*Request) GetMap

func (r *Request) GetMap(key string) map[string]interface{}

func (*Request) GetOpaque

func (r *Request) GetOpaque() string

func (*Request) GetPassword

func (r *Request) GetPassword() string

func (*Request) GetPath

func (r *Request) GetPath() string

func (*Request) GetPort

func (r *Request) GetPort() string

func (*Request) GetPtr

func (r *Request) GetPtr(key string) *interface{}

func (*Request) GetRawPath

func (r *Request) GetRawPath() string

func (*Request) GetRawQuery

func (r *Request) GetRawQuery() string

func (*Request) GetScheme

func (r *Request) GetScheme() string

func (*Request) GetString

func (r *Request) GetString(key string) string

func (*Request) GetStringPtr

func (r *Request) GetStringPtr(key string) *string

func (*Request) GetStruct

func (r *Request) GetStruct(obj interface{}) error

func (*Request) GetTime

func (r *Request) GetTime(key string) (*time.Time, error)

func (*Request) GetTimeNE

func (r *Request) GetTimeNE(key string) *time.Time

func (*Request) GetUint

func (r *Request) GetUint(key string) uint

func (*Request) GetUint32

func (r *Request) GetUint32(key string) uint32

func (*Request) GetUint32Ptr

func (r *Request) GetUint32Ptr(key string) *uint32

func (*Request) GetUint64

func (r *Request) GetUint64(key string) uint64

func (*Request) GetUint64Ptr

func (r *Request) GetUint64Ptr(key string) *uint64

func (*Request) GetUintPtr

func (r *Request) GetUintPtr(key string) *uint

func (*Request) GetUrl

func (r *Request) GetUrl() string

func (*Request) GetUsername

func (r *Request) GetUsername() string

func (*Request) Has

func (r *Request) Has(keys ...string) (found bool)

func (*Request) HasFile

func (r *Request) HasFile(keys ...string) (found bool)

func (*Request) HasHeader

func (r *Request) HasHeader(keys ...string) (found bool)

func (*Request) HasUser

func (r *Request) HasUser() bool

func (*Request) Header

func (r *Request) Header(key string) string

func (*Request) HeaderFilled

func (r *Request) HeaderFilled(keys ...string) (found bool)

type Response

type Response interface {
	SetHttpCode(code int) Response
	ReplyAs(res Response) error
	Reply(status int, number string, code string, message string, data ...any) error
	ReplyFailed(number string, code string, message string, data ...any) error
	ReplySuccess(number string, code string, message string, data ...any) error
	ReplyCustom(httpStatusCode int, res any) error
	HttpStatusCode() int
	SetHttpStatusCode(httpStatusCode int) Response
	GetStatus() int
	GetStatusNumber() string
	GetStatusCode() string
	GetStatusMessage() string
	GetData() any
}

func NewResponse

func NewResponse(httpStatusCode int, Status int, StatusNumber string, StatusCode string, StatusMessage string, Data ...any) Response

func PlugResponse

func PlugResponse(w http.ResponseWriter) Response

type ResponseX

type ResponseX struct {
	Status        int    `json:"status"`
	StatusNumber  string `json:"status_number"`
	StatusCode    string `json:"status_code"`
	StatusMessage string `json:"status_message"`
	Data          any    `json:"data"`
	// contains filtered or unexported fields
}

func (*ResponseX) GetData

func (r *ResponseX) GetData() any

func (*ResponseX) GetStatus

func (r *ResponseX) GetStatus() int

func (*ResponseX) GetStatusCode

func (r *ResponseX) GetStatusCode() string

func (*ResponseX) GetStatusMessage

func (r *ResponseX) GetStatusMessage() string

func (*ResponseX) GetStatusNumber

func (r *ResponseX) GetStatusNumber() string

func (*ResponseX) HttpStatusCode

func (r *ResponseX) HttpStatusCode() int

func (*ResponseX) Reply

func (r *ResponseX) Reply(status int, number string, code string, message string, data ...any) error

Reply 'data' arguments only used on index 0 */

func (*ResponseX) ReplyAs

func (r *ResponseX) ReplyAs(res Response) error

func (*ResponseX) ReplyCustom

func (r *ResponseX) ReplyCustom(httpStatusCode int, res any) error

func (*ResponseX) ReplyFailed

func (r *ResponseX) ReplyFailed(number string, code string, message string, data ...any) error

ReplyFailed 'data' arguments only used on index 0 */

func (*ResponseX) ReplySuccess

func (r *ResponseX) ReplySuccess(number string, code string, message string, data ...any) error

ReplySuccess 'data' arguments only used on index 0 */

func (*ResponseX) SetHttpCode

func (r *ResponseX) SetHttpCode(code int) Response

func (*ResponseX) SetHttpStatusCode

func (r *ResponseX) SetHttpStatusCode(httpStatusCode int) Response

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL