blob: 1cf0ac7e811ccaa79f6af5af4a7b1c6583bfa3de [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 model
import (
"time"
)
import (
"github.com/mitchellh/mapstructure"
)
import (
"github.com/apache/dubbo-go-pixiu/pkg/logger"
)
// HttpConnectionManagerConfig
type HttpConnectionManagerConfig struct {
RouteConfig RouteConfiguration `yaml:"route_config" json:"route_config" mapstructure:"route_config"`
HTTPFilters []*HTTPFilter `yaml:"http_filters" json:"http_filters" mapstructure:"http_filters"`
ServerName string `yaml:"server_name" json:"server_name" mapstructure:"server_name"`
IdleTimeoutStr string `yaml:"idle_timeout" json:"idle_timeout" mapstructure:"idle_timeout"`
GenerateRequestID bool `yaml:"generate_request_id" json:"generate_request_id" mapstructure:"generate_request_id"`
TimeoutStr string `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
Timeout time.Duration `yaml:"-" json:"-" mapstructure:"-"`
}
// GRPCConnectionManagerConfig
type GRPCConnectionManagerConfig struct {
RouteConfig RouteConfiguration `yaml:"route_config" json:"route_config" mapstructure:"route_config"`
TimeoutStr string `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
Timeout time.Duration `yaml:"-" json:"-" mapstructure:"-"`
}
// DubboProxyConnectionManagerConfig
type DubboProxyConnectionManagerConfig struct {
RouteConfig RouteConfiguration `yaml:"route_config" json:"route_config" mapstructure:"route_config"`
DubboFilters []*DubboFilter `yaml:"dubbo_filters" json:"dubbo_filters" mapstructure:"dubbo_filters"`
TimeoutStr string `yaml:"timeout" json:"timeout" mapstructure:"timeout"`
Timeout time.Duration `yaml:"-" json:"-" mapstructure:"-"`
}
// HTTPFilter http filter
type HTTPFilter struct {
Name string `yaml:"name" json:"name" mapstructure:"name"`
Config map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"`
}
// DubboFilter dubbo filter
type DubboFilter struct {
Name string `yaml:"name" json:"name" mapstructure:"name"`
Config map[string]interface{} `yaml:"config" json:"config" mapstructure:"config"`
}
type RequestMethod int32
const (
METHOD_UNSPECIFIED = 0 + iota // (DEFAULT)
GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
)
var RequestMethodName = map[int32]string{
0: "METHOD_UNSPECIFIED",
1: "GET",
2: "HEAD",
3: "POST",
4: "PUT",
5: "DELETE",
6: "CONNECT",
7: "OPTIONS",
8: "TRACE",
}
var RequestMethodValue = map[string]int32{
"METHOD_UNSPECIFIED": 0,
"GET": 1,
"HEAD": 2,
"POST": 3,
"PUT": 4,
"DELETE": 5,
"CONNECT": 6,
"OPTIONS": 7,
"TRACE": 8,
}
// HttpConfig the http config
type HttpConfig struct {
IdleTimeoutStr string `yaml:"idle_timeout" json:"idle_timeout" mapstructure:"idle_timeout"`
ReadTimeoutStr string `json:"read_timeout,omitempty" yaml:"read_timeout,omitempty" mapstructure:"read_timeout"`
WriteTimeoutStr string `json:"write_timeout,omitempty" yaml:"write_timeout,omitempty" mapstructure:"write_timeout"`
MaxHeaderBytes int `json:"max_header_bytes,omitempty" yaml:"max_header_bytes,omitempty" mapstructure:"max_header_bytes"`
}
func MapInStruct(cfg interface{}) *HttpConfig {
var hc *HttpConfig
if cfg != nil {
if ok := mapstructure.Decode(cfg, &hc); ok != nil {
logger.Error("Config error", ok)
}
}
return hc
}