packs2
DEV 3 years ago
parent e5a5f7456a
commit 3d9cae23e7

@ -0,0 +1,26 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name token_builder.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens

@ -0,0 +1,64 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name token_builder_options.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens
import "activething.com/go/gogo/core/opts"
type (
BuilderOptions struct {
Sep byte
Wildcard byte
Relative byte
MatchIni byte
MatchEnd byte
TokenMinLen int
TokenMaxLen int
TopicMinLen int
TopicMaxLen int
TopicMinTokens int
TopicMaxTokens int
}
)
func NewBuilderOptions (options ... opts.OptionFnc[BuilderOptions]) *BuilderOptions {
return opts.Apply(&BuilderOptions{
Sep : tokenSep,
Wildcard : tokenWildcard,
Relative : tokenRelative,
MatchIni : tokenMatchIni,
MatchEnd : tokenMatchEnd,
TokenMinLen: tokenMinLen,
TokenMaxLen: tokenMaxLen,
TopicMinLen: topicMinLen,
TopicMaxLen: topicMaxLen,
TopicMinTokens: topicMinTokens,
TopicMaxTokens: topicMaxTokens,
}, options ...)
}

@ -0,0 +1,72 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name gogo.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens
import "activething.com/go/gogo/core/errs"
const (
topicMinLen int = 1
topicMaxLen int = 255
topicMaxTokens int = 32
topicMinTokens int = 1
tokenMinLen int = 1
tokenMaxLen int = 256
//
// Token chars
//
tokenSep byte = '.'
tokenWildcard byte = '*'
tokenRelative byte = '+'
tokenMatchIni byte = '{'
tokenMatchEnd byte = '}'
)
var (
G = struct {
ErrInvalidTopic errs.ErrCode
ErrInvalidTopicLen errs.ErrCode
ErrInvalidToken errs.ErrCode
ErrInvalidTokenLen errs.ErrCode
}{
ErrInvalidTopic : errs.ErrCode ("sapis:tokens.invalid-topic"),
ErrInvalidTopicLen : errs.ErrCode ("sapis:tokens.invalid-topic-len"),
ErrInvalidToken : errs.ErrCode ("sapis:tokens.invalid-token"),
ErrInvalidTokenLen : errs.ErrCode ("sapis:tokens.invalid-token-len"),
}
)

@ -0,0 +1,68 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name token_invalid.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens
type (
TokenInvalid struct {
/*embedded*/ error
source []byte
}
)
func NewTokenInvalid(err error, src []byte) *TokenInvalid {
return &TokenInvalid{
error: err,
source: src,
}
}
func (_ TokenInvalid) Kind() TokenKind {
return TokenKindInvalid }
func (_ TokenInvalid) Match(_ []byte) bool {
return false }
func (t TokenInvalid) Source() []byte {
return t.source }
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
I HAVE NO DESIRE TO WALK ON WATER," SAID SIDDHARTA.
"LET THE OLD SHRAMANAS SATISFY THEMSELVES WITH SUCH SKILLS.
SIDDHARTA
- HERMANN HESSE -
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

@ -0,0 +1,73 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name token_matcher.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens
import "activething.com/go/gogo/sapis/matches"
type (
TokenMatcher struct {
source []byte
MatchFn matches.MatchFnc
}
)
func NewTokenMatcher(mfn matches.MatchFnc, src []byte) *TokenMatcher {
return &TokenMatcher{
MatchFn: mfn,
source: src,
}
}
func (_ TokenMatcher) Kind() TokenKind {
return TokenKindMatcher }
func (t TokenMatcher) Match(val []byte) bool {
return t.MatchFn(val) }
func (t TokenMatcher) Source() []byte {
return t.source }
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
I HAVE NO DESIRE TO WALK ON WATER," SAID SIDDHARTA.
"LET THE OLD SHRAMANAS SATISFY THEMSELVES WITH SUCH SKILLS.
SIDDHARTA
- HERMANN HESSE -
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

@ -0,0 +1,59 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name token_relative.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens
type (
TokenRelative struct{}
)
func (_ TokenRelative) Kind() TokenKind {
return TokenKindRelative }
func (_ TokenRelative) Match(_ []byte) bool {
return true }
func (t TokenRelative) Source() []byte {
return nil }
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
I HAVE NO DESIRE TO WALK ON WATER," SAID SIDDHARTA.
"LET THE OLD SHRAMANAS SATISFY THEMSELVES WITH SUCH SKILLS.
SIDDHARTA
- HERMANN HESSE -
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

@ -0,0 +1,60 @@
// ------------------------------------------------------------------------
// Project atila
// Active Thing (activething.com) git.activething.com/go
//
// File name token_wildcard.go
// Created by DEV
// Modified 18/02/2024
//
// Copyright 2024 activething.com
// ------------------------------------------------------------------------
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ------------------------------------------------------------------------
package tokens
type (
TokenWildcard struct{}
)
func (_ TokenWildcard) Kind() TokenKind {
return TokenKindWildcard }
func (_ TokenWildcard) Match(_ []byte) bool {
return true }
func (t TokenWildcard) Source() []byte {
return nil }
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
I HAVE NO DESIRE TO WALK ON WATER," SAID SIDDHARTA.
"LET THE OLD SHRAMANAS SATISFY THEMSELVES WITH SUCH SKILLS.
SIDDHARTA
- HERMANN HESSE -
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/
Loading…
Cancel
Save

Powered by TurnKey Linux.