feat: group api
This commit is contained in:
@@ -1,42 +1,24 @@
|
||||
package channel
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"gpt-load/internal/models"
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type GeminiChannel struct {
|
||||
BaseChannel
|
||||
}
|
||||
|
||||
type GeminiChannelConfig struct {
|
||||
BaseURL string `json:"base_url"`
|
||||
}
|
||||
|
||||
func NewGeminiChannel(group *models.Group) (*GeminiChannel, error) {
|
||||
var config GeminiChannelConfig
|
||||
if err := json.Unmarshal([]byte(group.Config), &config); err != nil {
|
||||
return nil, fmt.Errorf("failed to unmarshal channel config: %w", err)
|
||||
}
|
||||
if config.BaseURL == "" {
|
||||
return nil, fmt.Errorf("base_url is required for gemini channel")
|
||||
}
|
||||
|
||||
baseURL, err := url.Parse(config.BaseURL)
|
||||
func NewGeminiChannel(upstreams []string) (*GeminiChannel, error) {
|
||||
base, err := newBaseChannelWithUpstreams("gemini", upstreams)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to parse base_url: %w", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &GeminiChannel{
|
||||
BaseChannel: BaseChannel{
|
||||
Name: "gemini",
|
||||
BaseURL: baseURL,
|
||||
HTTPClient: &http.Client{},
|
||||
},
|
||||
BaseChannel: base,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -47,4 +29,4 @@ func (ch *GeminiChannel) Handle(c *gin.Context, apiKey *models.APIKey, group *mo
|
||||
req.URL.RawQuery = q.Encode()
|
||||
}
|
||||
return ch.ProcessRequest(c, apiKey, modifier)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user