package plugin

import (
	"encoding/json"
)

type GraphRequestLine struct {
	Method string `json:"method"`
	Uri    string `json:"uri"`
}
type GraphRequest struct {
	RequestLine GraphRequestLine  `json:"requestLine"`
	Headers     map[string]string `json:"headers"`
	Body        string            `json:"body"`
}
type GraphStatusLine struct {
	Code   int    `json:"code"`
	Reason string `json:"reasonPhrase"`
}
type GraphResponse struct {
	StatusLine GraphStatusLine   `json:"statusLine"`
	Headers    map[string]string `json:"headers"`
	Body       string            `json:"body"`
}

// 用于将数据转换成插件的请求参数
func (req *GraphRequest) ParseRequest(pluginRequest interface{}) error {
	data, err := json.Marshal(req.Body)
	if err != nil {
		return err
	}
	err = json.Unmarshal(data, pluginRequest)
	if err != nil {
		return err
	}
	return nil
}

type PluginResponse struct {
	Result    interface{} `json:"result"`
	RequestId string      `json:"requestId"`
}
