Skip to content
Snippets Groups Projects
rest_config.go 6.39 KiB
Newer Older
Patrick's avatar
Patrick committed
/*
 * 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.
 */

fangyincheng's avatar
fangyincheng committed
package config
Patrick's avatar
Patrick committed

fangyincheng's avatar
fangyincheng committed
import (
	"github.com/creasty/defaults"
)

var (
	restConsumerServiceConfigMap map[string]*RestServiceConfig
	restProviderServiceConfigMap map[string]*RestServiceConfig
)
Patrick's avatar
Patrick committed

lihaowei's avatar
lihaowei committed
// nolint
Patrick's avatar
Patrick committed
type RestConsumerConfig struct {
Patrick's avatar
Patrick committed
	Client                string                        `default:"resty" yaml:"rest_client" json:"rest_client,omitempty" property:"rest_client"`
	Produces              string                        `default:"application/json" yaml:"rest_produces"  json:"rest_produces,omitempty" property:"rest_produces"`
	Consumes              string                        `default:"application/json" yaml:"rest_consumes"  json:"rest_consumes,omitempty" property:"rest_consumes"`
	RestServiceConfigsMap map[string]*RestServiceConfig `yaml:"references" json:"references,omitempty" property:"references"`
Patrick's avatar
Patrick committed
}

lihaowei's avatar
lihaowei committed
// UnmarshalYAML unmarshals the RestConsumerConfig by @unmarshal function
Patrick's avatar
Patrick committed
func (c *RestConsumerConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
	if err := defaults.Set(c); err != nil {
		return err
	}
	type plain RestConsumerConfig
	if err := unmarshal((*plain)(c)); err != nil {
		return err
	}
	return nil
}

lihaowei's avatar
lihaowei committed
// nolint
Patrick's avatar
Patrick committed
type RestProviderConfig struct {
Patrick's avatar
Patrick committed
	Server                string                        `default:"go-restful" yaml:"rest_server" json:"rest_server,omitempty" property:"rest_server"`
	Produces              string                        `default:"*/*" yaml:"rest_produces"  json:"rest_produces,omitempty" property:"rest_produces"`
	Consumes              string                        `default:"*/*" yaml:"rest_consumes"  json:"rest_consumes,omitempty" property:"rest_consumes"`
	RestServiceConfigsMap map[string]*RestServiceConfig `yaml:"services" json:"services,omitempty" property:"services"`
Patrick's avatar
Patrick committed
}

lihaowei's avatar
lihaowei committed
// UnmarshalYAML unmarshals the RestProviderConfig by @unmarshal function
Patrick's avatar
Patrick committed
func (c *RestProviderConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
	if err := defaults.Set(c); err != nil {
		return err
	}
	type plain RestProviderConfig
	if err := unmarshal((*plain)(c)); err != nil {
		return err
	}
	return nil
}

lihaowei's avatar
lihaowei committed
// nolint
Patrick's avatar
Patrick committed
type RestServiceConfig struct {
Patrick's avatar
Patrick committed
	InterfaceName        string              `required:"true"  yaml:"interface"  json:"interface,omitempty" property:"interface"`
AlexStocks's avatar
AlexStocks committed
	URL                  string              `yaml:"url"  json:"url,omitempty" property:"url"`
Patrick's avatar
Patrick committed
	Path                 string              `yaml:"rest_path"  json:"rest_path,omitempty" property:"rest_path"`
	Produces             string              `yaml:"rest_produces"  json:"rest_produces,omitempty" property:"rest_produces"`
	Consumes             string              `yaml:"rest_consumes"  json:"rest_consumes,omitempty" property:"rest_consumes"`
Patrick's avatar
Patrick committed
	MethodType           string              `yaml:"rest_method"  json:"rest_method,omitempty" property:"rest_method"`
	Client               string              `yaml:"rest_client" json:"rest_client,omitempty" property:"rest_client"`
	Server               string              `yaml:"rest_server" json:"rest_server,omitempty" property:"rest_server"`
	RestMethodConfigs    []*RestMethodConfig `yaml:"methods" json:"methods,omitempty" property:"methods"`
	RestMethodConfigsMap map[string]*RestMethodConfig
}

lihaowei's avatar
lihaowei committed
// UnmarshalYAML unmarshals the RestServiceConfig by @unmarshal function
Patrick's avatar
Patrick committed
func (c *RestServiceConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
Patrick's avatar
Patrick committed
	if err := defaults.Set(c); err != nil {
		return err
	}
Patrick's avatar
Patrick committed
	type plain RestServiceConfig
Patrick's avatar
Patrick committed
	if err := unmarshal((*plain)(c)); err != nil {
		return err
	}
	return nil
Patrick's avatar
Patrick committed
}
Patrick's avatar
Patrick committed

lihaowei's avatar
lihaowei committed
// nolint
Patrick's avatar
Patrick committed
type RestMethodConfig struct {
	InterfaceName  string
	MethodName     string `required:"true" yaml:"name"  json:"name,omitempty" property:"name"`
AlexStocks's avatar
AlexStocks committed
	URL            string `yaml:"url"  json:"url,omitempty" property:"url"`
Patrick's avatar
Patrick committed
	Path           string `yaml:"rest_path"  json:"rest_path,omitempty" property:"rest_path"`
	Produces       string `yaml:"rest_produces"  json:"rest_produces,omitempty" property:"rest_produces"`
	Consumes       string `yaml:"rest_consumes"  json:"rest_consumes,omitempty" property:"rest_consumes"`
	MethodType     string `yaml:"rest_method"  json:"rest_method,omitempty" property:"rest_method"`
	PathParams     string `yaml:"rest_path_params"  json:"rest_path_params,omitempty" property:"rest_path_params"`
	PathParamsMap  map[int]string
	QueryParams    string `yaml:"rest_query_params"  json:"rest_query_params,omitempty" property:"rest_query_params"`
	QueryParamsMap map[int]string
Patrick's avatar
Patrick committed
	Body           int    `default:"-1" yaml:"rest_body"  json:"rest_body,omitempty" property:"rest_body"`
Patrick's avatar
Patrick committed
	Headers        string `yaml:"rest_headers"  json:"rest_headers,omitempty" property:"rest_headers"`
	HeadersMap     map[int]string
Patrick's avatar
Patrick committed
}
Patrick's avatar
Patrick committed

lihaowei's avatar
lihaowei committed
// UnmarshalYAML unmarshals the RestMethodConfig by @unmarshal function
Patrick's avatar
Patrick committed
func (c *RestMethodConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
	if err := defaults.Set(c); err != nil {
		return err
	}
	type plain RestMethodConfig
	if err := unmarshal((*plain)(c)); err != nil {
		return err
	}
	return nil
}
lihaowei's avatar
lihaowei committed
// nolint
Patrick's avatar
Patrick committed
func GetRestConsumerServiceConfig(id string) *RestServiceConfig {
	return restConsumerServiceConfigMap[id]
lihaowei's avatar
lihaowei committed
// nolint
Patrick's avatar
Patrick committed
func GetRestProviderServiceConfig(id string) *RestServiceConfig {
	return restProviderServiceConfigMap[id]
lihaowei's avatar
lihaowei committed
// nolint
fangyincheng's avatar
fangyincheng committed
func SetRestConsumerServiceConfigMap(configMap map[string]*RestServiceConfig) {
	restConsumerServiceConfigMap = configMap
}

lihaowei's avatar
lihaowei committed
// nolint
fangyincheng's avatar
fangyincheng committed
func SetRestProviderServiceConfigMap(configMap map[string]*RestServiceConfig) {
	restProviderServiceConfigMap = configMap
}

lihaowei's avatar
lihaowei committed
// nolint
fangyincheng's avatar
fangyincheng committed
func GetRestConsumerServiceConfigMap() map[string]*RestServiceConfig {
	return restConsumerServiceConfigMap
}

lihaowei's avatar
lihaowei committed
// nolint
fangyincheng's avatar
fangyincheng committed
func GetRestProviderServiceConfigMap() map[string]*RestServiceConfig {
	return restProviderServiceConfigMap
}