feat: added the statuses package.
This commit is contained in:
parent
89be9a69be
commit
9209039b32
5 changed files with 192 additions and 5 deletions
2
api.go
2
api.go
|
@ -69,6 +69,8 @@ func (c *Context) Scan(v any) bool {
|
|||
switch typ {
|
||||
case contents.Json:
|
||||
c.dec = json.NewDecoder(c.R.Body)
|
||||
//case contents.UrlEncoded:
|
||||
// return false
|
||||
default:
|
||||
c.scanErr = UnknownContentTypeErr
|
||||
return false
|
||||
|
|
96
cmd/hook/main.go
Normal file
96
cmd/hook/main.go
Normal file
|
@ -0,0 +1,96 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"vultras.su/core/bond"
|
||||
"vultras.su/core/bond/methods"
|
||||
"vultras.su/core/bond/contents"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type GetNotesOptions struct {
|
||||
Id int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
var root = bond.Mux().
|
||||
Def(
|
||||
"",
|
||||
bond.Func(func(c *bond.Context) {
|
||||
c.W.Write([]byte("This is the index page"))
|
||||
}),
|
||||
).Def(
|
||||
"hello",
|
||||
bond.Mux().Def(
|
||||
"en",
|
||||
bond.Func(func(c *bond.Context) {
|
||||
c.Printf("Hello, World!")
|
||||
}),
|
||||
).Def(
|
||||
"ru",
|
||||
bond.Func(func(c *bond.Context) {
|
||||
c.Printf("Привет, Мир!")
|
||||
}),
|
||||
),
|
||||
).Def(
|
||||
"web",
|
||||
bond.Static("./static"),
|
||||
).Def(
|
||||
"test",
|
||||
bond.Func(func(c *bond.Context) {
|
||||
c.SetContentType(contents.Plain)
|
||||
c.Printf(
|
||||
"Path: %q\n"+
|
||||
"Content-Type: %q\n",
|
||||
c.Path(), c.ContentType(),
|
||||
)
|
||||
c.Printf("Query:\n")
|
||||
for k, vs := range c.Query() {
|
||||
c.Printf("\t%q:\n", k)
|
||||
for _, v := range vs {
|
||||
c.Printf("\t\t%q\n", v)
|
||||
}
|
||||
}
|
||||
}),
|
||||
).Def(
|
||||
"get-notes",
|
||||
bond.Method().Def(
|
||||
methods.Get,
|
||||
bond.Func(func(c *bond.Context) {
|
||||
opts := GetNotesOptions{}
|
||||
c.Scan(&opts)
|
||||
c.Printf("%v", opts)
|
||||
}),
|
||||
),
|
||||
).Def(
|
||||
"hook",
|
||||
/*bond.Method().Def(
|
||||
methods.Post,*/
|
||||
bond.Func(func(c *bond.Context){
|
||||
fmt.Printf("content-type: %q", c.ContentType())
|
||||
body, err := io.ReadAll(c.R.Body)
|
||||
if err != nil {
|
||||
fmt.Printf("err:%s\n", err)
|
||||
return
|
||||
}
|
||||
values, err := url.ParseQuery(string(body))
|
||||
if err != nil {
|
||||
fmt.Printf("err:%s\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("values: %q", values)
|
||||
}),
|
||||
//),
|
||||
)
|
||||
|
||||
func main() {
|
||||
srv := bond.Server{
|
||||
Addr: ":15080",
|
||||
Handler: root,
|
||||
}
|
||||
err := srv.ListenAndServe()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
|
@ -1,15 +1,25 @@
|
|||
package contents
|
||||
|
||||
import (
|
||||
)
|
||||
|
||||
type CharSet string
|
||||
const (
|
||||
Utf8 = "utf-8"
|
||||
)
|
||||
|
||||
type Type string
|
||||
|
||||
|
||||
|
||||
const (
|
||||
// Using the UTF-8 by default.
|
||||
Unknown Type = "application/octet-stream"
|
||||
Binary = Unknown
|
||||
Binary
|
||||
Plain Type = "text/plain; charset=utf-8"
|
||||
Css Type = "text/css"
|
||||
Html Type = "text/html"
|
||||
Json Type = "application/json"
|
||||
UrlEncoded = "application/x-www-form-urlencoded"
|
||||
)
|
||||
|
||||
func (t Type) CharSet(set CharSet) Type {
|
||||
return t + ";" + Type(set)
|
||||
}
|
||||
|
|
76
statuses/main.go
Normal file
76
statuses/main.go
Normal file
|
@ -0,0 +1,76 @@
|
|||
package statuses
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type Status int
|
||||
const (
|
||||
Continue Status = http.StatusContinue
|
||||
SwitchingProtocols = http.StatusSwitchingProtocols // RFC 9110, 15.2.2
|
||||
Processing = http.StatusProcessing // RFC 2518, 10.1
|
||||
EarlyHints = http.StatusEarlyHints // RFC 8297
|
||||
|
||||
OK = http.StatusOK // RFC 9110, 15.3.1
|
||||
Created = http.StatusCreated // RFC 9110, 15.3.2
|
||||
Accepted = http.StatusAccepted // RFC 9110, 15.3.3
|
||||
NonAuthoritativeInfo = http.StatusNonAuthoritativeInfo // RFC 9110, 15.3.4
|
||||
NoContent = http.StatusNoContent // RFC 9110, 15.3.5
|
||||
ResetContent = http.StatusResetContent // RFC 9110, 15.3.6
|
||||
PartialContent = http.StatusPartialContent // RFC 9110, 15.3.7
|
||||
MultiStatus = http.StatusMultiStatus // RFC 4918, 11.1
|
||||
AlreadyReported = http.StatusAlreadyReported // RFC 5842, 7.1
|
||||
IMUsed = http.StatusIMUsed // RFC 3229, 10.4.1
|
||||
|
||||
MultipleChoices = http.StatusMultipleChoices // RFC 9110, 15.4.1
|
||||
MovedPermanently = http.StatusMovedPermanently // RFC 9110, 15.4.2
|
||||
Found = http.StatusFound // RFC 9110, 15.4.3
|
||||
SeeOther = http.StatusSeeOther // RFC 9110, 15.4.4
|
||||
NotModified = http.StatusNotModified // RFC 9110, 15.4.5
|
||||
UseProxy = http.StatusUseProxy // RFC 9110, 15.4.6
|
||||
|
||||
TemporaryRedirect = http.StatusTemporaryRedirect // RFC 9110, 15.4.8
|
||||
PermanentRedirect = http.StatusPermanentRedirect // RFC 9110, 15.4.9
|
||||
|
||||
BadRequest = http.StatusBadRequest // RFC 9110, 15.5.1
|
||||
Unauthorized = http.StatusUnauthorized // RFC 9110, 15.5.2
|
||||
PaymentRequired = http.StatusPaymentRequired // RFC 9110, 15.5.3
|
||||
Forbidden = http.StatusForbidden // RFC 9110, 15.5.4
|
||||
NotFound = http.StatusNotFound // RFC 9110, 15.5.5
|
||||
MethodNotAllowed = http.StatusMethodNotAllowed // RFC 9110, 15.5.6
|
||||
NotAcceptable = http.StatusNotAcceptable // RFC 9110, 15.5.7
|
||||
ProxyAuthRequired = http.StatusProxyAuthRequired // RFC 9110, 15.5.8
|
||||
RequestTimeout = http.StatusRequestTimeout // RFC 9110, 15.5.9
|
||||
Conflict = http.StatusConflict // RFC 9110, 15.5.10
|
||||
Gone = http.StatusGone // RFC 9110, 15.5.11
|
||||
LengthRequired = http.StatusLengthRequired // RFC 9110, 15.5.12
|
||||
PreconditionFailed = http.StatusPreconditionFailed // RFC 9110, 15.5.13
|
||||
RequestEntityTooLarge = http.StatusRequestEntityTooLarge // RFC 9110, 15.5.14
|
||||
RequestURITooLong = http.StatusRequestURITooLong // RFC 9110, 15.5.15
|
||||
UnsupportedMediaType = http.StatusUnsupportedMediaType // RFC 9110, 15.5.16
|
||||
RequestedRangeNotSatisfiable = http.StatusRequestedRangeNotSatisfiable // RFC 9110, 15.5.17
|
||||
ExpectationFailed = http.StatusExpectationFailed // RFC 9110, 15.5.18
|
||||
Teapot = http.StatusTeapot // RFC 9110, 15.5.19 (Unused)
|
||||
MisdirectedRequest = http.StatusMisdirectedRequest // RFC 9110, 15.5.20
|
||||
UnprocessableEntity = http.StatusUnprocessableEntity // RFC 9110, 15.5.21
|
||||
Locked = http.StatusLocked // RFC 4918, 11.3
|
||||
FailedDependency = http.StatusFailedDependency // RFC 4918, 11.4
|
||||
TooEarly = http.StatusTooEarly // RFC 8470, 5.2.
|
||||
UpgradeRequired = http.StatusUpgradeRequired // RFC 9110, 15.5.22
|
||||
PreconditionRequired = http.StatusPreconditionRequired // RFC 6585, 3
|
||||
TooManyRequests = http.StatusTooManyRequests // RFC 6585, 4
|
||||
RequestHeaderFieldsTooLarge = http.StatusRequestHeaderFieldsTooLarge // RFC 6585, 5
|
||||
UnavailableForLegalReasons = http.StatusUnavailableForLegalReasons // RFC 7725, 3
|
||||
|
||||
InternalServerError = http.StatusInternalServerError // RFC 9110, 15.6.1
|
||||
NotImplemented = http.StatusNotImplemented // RFC 9110, 15.6.2
|
||||
BadGateway = http.StatusBadGateway // RFC 9110, 15.6.3
|
||||
ServiceUnavailable = http.StatusServiceUnavailable // RFC 9110, 15.6.4
|
||||
GatewayTimeout = http.StatusGatewayTimeout // RFC 9110, 15.6.5
|
||||
HTTPVersionNotSupported = http.StatusHTTPVersionNotSupported // RFC 9110, 15.6.6
|
||||
VariantAlsoNegotiates = http.StatusVariantAlsoNegotiates // RFC 2295, 8.1
|
||||
InsufficientStorage = http.StatusInsufficientStorage // RFC 4918, 11.5
|
||||
LoopDetected = http.StatusLoopDetected // RFC 5842, 7.2
|
||||
NotExtended = http.StatusNotExtended // RFC 2774, 7
|
||||
NetworkAuthenticationRequired = http.StatusNetworkAuthenticationRequired // RFC 6585, 6
|
||||
)
|
|
@ -3,5 +3,8 @@ version: 3
|
|||
tasks:
|
||||
btest:
|
||||
cmds:
|
||||
- go build ./cmd/test/
|
||||
- go build ./cmd/test/
|
||||
bhook:
|
||||
cmds:
|
||||
- go build ./cmd/hook/
|
||||
|
||||
|
|
Loading…
Reference in a new issue