Jumper is HTTP Request Parser for Gorilla MUX
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.
Dodi 9a29151027 change module, re compatibility with dependencies 4 months ago
demo change module, re compatibility with dependencies 4 months ago
.gitignore Pre release 1 year ago
JSON.go Convert bytes to string on struct 1 year ago
LICENSE Initial commit 1 year ago
README.md change module, re compatibility with dependencies 4 months ago
file.go File Permission fixed 11 months ago
go.mod change module, re compatibility with dependencies 4 months ago
go.sum change module, re compatibility with dependencies 4 months ago
jumper.go add response writer 1 year ago
request.go change module, re compatibility with dependencies 4 months ago
response.go bug array fixed 1 year ago
util.go Bug host and port parse on ipv6 fixed 1 year ago

README.md

JUMPER

Github go.mod Github Release Github Pre-Release

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

go get git.teknoku.digital/teknoku/jumper
Usage
Request Parser
func SomeHandler(w http.ResponseWriter, r *http.Request) {
    var req = jumper.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
    }

    name := req.Get("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.GetFloat("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 jumper.JSON
    file := req.GetFile("file") // Get file value as jumper.File
    files := req.GetFiles("files") // Get files value as Array of jumper.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
	"git.teknoku.digital/teknoku/jumper"
    // SOME PACKAGES
)

func SomeHandler(w http.ResponseWriter, r *http.Request) {
    var res = jumper.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)
}

Demo Link

http://localhost:9999/?list={"obj":{"id":[1,2,3]}}