forked from ebhomengo/niki
1
0
Fork 0

fix: rebase

This commit is contained in:
alikafy 2024-06-14 12:11:36 +03:30 committed by hossein
parent 620db23582
commit 4185ef594b
118 changed files with 654 additions and 624 deletions

View File

@ -16,7 +16,7 @@ import (
// @Param Request body adminserviceparam.LoginWithPhoneNumberRequest true "Admin login request body"
// @Success 200 {object} adminserviceparam.LoginWithPhoneNumberResponse
// @Failure 400 {string} "Bad request"
// @Router /admins/login-by-phone [post]
// @Router /admins/login-by-phone [post].
func (h Handler) LoginByPhoneNumber(c echo.Context) error {
var req adminserviceparam.LoginWithPhoneNumberRequest

View File

@ -17,7 +17,7 @@ import (
// @Success 200 {object} adminserviceparam.RegisterResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerAdmin
// @Router /admins/register [post]
// @Router /admins/register [post].
func (h Handler) Register(c echo.Context) error {
var req adminserviceparam.RegisterRequest

View File

@ -20,7 +20,7 @@ import (
// @Success 200 {object} param.KindBoxReqAcceptResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerAdmin
// @Router /admin/kindboxreqs/accept-kind-box-req/{id} [patch]
// @Router /admin/kindboxreqs/accept-kind-box-req/{id} [patch].
func (h Handler) Accept(c echo.Context) error {
var req param.KindBoxReqAcceptRequest
if bErr := c.Bind(&req); bErr != nil {

View File

@ -20,7 +20,7 @@ import (
// @Success 200 {object} param.AssignSenderResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerAdmin
// @Router /admin/kindboxreqs/assign-sender-agent/{id} [patch]
// @Router /admin/kindboxreqs/assign-sender-agent/{id} [patch].
func (h Handler) AssignSenderAgent(c echo.Context) error {
var req param.AssignSenderRequest

View File

@ -19,7 +19,7 @@ import (
// @Success 200 {object} param.DeliverKindBoxReqResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerAdmin
// @Router /admin/kindboxreqs/deliver-kind-box-req/{id} [patch]
// @Router /admin/kindboxreqs/deliver-kind-box-req/{id} [patch].
func (h Handler) Deliver(c echo.Context) error {
var req param.DeliverKindBoxReqRequest

View File

@ -17,7 +17,7 @@ import (
// @Success 200 {object} param.KindBoxReqGetAllResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerAdmin
// @Router /admin/kindboxreqs [get]
// @Router /admin/kindboxreqs [get].
func (h Handler) GetAll(c echo.Context) error {
var req param.KindBoxReqGetAllRequest
if bErr := c.Bind(&req); bErr != nil {

View File

@ -20,7 +20,7 @@ import (
// @Success 200 {object} param.KindBoxReqRejectResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerAdmin
// @Router /admin/kindboxreqs/reject-kind-box-req/{id} [patch]
// @Router /admin/kindboxreqs/reject-kind-box-req/{id} [patch].
func (h Handler) Reject(c echo.Context) error {
var req param.KindBoxReqRejectRequest
if bErr := c.Bind(&req); bErr != nil {

View File

@ -10,6 +10,7 @@ func (h Handler) SetRoutes(e *echo.Echo) {
r := e.Group("/admin/kindboxreqs")
r.Use(middleware.Auth(h.authSvc, h.authConfig))
r.POST("", h.AddKindBoxReq, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqAddPermission))
r.PATCH("/accept-kind-box-req/:id", h.Accept, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqAcceptPermission))
r.PATCH("/reject-kind-box-req/:id", h.Reject, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqRejectPermission))
r.PATCH("/deliver-kind-box-req/:id", h.Deliver, middleware.AdminAuthorization(h.adminAuthorizeSvc, entity.AdminKindBoxReqDeliverPermission))

View File

@ -19,7 +19,7 @@ import (
// @Success 201 {object} param.BenefactorAddAddressResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /address/ [post]
// @Router /address/ [post].
func (h Handler) AddAddress(c echo.Context) error {
req := param.BenefactorAddAddressRequest{}
if bErr := c.Bind(&req); bErr != nil {

View File

@ -18,7 +18,7 @@ import (
// @Success 200 {object} param.GetAddressResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /address/{id} [get]
// @Router /address/{id} [get].
func (h Handler) GetAddress(c echo.Context) error {
var req param.GetAddressRequest
if bErr := echo.PathParamsBinder(c).Uint("id", &req.AddressID).BindError(); bErr != nil {

View File

@ -17,7 +17,7 @@ import (
// @Success 200 {object} param.GetAllAddressesResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /address/ [get]
// @Router /address/ [get].
func (h Handler) GetAddresses(c echo.Context) error {
var req param.GetAllAddressesRequest

View File

@ -15,7 +15,7 @@ import (
// @Produce json
// @Success 200 {object} addressparam.GetAllCitiesResponse
// @Failure 400 {string} "Bad request"
// @Router /address/cities [get]
// @Router /address/cities [get].
func (h Handler) GetAllCities(c echo.Context) error {
var req addressparam.GetAllCitiesRequest

View File

@ -15,7 +15,7 @@ import (
// @Produce json
// @Success 200 {object} addressparam.GetAllProvincesResponse
// @Failure 400 {string} "Bad request"
// @Router /address/provinces [get]
// @Router /address/provinces [get].
func (h Handler) GetAllProvinces(c echo.Context) error {
var req addressparam.GetAllProvincesRequest

View File

@ -17,7 +17,7 @@ import (
// @Param Request body benefactoreparam.LoginOrRegisterRequest true "Login or register request details"
// @Success 200 {object} benefactoreparam.LoginOrRegisterResponse
// @Failure 400 {string} "Bad request"
// @Router /benefactor/login-register [post]
// @Router /benefactor/login-register [post].
func (h Handler) loginOrRegister(c echo.Context) error {
var req benefactoreparam.LoginOrRegisterRequest

View File

@ -17,7 +17,7 @@ import (
// @Param Request body benefactoreparam.SendOtpRequest true "Send OTP request details"
// @Success 200 {object} benefactoreparam.SendOtpResponse
// @Failure 400 {string} "Bad request"
// @Router /benefactor/send-otp [post]
// @Router /benefactor/send-otp [post].
func (h Handler) SendOtp(c echo.Context) error {
var req benefactoreparam.SendOtpRequest

View File

@ -18,7 +18,7 @@ import (
// @Success 200 {object} param.KindBoxGetResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /benefactor/kindboxes/{id} [get]
// @Router /benefactor/kindboxes/{id} [get].
func (h Handler) Get(c echo.Context) error {
var req param.KindBoxGetRequest
if bErr := c.Bind(&req); bErr != nil {

View File

@ -18,11 +18,10 @@ import (
// @Success 200 {object} param.KindBoxReqAddResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /benefactor/kindboxreqs/ [post]
// @Router /benefactor/kindboxreqs/ [post].
func (h Handler) Add(c echo.Context) error {
req := param.KindBoxReqAddRequest{}
if err := c.Bind(&req); err != nil {
return c.JSON(http.StatusBadRequest, echo.Map{
"message": errmsg.ErrBadRequest,
})

View File

@ -1,11 +1,12 @@
package benefactorkindboxreqhandler
import (
"net/http"
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
"git.gocasts.ir/ebhomengo/niki/pkg/claim"
httpmsg "git.gocasts.ir/ebhomengo/niki/pkg/http_msg"
"github.com/labstack/echo/v4"
"net/http"
)
// delete godoc
@ -18,11 +19,10 @@ import (
// @Success 200 {object} param.KindBoxReqDeleteResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /benefactor/kindboxreqs/{id} [delete]
// @Router /benefactor/kindboxreqs/{id} [delete].
func (h Handler) Delete(c echo.Context) error {
req := param.KindBoxReqDeleteRequest{}
if bErr := echo.PathParamsBinder(c).Uint("id", &req.KindBoxReqID).BindError(); bErr != nil {
return echo.NewHTTPError(http.StatusBadRequest)
}
claims := claim.GetClaimsFromEchoContext(c)

View File

@ -18,7 +18,7 @@ import (
// @Success 200 {object} param.KindBoxReqGetResponse
// @Failure 400 {string} "Bad request"
// @Security AuthBearerBenefactor
// @Router /benefactor/kindboxreqs/{id} [get]
// @Router /benefactor/kindboxreqs/{id} [get].
func (h Handler) Get(c echo.Context) error {
var req param.KindBoxReqGetRequest
if bErr := echo.PathParamsBinder(c).Uint("id", &req.KindBoxReqID).BindError(); bErr != nil {

View File

@ -2,6 +2,7 @@ package httpserver
import (
"fmt"
config "git.gocasts.ir/ebhomengo/niki/config"
adminhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/admin"
adminkindboxreqhandler "git.gocasts.ir/ebhomengo/niki/delivery/http_server/admin/kind_box_req"
@ -92,11 +93,11 @@ func (s Server) Serve() {
}
func RegisterSwagger(s *echo.Echo, config config.Config) {
//TODO: move this to a better place and make it more dynamic and configurable
// TODO: move this to a better place and make it more dynamic and configurable
docs.SwaggerInfo.Title = "NIKI API"
docs.SwaggerInfo.Description = "This is the API documentation for the NIKI project"
docs.SwaggerInfo.Version = "1.0.0"
//docs.SwaggerInfo.BasePath = "/api/v1"
// docs.SwaggerInfo.BasePath = "/api/v1"
docs.SwaggerInfo.Host = fmt.Sprintf("localhost:%d", config.HTTPServer.Port)
s.GET("/swagger/*any", echoSwagger.WrapHandler)

View File

@ -5,6 +5,7 @@ type AdminPermission string
const (
AdminAdminRegisterPermission = AdminPermission("admin-register")
AdminKindBoxReqAcceptPermission = AdminPermission("kindboxreq-accept")
AdminKindBoxReqAddPermission = AdminPermission("kindboxreq-add")
AdminKindBoxReqRejectPermission = AdminPermission("kindboxreq-reject")
AdminKindBoxReqGetAllPermission = AdminPermission("kindboxreq-getall")
AdminKindBoxReqDeliverPermission = AdminPermission("kindboxreq-deliver")

2
go.mod
View File

@ -16,6 +16,7 @@ require (
github.com/rubenv/sql-migrate v1.6.0
github.com/stretchr/testify v1.9.0
github.com/swaggo/echo-swagger v1.4.1
github.com/swaggo/swag v1.16.3
golang.org/x/crypto v0.23.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1
)
@ -46,7 +47,6 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/swaggo/files/v2 v2.0.0 // indirect
github.com/swaggo/swag v1.16.3 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasttemplate v1.2.2 // indirect
golang.org/x/net v0.25.0 // indirect

View File

@ -1,8 +1,9 @@
package adminkindboxparam
import (
entity "git.gocasts.ir/ebhomengo/niki/entity"
"time"
entity "git.gocasts.ir/ebhomengo/niki/entity"
)
type AddKindBoxRequest struct {

View File

@ -3,9 +3,11 @@ package adminkindboxreqparam
import entity "git.gocasts.ir/ebhomengo/niki/entity"
type KindBoxReqAddRequest struct {
BenefactorID uint
TypeID uint
CountRequested uint
BenefactorID uint `json:"benefactor_id" example:"1"`
TypeID entity.KindBoxType `json:"type_id" example:"1"`
DeliverAddressID uint `json:"deliver_address_id" example:"1"`
DeliverReferDate string `json:"deliver_refer_date" example:"2025-01-02 15:04:05"`
CountRequested uint `json:"count_requested" example:"2"`
}
type KindBoxReqAddResponse struct {

View File

@ -2,6 +2,7 @@ package mysqladmin
import (
"context"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -4,11 +4,12 @@ import (
"context"
"database/sql"
"errors"
"time"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
"git.gocasts.ir/ebhomengo/niki/repository/mysql"
"time"
)
func (d DB) IsExistBenefactorByPhoneNumber(ctx context.Context, phoneNumber string) (bool, entity.Benefactor, error) {
@ -56,7 +57,6 @@ func (d *DB) IsExistBenefactorByID(ctx context.Context, id uint) (bool, error) {
}
func scanBenefactor(scanner mysql.Scanner) (entity.Benefactor, error) {
var createdAt, updatedAt time.Time
var benefactor entity.Benefactor
// TODO - use db model and mapper between entity and db model OR use this approach

View File

@ -2,6 +2,7 @@ package mysqlkindboxreq
import (
"context"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -2,6 +2,7 @@ package mysqlkindboxreq
import (
"context"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -2,6 +2,7 @@ package mysqlkindboxreq
import (
"context"
entity "git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -2,9 +2,10 @@ package mysqlkindboxreq
import (
"context"
"time"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
"time"
)
func (d DB) DeleteKindBoxReqByID(ctx context.Context, kindBoxReqID uint) error {

View File

@ -3,6 +3,7 @@ package mysqlkindboxreq
import (
"context"
"database/sql"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -4,6 +4,7 @@ import (
"context"
"database/sql"
"errors"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -2,6 +2,7 @@ package mysqlkindboxreq
import (
"context"
"git.gocasts.ir/ebhomengo/niki/entity"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -19,6 +19,8 @@ type Repository interface {
GetAdminByPhoneNumber(ctx context.Context, phoneNumber string) (entity.Admin, error)
GetAdminByID(ctx context.Context, adminID uint) (entity.Admin, error)
GetAllAgent(ctx context.Context) ([]entity.Admin, error)
IsExistBenefactorByID(ctx context.Context, id uint) (bool, error)
GetAddressByID(ctx context.Context, id uint) (*entity.Address, error)
}
type Service struct {

View File

@ -17,6 +17,7 @@ type Repository interface {
DeliverKindBoxReq(ctx context.Context, kindBoxReqID uint) error
GetAllKindBoxReq(ctx context.Context, filter params.FilterRequest, pagination params.PaginationRequest, sort params.SortRequest) ([]entity.KindBoxReq, uint, error)
GetAwaitingDeliveryByAgent(ctx context.Context, kindBoxReqID uint, agentID uint) (entity.KindBoxReq, error)
AddKindBoxReq(ctx context.Context, kindBoxReq entity.KindBoxReq) (entity.KindBoxReq, error)
}
type KindBoxSvc interface {

View File

@ -2,6 +2,7 @@ package benefactoraddressservice
import (
"context"
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
)

View File

@ -2,6 +2,7 @@ package benefactorkindboxreqservice
import (
"context"
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
)

View File

@ -6,7 +6,6 @@ import (
"git.gocasts.ir/ebhomengo/niki/repository/migrator"
"git.gocasts.ir/ebhomengo/niki/repository/mysql"
//nolint
_ "github.com/go-sql-driver/mysql"
)

View File

@ -72,7 +72,7 @@ func SendOTP(t *testing.T) benefactoreparam.SendOtpResponse {
return resp
}
//nolint
// nolint
func CreateBenefactorWithSvc(t *testing.T, req benefactoreparam.LoginOrRegisterRequest) (benefactoreparam.LoginOrRegisterResponse, func()) {
t.Helper()
ctx := context.Background()
@ -88,7 +88,7 @@ func CreateBenefactorWithSvc(t *testing.T, req benefactoreparam.LoginOrRegisterR
}
}
//nolint
// nolint
func CreateAddressWithSvc(t *testing.T, req addressparam.BenefactorAddAddressRequest) (addressparam.BenefactorAddAddressResponse, func()) {
t.Helper()
ctx := context.Background()

View File

@ -52,7 +52,7 @@ func NewMockRepository(hasErr bool) *MockRepository {
}
}
//nolint
// nolint
func (m *MockRepository) AddKindBoxReq(ctx context.Context, kindBoxReq entity.KindBoxReq) (entity.KindBoxReq, error) {
if m.hasErr {
return entity.KindBoxReq{}, fmt.Errorf(RepoErr)

View File

@ -11,7 +11,7 @@ import (
"github.com/stretchr/testify/assert"
)
//nolint
// nolint
func CreateBenefactor(t *testing.T, db *mysql.DB) (*entity.Benefactor, func()) {
t.Helper()
benefactor := &entity.Benefactor{
@ -42,7 +42,7 @@ func CreateBenefactor(t *testing.T, db *mysql.DB) (*entity.Benefactor, func()) {
}
}
//nolint
// nolint
func CreateAddress(t *testing.T, db *mysql.DB, benfactorID uint) (*entity.Address, func()) {
t.Helper()
address := &entity.Address{

View File

@ -25,11 +25,17 @@ type Repository interface {
type AdminSvc interface {
AdminExistByID(ctx context.Context, req param.AdminExistByIDRequest) (param.AdminExistByIDResponse, error)
BenefactorExistByID(ctx context.Context, request param.BenefactorExistByIDRequest) (param.BenefactorExistByIDResponse, error)
}
type AddressSvc interface {
AddressExistByID(ctx context.Context, request param.GetAddressByIDRequest) (param.GetAddressByIDResponse, error)
}
type Validator struct {
repo Repository
adminSvc AdminSvc
addressSvc AddressSvc
}
func New(repo Repository, adminSvc AdminSvc) Validator {

View File

@ -2,6 +2,7 @@ package benefactorkindboxreqvalidator
import (
"errors"
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/kind_box_req"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"

View File

@ -3,13 +3,14 @@ package benefactorkindboxreqvalidator
import (
"context"
"fmt"
"time"
"git.gocasts.ir/ebhomengo/niki/entity"
refertimeparam "git.gocasts.ir/ebhomengo/niki/param/admin/refer_time"
addressparam "git.gocasts.ir/ebhomengo/niki/param/benefactor/address"
param "git.gocasts.ir/ebhomengo/niki/param/benefactor/benefactore"
errmsg "git.gocasts.ir/ebhomengo/niki/pkg/err_msg"
validation "github.com/go-ozzo/ozzo-validation/v4"
"time"
)
const (

View File

@ -173,7 +173,7 @@ type ISO3166Entry struct {
Numeric string
}
//ISO3166List based on https://www.iso.org/obp/ui/#search/code/ Code Type "Officially Assigned Codes"
// ISO3166List based on https://www.iso.org/obp/ui/#search/code/ Code Type "Officially Assigned Codes"
var ISO3166List = []ISO3166Entry{
{"Afghanistan", "Afghanistan (l')", "AF", "AFG", "004"},
{"Albania", "Albanie (l')", "AL", "ALB", "008"},
@ -463,7 +463,7 @@ type ISO693Entry struct {
English string
}
//ISO693List based on http://data.okfn.org/data/core/language-codes/r/language-codes-3b2.json
// ISO693List based on http://data.okfn.org/data/core/language-codes/r/language-codes-3b2.json
var ISO693List = []ISO693Entry{
{Alpha3bCode: "aar", Alpha2Code: "aa", English: "Afar"},
{Alpha3bCode: "abk", Alpha2Code: "ab", English: "Abkhazian"},

View File

@ -37,14 +37,19 @@ const RF3339WithoutZone = "2006-01-02T15:04:05"
// SetFieldsRequiredByDefault causes validation to fail when struct fields
// do not include validations or are not explicitly marked as exempt (using `valid:"-"` or `valid:"email,optional"`).
// This struct definition will fail govalidator.ValidateStruct() (and the field values do not matter):
//
// type exampleStruct struct {
// Name string ``
// Email string `valid:"email"`
//
// This, however, will only fail when Email is empty or an invalid email address:
//
// type exampleStruct2 struct {
// Name string `valid:"-"`
// Email string `valid:"email"`
//
// Lastly, this will only fail when Email is an invalid email address but not when it's empty:
//
// type exampleStruct2 struct {
// Name string `valid:"-"`
// Email string `valid:"email,optional"`
@ -54,8 +59,10 @@ func SetFieldsRequiredByDefault(value bool) {
// SetNilPtrAllowedByRequired causes validation to pass for nil ptrs when a field is set to required.
// The validation will still reject ptr fields in their zero value state. Example with this enabled:
//
// type exampleStruct struct {
// Name *string `valid:"required"`
//
// With `Name` set to "", this will be considered invalid input and will cause a validation error.
// With `Name` set to nil, this will be considered valid by validation.
// By default this is disabled.
@ -154,8 +161,8 @@ func IsAlpha(str string) bool {
return rxAlpha.MatchString(str)
}
//IsUTFLetter check if the string contains only unicode letter characters.
//Similar to IsAlpha but for all languages. Empty string is valid.
// IsUTFLetter check if the string contains only unicode letter characters.
// Similar to IsAlpha but for all languages. Empty string is valid.
func IsUTFLetter(str string) bool {
if IsNull(str) {
return true

View File

@ -3,13 +3,12 @@ package gofakeit
import (
"bytes"
"fmt"
"strconv"
"time"
"math/rand"
"reflect"
"strconv"
"strings"
"text/template"
"time"
)
// TemplateOptions defines values needed for template document generation

View File

@ -18,6 +18,7 @@
// tag is deprecated and thus should not be used.
// Go versions prior to 1.4 are disabled because they use a different layout
// for interfaces which make the implementation of unsafeReflectValue more complex.
//go:build !js && !appengine && !safe && !disableunsafe && go1.4
// +build !js,!appengine,!safe,!disableunsafe,go1.4
package spew

View File

@ -254,14 +254,14 @@ pointer addresses used to indirect to the final value. It provides the
following features over the built-in printing facilities provided by the fmt
package:
* Pointers are dereferenced and followed
* Circular data structures are detected and handled properly
* Custom Stringer/error interfaces are optionally invoked, including
- Pointers are dereferenced and followed
- Circular data structures are detected and handled properly
- Custom Stringer/error interfaces are optionally invoked, including
on unexported types
* Custom types which only implement the Stringer/error interfaces via
- Custom types which only implement the Stringer/error interfaces via
a pointer receiver are optionally invoked when passing non-pointer
variables
* Byte arrays and slices are dumped like the hexdump -C command which
- Byte arrays and slices are dumped like the hexdump -C command which
includes offsets, byte values in hex, and ASCII output
The configuration options are controlled by modifying the public members

View File

@ -488,14 +488,14 @@ pointer addresses used to indirect to the final value. It provides the
following features over the built-in printing facilities provided by the fmt
package:
* Pointers are dereferenced and followed
* Circular data structures are detected and handled properly
* Custom Stringer/error interfaces are optionally invoked, including
- Pointers are dereferenced and followed
- Circular data structures are detected and handled properly
- Custom Stringer/error interfaces are optionally invoked, including
on unexported types
* Custom types which only implement the Stringer/error interfaces via
- Custom types which only implement the Stringer/error interfaces via
a pointer receiver are optionally invoked when passing non-pointer
variables
* Byte arrays and slices are dumped like the hexdump -C command which
- Byte arrays and slices are dumped like the hexdump -C command which
includes offsets, byte values in hex, and ASCII output
The configuration options are controlled by an exported package global,

View File

@ -3,7 +3,6 @@ package structs
import (
"fmt"
"reflect"
)

View File

@ -347,8 +347,9 @@ const (
// 4) simpleLetterEqualFold, no specials, no non-letters.
//
// The letters S and K are special because they map to 3 runes, not just 2:
// * S maps to s and to U+017F 'ſ' Latin small letter long s
// * k maps to K and to U+212A '' Kelvin sign
// - S maps to s and to U+017F 'ſ' Latin small letter long s
// - k maps to K and to U+212A '' Kelvin sign
//
// See http://play.golang.org/p/tTxjOc0OGo
//
// The returned function is specialized for matching against s and

View File

@ -64,9 +64,9 @@ func JSONToYAML(j []byte) ([]byte, error) {
// this method should be a no-op.
//
// Things YAML can do that are not supported by JSON:
// * In YAML you can have binary and null keys in your maps. These are invalid
// - In YAML you can have binary and null keys in your maps. These are invalid
// in JSON. (int and float keys are converted to strings.)
// * Binary data in YAML with the !!binary tag is not supported. If you want to
// - Binary data in YAML with the !!binary tag is not supported. If you want to
// use binary data with this library, encode the data as base64 as usual but do
// not use the !!binary tag in your YAML. This will ensure the original base64
// encoded data makes it all the way through to the JSON.

View File

@ -26,7 +26,6 @@ import (
//
// dialect := gorp.MySQLDialect{"InnoDB", "UTF8"}
// dbmap := &gorp.DbMap{Db: db, Dialect: dialect}
//
type DbMap struct {
ctx context.Context

View File

@ -86,10 +86,9 @@ func SelectNullStr(e SqlExecutor, query string, args ...interface{}) (sql.NullSt
// SelectOne executes the given query (which should be a SELECT statement)
// and binds the result to holder, which must be a pointer.
//
// If no row is found, an error (sql.ErrNoRows specifically) will be returned
// # If no row is found, an error (sql.ErrNoRows specifically) will be returned
//
// If more than one row is found, an error will be returned.
//
func SelectOne(m *DbMap, e SqlExecutor, holder interface{}, query string, args ...interface{}) error {
t := reflect.TypeOf(holder)
if t.Kind() == reflect.Ptr {

View File

@ -47,7 +47,6 @@ func (t *TableMap) ResetSql() {
// Automatically calls ResetSql() to ensure SQL statements are regenerated.
//
// Panics if isAutoIncr is true, and fieldNames length != 1
//
func (t *TableMap) SetKeys(isAutoIncr bool, fieldNames ...string) *TableMap {
if isAutoIncr && len(fieldNames) != 1 {
panic(fmt.Sprintf(
@ -73,7 +72,6 @@ func (t *TableMap) SetKeys(isAutoIncr bool, fieldNames ...string) *TableMap {
// Automatically calls ResetSql() to ensure SQL statements are regenerated.
//
// Panics if fieldNames length < 2.
//
func (t *TableMap) SetUniqueTogether(fieldNames ...string) *TableMap {
if len(fieldNames) < 2 {
panic(fmt.Sprintf(
@ -135,7 +133,6 @@ func (t *TableMap) IdxMap(field string) *IndexMap {
// Function will panic if one of the given for index columns does not exists
//
// Automatically calls ResetSql() to ensure SQL statements are regenerated.
//
func (t *TableMap) AddIndex(name string, idxtype string, columns []string) *IndexMap {
// check if we have a index with this name already
for _, idx := range t.indexes {

View File

@ -19,6 +19,7 @@ type DateRule struct {
// Date returns a validation rule that checks if a string value is in a format that can be parsed into a date.
// The format of the date should be specified as the layout parameter which accepts the same value as that for time.Parse.
// For example,
//
// validation.Date(time.ANSIC)
// validation.Date("02 Jan 06 15:04 MST")
// validation.Date("2006-01-02")

View File

@ -24,7 +24,6 @@ func (r *multipleOfRule) Error(message string) *multipleOfRule {
return r
}
func (r *multipleOfRule) Validate(value interface{}) error {
rv := reflect.ValueOf(r.threshold)

View File

@ -41,6 +41,7 @@ type (
// Use Key() to specify map keys that need to be validated. Each Key() call specifies a single key which can
// be associated with multiple rules.
// For example,
//
// validation.Map(
// validation.Key("Name", validation.Required),
// validation.Key("Value", validation.Required, validation.Length(5, 10)),

View File

@ -53,7 +53,6 @@ var (
// } else {
// log.Fatal("not a RSA public key")
// }
//
func RegisterServerPubKey(name string, pubKey *rsa.PublicKey) {
serverPubKeyLock.Lock()
if serverPubKeyRegistry == nil {

View File

@ -6,6 +6,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at http://mozilla.org/MPL/2.0/.
//go:build linux || darwin || dragonfly || freebsd || netbsd || openbsd || solaris || illumos
// +build linux darwin dragonfly freebsd netbsd openbsd solaris illumos
package mysql

View File

@ -33,7 +33,6 @@ var (
// err := db.Exec("LOAD DATA LOCAL INFILE '" + filePath + "' INTO TABLE foo")
// if err != nil {
// ...
//
func RegisterLocalFile(filePath string) {
fileRegisterLock.Lock()
// lazy map init
@ -66,7 +65,6 @@ func DeregisterLocalFile(filePath string) {
// err := db.Exec("LOAD DATA LOCAL INFILE 'Reader::data' INTO TABLE foo")
// if err != nil {
// ...
//
func RegisterReaderHandler(name string, handler func() io.Reader) {
readerRegisterLock.Lock()
// lazy map init

View File

@ -54,7 +54,6 @@ var (
// Certificates: clientCert,
// })
// db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom")
//
func RegisterTLSConfig(key string, config *tls.Config) error {
if _, isBool := readBool(key); isBool || strings.ToLower(key) == "skip-verify" || strings.ToLower(key) == "preferred" {
return fmt.Errorf("key '%s' is reserved", key)

View File

@ -1,9 +1,8 @@
package jwt
import (
"errors"
"crypto/ed25519"
"errors"
)
var (

View File

@ -3,7 +3,6 @@ package jwt
import (
"encoding/json"
"errors"
// "fmt"
)
// Claims type that uses the map[string]interface{} for JSON decoding

View File

@ -1,3 +1,4 @@
//go:build go1.4
// +build go1.4
package jwt

View File

@ -1,11 +1,10 @@
package jwt
import (
"errors"
"crypto"
"crypto/ed25519"
"crypto/rand"
"errors"
)
var (

View File

@ -4,7 +4,6 @@ import (
"encoding/json"
"errors"
"time"
// "fmt"
)
// MapClaims is a claims type that uses the map[string]interface{} for JSON decoding.

View File

@ -1,11 +1,10 @@
package jwt
import (
"errors"
"crypto"
"crypto/ed25519"
"crypto/rand"
"errors"
)
var (

View File

@ -5,20 +5,20 @@ import (
"time"
)
//MessageCountInbox ...
// MessageCountInbox ...
type MessageCountInbox struct {
Startdate int `json:"startdate"`
Enddate int `json:"enddate"`
Sumcount int `json:"sumcount"`
}
//MessageCountInboxResult ...
// MessageCountInboxResult ...
type MessageCountInboxResult struct {
*Return `json:"return"`
Entries []MessageCountInbox `json:"entries"`
}
//CountInbox ...
// CountInbox ...
func (message *MessageService) CountInbox(linenumber string, startdate time.Time, endate time.Time, isread bool) (MessageCountInbox, error) {
v := url.Values{}
@ -33,13 +33,13 @@ func (message *MessageService) CountInbox(linenumber string, startdate time.Time
return message.CreateCountInbox(v)
}
//CreateCountInbox ...
// CreateCountInbox ...
func (message *MessageService) CreateCountInbox(v url.Values) (MessageCountInbox, error) {
u := message.client.EndPoint("sms", "countinbox")
m := new(MessageCountInboxResult)
err := message.client.Execute(u.String(), v, m)
if m.Entries==nil{
return MessageCountInbox{},err
if m.Entries == nil {
return MessageCountInbox{}, err
}
return m.Entries[0], err
}

View File

@ -5,19 +5,19 @@ import (
"strconv"
)
//MessageCountPostalCode ...
// MessageCountPostalCode ...
type MessageCountPostalCode struct {
Section string `json:"section"`
Value int `json:"value"`
}
//MessageCountPostalCodeResult ...
// MessageCountPostalCodeResult ...
type MessageCountPostalCodeResult struct {
*Return `json:"return"`
Entries []MessageCountPostalCode `json:"entries"`
}
//CountPostalCode ...
// CountPostalCode ...
func (message *MessageService) CountPostalCode(postalcode int64) ([]MessageCountPostalCode, error) {
u := message.client.EndPoint("sms", "countpostalcode")
m := new(MessageCountPostalCodeResult)

View File

@ -5,20 +5,20 @@ import (
"time"
)
//MessageCountOutbox ...
// MessageCountOutbox ...
type MessageCountOutbox struct {
*MessageCountInbox
Sumpart int `json:"sumpart"`
Cost int `json:"cost"`
}
//MessageCountOutboxResult ...
// MessageCountOutboxResult ...
type MessageCountOutboxResult struct {
*Return `json:"return"`
Entries []MessageCountOutbox `json:"entries"`
}
//CountOutbox ...
// CountOutbox ...
func (message *MessageService) CountOutbox(startdate time.Time, endate time.Time, status MessageStatusType) (MessageCountOutbox, error) {
v := url.Values{}
v.Set("startdate", ToUnix(startdate))
@ -29,13 +29,13 @@ func (message *MessageService) CountOutbox(startdate time.Time, endate time.Time
return message.CreateCountOutbox(v)
}
//CreateCountOutbox ...
// CreateCountOutbox ...
func (message *MessageService) CreateCountOutbox(v url.Values) (MessageCountOutbox, error) {
u := message.client.EndPoint("sms", "countoutbox")
m := new(MessageCountOutboxResult)
err := message.client.Execute(u.String(), v, m)
if m.Entries==nil{
return MessageCountOutbox{},err
if m.Entries == nil {
return MessageCountOutbox{}, err
}
return m.Entries[0], err
}

View File

@ -5,7 +5,7 @@ import (
"strconv"
)
//LatestOutbox ...
// LatestOutbox ...
func (message *MessageService) LatestOutbox(sender string, pagesize int) ([]Message, error) {
v := url.Values{}
v.Set("sender", sender)
@ -13,7 +13,7 @@ func (message *MessageService) LatestOutbox(sender string, pagesize int) ([]Mess
return message.CreateLatestOutbox(v)
}
//CreateLatestOutbox ...
// CreateLatestOutbox ...
func (message *MessageService) CreateLatestOutbox(v url.Values) ([]Message, error) {
u := message.client.EndPoint("sms", "latestoutbox")
vc := url.Values{}

View File

@ -5,7 +5,7 @@ import (
"time"
)
//SelectOutbox ...
// SelectOutbox ...
func (message *MessageService) SelectOutbox(startdate time.Time, endate time.Time, sender string) ([]Message, error) {
v := url.Values{}
@ -23,7 +23,7 @@ func (message *MessageService) SelectOutbox(startdate time.Time, endate time.Tim
return message.CreateSelectOutbox(v)
}
//CreateSelectOutbox ...
// CreateSelectOutbox ...
func (message *MessageService) CreateSelectOutbox(v url.Values) ([]Message, error) {
u := message.client.EndPoint("sms", "selectoutbox")
m := new(MessageResult)

View File

@ -6,7 +6,7 @@ import (
"time"
)
//SendPostalCode ...
// SendPostalCode ...
func (m *MessageService) SendPostalCode(postalcode int64, sender string, message string, mcistartindex int, mcicount int, mtnstartindex int, mtncount int, date time.Time) ([]Message, error) {
v := url.Values{}
v.Set("postalcode", strconv.FormatInt(postalcode, 10))
@ -20,7 +20,7 @@ func (m *MessageService) SendPostalCode(postalcode int64, sender string, message
return m.CreateSendPostalCode(v)
}
//CreateSendPostalCode ...
// CreateSendPostalCode ...
func (m *MessageService) CreateSendPostalCode(v url.Values) ([]Message, error) {
u := m.client.EndPoint("sms", "sendbypostalcode")
res := new(MessageResult)

View File

@ -5,26 +5,26 @@ import (
"strconv"
)
//MessageStatusLocal ...
// MessageStatusLocal ...
type MessageStatusLocal struct {
*MessageStatus
LocalID string `json:"localid"`
}
//MessageStatusLocalResult ...
// MessageStatusLocalResult ...
type MessageStatusLocalResult struct {
*Return `json:"return"`
Entries []MessageStatusLocal `json:"entries"`
}
//StatusLocal ...
// StatusLocal ...
func (message *MessageService) StatusLocal(localid int64) (MessageStatusLocal, error) {
u := message.client.EndPoint("sms", "statuslocalmessageid")
m := new(MessageStatusLocalResult)
v := url.Values{}
v.Set("localid", strconv.FormatInt(localid, 10))
err := message.client.Execute(u.String(), v, m)
if err!=nil{
if err != nil {
return MessageStatusLocal{}, err
}
return m.Entries[0], err

View File

@ -10,23 +10,23 @@ import (
"time"
)
//ToString ...
// ToString ...
func ToString(i interface{}) string {
return strings.Trim(strings.Replace(fmt.Sprint(i), " ", ",", -1), "[]")
}
//ToJson ...
// ToJson ...
func ToJson(i interface{}) string {
_json, _ := json.Marshal(i)
return string(_json)
}
//ToUnix ...
// ToUnix ...
func ToUnix(t time.Time) string {
return strconv.FormatInt(t.Unix(), 10)
}
//structToUrlValues ...
// structToUrlValues ...
func structToURLValues(i interface{}) url.Values {
v := url.Values{}
if reflect.ValueOf(i).IsNil() {

View File

@ -5,9 +5,10 @@ package maps
import (
"fmt"
"github.com/mitchellh/copystructure"
"reflect"
"strings"
"github.com/mitchellh/copystructure"
)
// Flatten takes a map[string]interface{} and traverses it and flattens

View File

@ -6,7 +6,6 @@ import (
"errors"
"github.com/fatih/structs"
"github.com/knadh/koanf/maps"
)

View File

@ -6,10 +6,11 @@ package echojwt
import (
"errors"
"fmt"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"net/textproto"
"strings"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
const (

View File

@ -4,8 +4,9 @@
package echo
import (
"github.com/labstack/gommon/log"
"io"
"github.com/labstack/gommon/log"
)
// Logger defines the logging interface.

View File

@ -6,9 +6,10 @@ package middleware
import (
"errors"
"fmt"
"github.com/labstack/echo/v4"
"net/textproto"
"strings"
"github.com/labstack/echo/v4"
)
const (

View File

@ -9,10 +9,11 @@ package middleware
import (
"errors"
"fmt"
"github.com/golang-jwt/jwt"
"github.com/labstack/echo/v4"
"net/http"
"reflect"
"github.com/golang-jwt/jwt"
"github.com/labstack/echo/v4"
)
// JWTConfig defines the config for JWT middleware.

View File

@ -5,8 +5,9 @@ package middleware
import (
"errors"
"github.com/labstack/echo/v4"
"net/http"
"github.com/labstack/echo/v4"
)
// KeyAuthConfig defines the config for KeyAuth middleware.

View File

@ -5,10 +5,11 @@ package middleware
import (
"context"
"github.com/labstack/echo/v4"
"net/http"
"sync"
"time"
"github.com/labstack/echo/v4"
)
// ---------------------------------------------------------------------------------------------------------------

View File

@ -1,3 +1,4 @@
//go:build !appengine
// +build !appengine
package log

View File

@ -13,10 +13,9 @@ import (
"sync/atomic"
"time"
"github.com/labstack/gommon/color"
"github.com/mattn/go-isatty"
"github.com/valyala/fasttemplate"
"github.com/labstack/gommon/color"
)
type (

View File

@ -1,3 +1,4 @@
//go:build appengine
// +build appengine
package log

View File

@ -2,8 +2,8 @@
// easyjson_nounsafe nor appengine build tag is set. See README notes
// for more details.
//+build !easyjson_nounsafe
//+build !appengine
//go:build !easyjson_nounsafe && !appengine
// +build !easyjson_nounsafe,!appengine
package jlexer

View File

@ -42,6 +42,7 @@ func IsTerminal(fd uintptr) bool {
// Check pipe name is used for cygwin/msys2 pty.
// Cygwin/MSYS2 PTY has a name like:
//
// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master
func isCygwinPipeName(name string) bool {
token := strings.Split(name, "-")

View File

@ -25,13 +25,12 @@ const tagKey = "copy"
//
// The available tag values are:
//
// * "ignore" - The field will be ignored, effectively resulting in it being
// - "ignore" - The field will be ignored, effectively resulting in it being
// assigned the zero value in the copy.
//
// * "shallow" - The field will be be shallow copied. This means that references
// - "shallow" - The field will be be shallow copied. This means that references
// values such as pointers, maps, slices, etc. will be directly assigned
// versus deep copied.
//
func Copy(v interface{}) (interface{}, error) {
return Config{}.Copy(v)
}

View File

@ -9,7 +9,7 @@
//
// The simplest function to start with is Decode.
//
// Field Tags
// # Field Tags
//
// When decoding to a struct, mapstructure will use the field name by
// default to perform the mapping. For example, if a struct has a field
@ -24,7 +24,7 @@
// The default struct tag that mapstructure looks for is "mapstructure"
// but you can customize it using DecoderConfig.
//
// Renaming Fields
// # Renaming Fields
//
// To rename the key that mapstructure looks for, use the "mapstructure"
// tag and set a value directly. For example, to change the "username" example
@ -34,7 +34,7 @@
// Username string `mapstructure:"user"`
// }
//
// Embedded Structs and Squashing
// # Embedded Structs and Squashing
//
// Embedded structs are treated as if they're another field with that name.
// By default, the two structs below are equivalent when decoding with
@ -86,7 +86,7 @@
// DecoderConfig has a field that changes the behavior of mapstructure
// to always squash embedded structs.
//
// Remainder Values
// # Remainder Values
//
// If there are any unmapped keys in the source value, mapstructure by
// default will silently ignore them. You can error by setting ErrorUnused
@ -111,7 +111,7 @@
// "address": "123 Maple St.",
// }
//
// Omit Empty Values
// # Omit Empty Values
//
// When decoding from a struct to any other value, you may use the
// ",omitempty" suffix on your tag to omit that value if it equates to
@ -126,7 +126,7 @@
// Age int `mapstructure:",omitempty"`
// }
//
// Unexported fields
// # Unexported fields
//
// Since unexported (private) struct fields cannot be set outside the package
// where they are defined, the decoder will simply skip them.
@ -152,7 +152,7 @@
// Public: "I made it through!"
// }
//
// Other Configuration
// # Other Configuration
//
// mapstructure is highly configurable. See the DecoderConfig struct
// for other features and options that are supported.

View File

@ -81,7 +81,6 @@ type PointerValueWalker interface {
//
// - Struct: skips all fields from being walked
// - StructField: skips walking the struct value
//
var SkipEntry = errors.New("skip this entry")
// Walk takes an arbitrary value and an interface and traverses the

View File

@ -199,9 +199,12 @@ func (m *SequenceMatcher) isBJunk(s string) bool {
// If IsJunk is not defined:
//
// Return (i,j,k) such that a[i:i+k] is equal to b[j:j+k], where
//
// alo <= i <= i+k <= ahi
// blo <= j <= j+k <= bhi
//
// and for all (i',j',k') meeting those conditions,
//
// k >= k'
// i <= i'
// and if i == i', j <= j'

View File

@ -13,7 +13,6 @@ import (
"github.com/cespare/xxhash/v2"
"github.com/dgryski/go-rendezvous" //nolint
"github.com/redis/go-redis/v9/internal"
"github.com/redis/go-redis/v9/internal/hashtag"
"github.com/redis/go-redis/v9/internal/pool"

View File

@ -18,7 +18,6 @@ import (
"time"
"github.com/go-gorp/gorp/v3"
"github.com/rubenv/sql-migrate/sqlparse"
)

View File

@ -3,6 +3,7 @@ package swag
import (
"errors"
"fmt"
"github.com/go-openapi/spec"
)

View File

@ -65,9 +65,9 @@ func ExecuteFunc(template, startTag, endTag string, w io.Writer, f TagFunc) (int
// values from the map m and writes the result to the given writer w.
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// Returns the number of bytes written to w.
//
@ -81,9 +81,9 @@ func Execute(template, startTag, endTag string, w io.Writer, m map[string]interf
// This can be used as a drop-in replacement for strings.Replacer
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// Returns the number of bytes written to w.
//
@ -134,9 +134,9 @@ var byteBufferPool bytebufferpool.Pool
// values from the map m and returns the result.
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// This function is optimized for constantly changing templates.
// Use Template.ExecuteString for frozen templates.
@ -148,9 +148,9 @@ func ExecuteString(template, startTag, endTag string, m map[string]interface{})
// This can be used as a drop-in replacement for strings.Replacer
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// This function is optimized for constantly changing templates.
// Use Template.ExecuteStringStd for frozen templates.
@ -304,9 +304,9 @@ func (t *Template) ExecuteFunc(w io.Writer, f TagFunc) (int64, error) {
// values from the map m and writes the result to the given writer w.
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// Returns the number of bytes written to w.
func (t *Template) Execute(w io.Writer, m map[string]interface{}) (int64, error) {
@ -317,9 +317,9 @@ func (t *Template) Execute(w io.Writer, m map[string]interface{}) (int64, error)
// This can be used as a drop-in replacement for strings.Replacer
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// Returns the number of bytes written to w.
func (t *Template) ExecuteStd(w io.Writer, m map[string]interface{}) (int64, error) {
@ -365,9 +365,9 @@ func (t *Template) ExecuteFuncStringWithErr(f TagFunc) (string, error) {
// values from the map m and returns the result.
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// This function is optimized for frozen templates.
// Use ExecuteString for constantly changing templates.
@ -379,9 +379,9 @@ func (t *Template) ExecuteString(m map[string]interface{}) string {
// This can be used as a drop-in replacement for strings.Replacer
//
// Substitution map m may contain values with the following types:
// * []byte - the fastest value type
// * string - convenient value type
// * TagFunc - flexible value type
// - []byte - the fastest value type
// - string - convenient value type
// - TagFunc - flexible value type
//
// This function is optimized for frozen templates.
// Use ExecuteStringStd for constantly changing templates.

View File

@ -1,3 +1,4 @@
//go:build !appengine
// +build !appengine
package fasttemplate

View File

@ -127,6 +127,7 @@ uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);
*/
import "C"
import (
"syscall"
"unsafe"

Some files were not shown because too many files have changed in this diff Show More