Skip to content

Commit 2d82df4

Browse files
committed
Add error handling
1 parent f1ae816 commit 2d82df4

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

google-gemini-content.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
top-p
4343
top-k)
4444
"Send generate content request."
45-
(request (format "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=%s" key)
45+
(google-gemini-request (format "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=%s" key)
4646
:type "POST"
4747
:headers (google-gemini--headers content-type)
4848
:data (google-gemini--json-encode

google-gemini.el

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,5 +112,33 @@ The argument OBJECT is an alist that can be construct to JSON data; see function
112112
(google-gemini--log "[ENCODED]: %s" encoded)
113113
encoded))
114114

115+
(defun google-gemini--handle-error (response)
116+
"Handle error status code from the RESPONSE."
117+
(let ((status-code (request-response-status-code response)))
118+
(google-gemini--log "[ERROR]: %s" response)
119+
(pcase status-code
120+
(400 (message "400 - Bad request. Please check error message and your parameters"))
121+
(401 (message "401 - Invalid Authentication"))
122+
(429 (message "429 - Rate limit reached for requests"))
123+
(500 (message "500 - The server had an error while processing your request"))
124+
(_ (message "Internal error: %s" status-code)))))
125+
126+
(defvar google-gemini-error nil
127+
"Records for the last error.")
128+
129+
(defmacro google-gemini-request (url &rest body)
130+
"Wrapper for `request' function.
131+
132+
The URL is the url for `request' function; then BODY is the arguments for rest."
133+
(declare (indent 1))
134+
`(progn
135+
(setq google-gemini-error nil)
136+
(request ,url
137+
:error (cl-function
138+
(lambda (&key response &allow-other-keys)
139+
(setq google-gemini-error response)
140+
(google-gemini--handle-error response)))
141+
,@body)))
142+
115143
(provide 'google-gemini)
116144
;;; google-gemini.el ends here

0 commit comments

Comments
 (0)