Skip to content

Commit

Permalink
#12 clean code a little
Browse files Browse the repository at this point in the history
  • Loading branch information
thegodenage committed Mar 20, 2024
1 parent 5ad9261 commit 45c7edf
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 12 deletions.
4 changes: 2 additions & 2 deletions cmd/proxy/config/config.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
dns:
- host: "google.localhost:8080"
address: "https://google.com"
- host: "100commitow.localhost"
- host: "100commitow.localhost:8080"
address: "https://100commitow.pl"

rules:
custom:
- name: "request payload must contains at least one character and should contain at least one header"
- name: "request payload must contain at least one character and should contain at least one header"
predicate: "p => LEN(p.payload) > 0 && LEN(p.headers) > 0"
- name: "payload must be a json"
predicate: "p => FORMAT(p.payload) == 'json'"
14 changes: 13 additions & 1 deletion internal/rule/expression_tree.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ type ExpressionTreeBuilder interface {
BuildExpressionTree(variable, expression string) (expressionTree, error)
}

type ExpressionTreeFactory interface {
CreateExpressionTree(tokens []Token) (expressionTree, error)
}

// Tokenizer should be implemented by the structs that tokenizes input.
type Tokenizer interface {
// BuildTokens builds tokens based on the variable and expression.
// Returns error if tokenizer cannot be done with the input.
BuildTokens(variable string, expression string) ([]Token, error)
}

type expressionTreeBuilder struct {
tokenizer Tokenizer
expressionTreeFactory ExpressionTreeFactory
Expand All @@ -17,7 +28,8 @@ var _ ExpressionTreeBuilder = (*expressionTreeBuilder)(nil)

func newCustomRulesTokenizer() *expressionTreeBuilder {
return &expressionTreeBuilder{
tokenizer: &tokenizer{},
tokenizer: &tokenizer{},
expressionTreeFactory: &expressionTreeFactory{},
}
}

Expand Down
10 changes: 8 additions & 2 deletions internal/rule/factory.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package rule

type ExpressionTreeFactory interface {
CreateExpressionTree(tokens []Token) (expressionTree, error)
type expressionTreeFactory struct {
}

var _ ExpressionTreeFactory = (*expressionTreeFactory)(nil)

func (e *expressionTreeFactory) CreateExpressionTree(tokens []Token) (expressionTree, error) {
//TODO implement me
panic("implement me")
}
9 changes: 2 additions & 7 deletions internal/rule/tokenizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,6 @@ var (
}
)

// Tokenizer should be implemented by the structs that tokenizes input.
type Tokenizer interface {
// BuildTokens builds tokens based on the variable and expression.
// Returns error if tokenizer cannot be done with the input.
BuildTokens(variable string, expression string) ([]Token, error)
}

type Token struct {
Name string
Value string
Expand All @@ -59,6 +52,8 @@ type Token struct {
type tokenizer struct {
}

var _ Tokenizer = (*tokenizer)(nil)

func (t *tokenizer) BuildTokens(variable string, expression string) ([]Token, error) {
var (
tokens []Token
Expand Down

0 comments on commit 45c7edf

Please sign in to comment.