File tree Expand file tree Collapse file tree 2 files changed +29
-1
lines changed
Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments