(c *gin.Context)
| 1941 | } |
| 1942 | |
| 1943 | func (h *Handler) tts(c *gin.Context) { |
| 1944 | var original_request officialtypes.TTSAPIRequest |
| 1945 | err := c.BindJSON(&original_request) |
| 1946 | if err != nil { |
| 1947 | c.JSON(400, gin.H{"error": gin.H{ |
| 1948 | "message": "Request must be proper JSON", |
| 1949 | "type": "invalid_request_error", |
| 1950 | "param": nil, |
| 1951 | "code": err.Error(), |
| 1952 | }}) |
| 1953 | return |
| 1954 | } |
| 1955 | if original_request.Input == "" { |
| 1956 | c.JSON(400, gin.H{"error": gin.H{ |
| 1957 | "message": "Missing required parameter: input", |
| 1958 | "type": "invalid_request_error", |
| 1959 | "param": "input", |
| 1960 | "code": "missing_required_parameter", |
| 1961 | }}) |
| 1962 | return |
| 1963 | } |
| 1964 | |
| 1965 | proxyUrl := h.proxy.GetProxyIP() |
| 1966 | secret, status, err := h.secretFromAuthorization(c, true, true, proxyUrl) |
| 1967 | if err != nil { |
| 1968 | c.JSON(status, gin.H{"error": gin.H{ |
| 1969 | "message": err.Error(), |
| 1970 | "type": "authorization_error", |
| 1971 | "param": "Authorization", |
| 1972 | "code": status, |
| 1973 | }}) |
| 1974 | return |
| 1975 | } |
| 1976 | if secret == nil || secret.Token == "" { |
| 1977 | c.JSON(400, gin.H{"error": "TTS requires a logged-in ChatGPT access token."}) |
| 1978 | return |
| 1979 | } |
| 1980 | if secret.IsFree { |
| 1981 | c.JSON(403, gin.H{"error": "TTS does not support free/noauth accounts. Use a ChatGPT access token."}) |
| 1982 | return |
| 1983 | } |
| 1984 | |
| 1985 | client := bogdanfinn.NewStdClient() |
| 1986 | |
| 1987 | // Convert the chat request to a ChatGPT request |
| 1988 | translated_request := chatgptrequestconverter.ConvertTTSAPIRequest(original_request.Input) |
| 1989 | clientState := chatgpt.NewChatClientState() |
| 1990 | clientState.ConversationID = translated_request.ConversationID |
| 1991 | clientState.ParentMessageID = translated_request.ParentMessageID |
| 1992 | |
| 1993 | response, wsConn, status, err := h.postConversationGptClientOrder(&client, &secret, translated_request, proxyUrl, false, clientState) |
| 1994 | if err != nil { |
| 1995 | c.JSON(status, gin.H{"error": gin.H{ |
| 1996 | "message": err.Error(), |
| 1997 | "type": "request_conversion_error", |
| 1998 | "param": "model", |
| 1999 | "code": "request_conversion_error", |
| 2000 | }}) |
nothing calls this directly
no test coverage detected