mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-25 17:18:44 +05:00
Basic struct for httpUrlDP
This commit is contained in:
@@ -22,7 +22,9 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/cgrates/cgrates/config"
|
||||
"github.com/cgrates/cgrates/engine"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
|
||||
// newHADataProvider constructs a DataProvider
|
||||
@@ -31,9 +33,17 @@ func newHADataProvider(dpType string,
|
||||
switch dpType {
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported decoder type <%s>", dpType)
|
||||
case utils.MetaUrl:
|
||||
return newHTTPUrlDP(req)
|
||||
}
|
||||
}
|
||||
|
||||
// httpAgentReplyEncoder will encode []*engine.NMElement
|
||||
// and write content to http writer
|
||||
type httpAgentReplyEncoder interface {
|
||||
encode(*engine.NavigableMap) error
|
||||
}
|
||||
|
||||
// newHAReplyEncoder constructs a httpAgentReqDecoder based on encoder type
|
||||
func newHAReplyEncoder(encType string,
|
||||
w http.ResponseWriter) (rE httpAgentReplyEncoder, err error) {
|
||||
@@ -43,8 +53,34 @@ func newHAReplyEncoder(encType string,
|
||||
}
|
||||
}
|
||||
|
||||
// httpAgentReplyEncoder will encode []*engine.NMElement
|
||||
// and write content to http writer
|
||||
type httpAgentReplyEncoder interface {
|
||||
encode(*engine.NavigableMap) error
|
||||
func newHTTPUrlDP(req *http.Request) (dP engine.DataProvider, err error) {
|
||||
dP = &httpUrlDP{req: req}
|
||||
return
|
||||
}
|
||||
|
||||
// httpUrlDP implements engine.DataProvider, serving as url data decoder
|
||||
// decoded data is only searched once and cached
|
||||
type httpUrlDP struct {
|
||||
req *http.Request
|
||||
cache engine.NavigableMap
|
||||
}
|
||||
|
||||
// String is part of engine.DataProvider interface
|
||||
func (url *httpUrlDP) String() string {
|
||||
return utils.ToJSON(url.cache.AsMapStringInterface())
|
||||
}
|
||||
|
||||
// FieldAsInterface is part of engine.DataProvider interface
|
||||
func (url *httpUrlDP) FieldAsInterface(fldPath []string) (data interface{}, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// FieldAsString is part of engine.DataProvider interface
|
||||
func (url *httpUrlDP) FieldAsString(fldPath []string) (data string, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// AsNavigableMap is part of engine.DataProvider interface
|
||||
func (url *httpUrlDP) AsNavigableMap([]*config.CfgCdrField) (nm *engine.NavigableMap, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user