[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/webpaste 69166a3 121/298: Moved error-handling of failed r
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/webpaste 69166a3 121/298: Moved error-handling of failed requests out so providers must specify it |
Date: |
Thu, 9 Dec 2021 18:59:57 -0500 (EST) |
branch: elpa/webpaste
commit 69166a3c3a401a5c370fe82c2a081eea75815465
Author: Elis Axelsson <elis.axelsson@gmail.com>
Commit: Elis Axelsson <elis.axelsson@gmail.com>
Moved error-handling of failed requests out so providers must specify it
Moved error-lambda out, there's currently two predefined ones. One
that does allow failover and one that doesn't. This also kills the
newly introduced no-failover key. But it's for the better anyways.
This will make it much easier to actually do proper testing of
different cases in the code that simply wasn't possible before.
Also added a test of running the success lambda.
---
test/webpaste-test.el | 29 ++++++++++++++++++++++++-----
webpaste.el | 45 ++++++++++++++++++++++++++++++++-------------
2 files changed, 56 insertions(+), 18 deletions(-)
diff --git a/test/webpaste-test.el b/test/webpaste-test.el
index 2b98880..3363aac 100644
--- a/test/webpaste-test.el
+++ b/test/webpaste-test.el
@@ -10,18 +10,37 @@
(ert-deftest webpaste-test/provider ()
"Test creation of providers."
- (let ((success-lambda t)
+ (let ((used-lambda nil)
(provider (webpaste-provider
:uri "http://invalid-domain-name/"
:post-field "data"
- :no-failover t
:sync t
- :success-lambda (cl-function (lambda (&allow-other-keys)
- (setq success-lambda
nil))))))
+ :success-lambda (cl-function
+ (lambda (&key data &allow-other-keys)
+ (setq used-lambda "success")))
+ :error-lambda (cl-function
+ (lambda (&key error-thrown &allow-other-keys)
+ (setq used-lambda "error"))))))
(funcall provider "dummy-text")
- (should (equal t success-lambda))))
+ (should (equal "error" used-lambda)))
+
+ (let ((used-lambda nil)
+ (provider (webpaste-provider
+ :uri "https://httpbin.org/status/200"
+ :post-field "data"
+ :sync t
+ :success-lambda (cl-function
+ (lambda (&key data &allow-other-keys)
+ (setq used-lambda "success")))
+ :error-lambda (cl-function
+ (lambda (&key error-thrown &allow-other-keys)
+ (setq used-lambda "error"))))))
+
+ (funcall provider "dummy-text")
+
+ (should (equal "success" used-lambda))))
diff --git a/webpaste.el b/webpaste.el
index c9ec060..a4380ad 100644
--- a/webpaste.el
+++ b/webpaste.el
@@ -61,6 +61,20 @@ each run.")
+;;; Predefined error lambda for providers
+(defvar webpaste/providers-error-lambda
+ (cl-function (lambda (&key error-thrown &allow-other-keys)
+ (message "Got error: %S" error-thrown)
+ (webpaste-paste-text text)))
+ "Predefined error callback for providers that always does failover.")
+
+
+(defvar webpaste/providers-error-lambda-no-failover
+ (cl-function (lambda (&key error-thrown &allow-other-keys)
+ (message "Got error: %S" error-thrown)))
+ "Predefined error callback for providers that shouldn't do failover.")
+
+
;;; Predefined success lambdas for providers
(defvar webpaste/providers-success-location-header
(cl-function (lambda (&key response &allow-other-keys)
@@ -83,9 +97,9 @@ each run.")
(type "POST")
(parser 'buffer-string)
(post-data '())
- (no-failover nil)
(sync nil)
post-field
+ error-lambda
success-lambda)
"Function to create the lambda function for a provider.
@@ -99,11 +113,15 @@ Usage:
`request'. This defaults to 'buffer-string.
:post-data Default post fields sent to service. Defaults to nil.
:post-field Name of the field to insert the code into.
-:no-failover Set to t to not allow doing failovers. Defaults to nil.
:sync Set to t to wait until request is done. Defaults to nil. This
should only be used for debugging purposes.
:success-lambda Callback sent to `request', look up how to write these in the
- documentation for `request'."
+ documentation for `request'.
+:error-lambda Callback sent to `request', look up how to write these in the
+ documentation for `request'. A good default value forr this is
+ `webpaste/providers-error-lambda', but there's also
+ `webpaste/providers-error-lambda-no-failover' available if you
+ need a provider that isn't allowed to failover."
(lambda (text)
"Paste TEXT to provider"
@@ -118,11 +136,7 @@ Usage:
:parser parser
:success success-lambda
:sync sync
- :error
- (cl-function (lambda (&key error-thrown &allow-other-keys)
- (message "Got error: %S" error-thrown)
- (unless no-failover
- (webpaste-paste-text text))))))))
+ :error error-lambda))))
@@ -132,19 +146,22 @@ Usage:
,(webpaste-provider
:uri "https://ptpb.pw/"
:post-field "c"
- :success-lambda webpaste/providers-success-location-header))
+ :success-lambda webpaste/providers-success-location-header
+ :error-lambda webpaste/providers-error-lambda))
("ix.io"
,(webpaste-provider
:uri "http://ix.io/"
:post-field "f:1"
- :success-lambda webpaste/providers-success-returned-string))
+ :success-lambda webpaste/providers-success-returned-string
+ :error-lambda webpaste/providers-error-lambda))
("sprunge.us"
,(webpaste-provider
:uri "http://sprunge.us/"
:post-field "sprunge"
- :success-lambda webpaste/providers-success-returned-string))
+ :success-lambda webpaste/providers-success-returned-string
+ :error-lambda webpaste/providers-error-lambda))
("dpaste.com"
,(webpaste-provider
@@ -154,7 +171,8 @@ Usage:
("poster" . "")
("expiry_days" . 1))
:post-field "content"
- :success-lambda webpaste/providers-success-location-header))
+ :success-lambda webpaste/providers-success-location-header
+ :error-lambda webpaste/providers-error-lambda))
("dpaste.de"
,(webpaste-provider
@@ -163,7 +181,8 @@ Usage:
("format" . "url")
("expires" . 86400))
:post-field "content"
- :success-lambda webpaste/providers-success-returned-string)))
+ :success-lambda webpaste/providers-success-returned-string
+ :error-lambda webpaste/providers-error-lambda)))
"Define all webpaste.el providers.
Consists of provider name and lambda function to do the actuall call to the
- [nongnu] elpa/webpaste dcc26da 084/298: Update melpa image links, (continued)
- [nongnu] elpa/webpaste dcc26da 084/298: Update melpa image links, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 6655ecc 085/298: Rename make compile to make build because it's easier to remember, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 346b5bc 087/298: Rename tests to be prefixed, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 3389b4a 089/298: Do not provide test-helper feature, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 7db5673 093/298: Added more emacs versions for tests, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 382e01d 105/298: Added page breaks to files, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste b7acc4e 100/298: Added test for returning of URL's, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 8027e6e 106/298: Run tests on emacs 25.2 since it's been released, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste e04d885 114/298: Add (prog1 nil ...) form to avoid having the nil hanging at the end, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 124ef8b 119/298: Drop usage of concat when returning link to users message field, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 69166a3 121/298: Moved error-handling of failed requests out so providers must specify it,
ELPA Syncer <=
- [nongnu] elpa/webpaste 69f9452 122/298: Bump version for minor release, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 8905a52 125/298: Re-arrange arguments to webpaste-provider and update docs, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 72ba31e 127/298: Bump version for new release, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 7d03ed3 137/298: Removed unused variables defined in function declaration, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 07a85e9 142/298: Added pre-calculated alist of languages for providers, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 7b84568 155/298: Avoid setq's in favor of let, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 0c0e88a 079/298: Added basic structure of tests file, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 95289e5 082/298: Added .travis.yml config file, ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste 7c90bc5 090/298: Merge branch 'tarsius-master', ELPA Syncer, 2021/12/09
- [nongnu] elpa/webpaste ec85d7d 092/298: Added unit test for static provider configuration, ELPA Syncer, 2021/12/09