Merge branch 'refactor-away-defvars'

This refs #18
master
Elis Axelsson 9 years ago
commit 6e116ea1e0
No known key found for this signature in database
GPG Key ID: D57EFA625C9A925F
  1. 24
      tests/test-webpaste-provider-creation.el
  2. 80
      webpaste.el

@ -16,24 +16,24 @@
:uri "http://invalid-domain-name/"
: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")))))
:success-lambda (lambda () (cl-function
(lambda (&key data &allow-other-keys)
(setq used-lambda "success"))))
:error-lambda (lambda (&rest rest) (cl-function
(lambda (&key error-thrown &allow-other-keys)
(setq used-lambda "error"))))))
(setq working-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"))))))
:success-lambda (lambda () (cl-function
(lambda (&key data &allow-other-keys)
(setq used-lambda "success"))))
:error-lambda (lambda (&rest rest) (cl-function
(lambda (&key error-thrown &allow-other-keys)
(setq used-lambda "error")))))))
(it

@ -100,47 +100,48 @@ precalculated, and also available both for pre and post request access.")
;;; Predefined error lambda for providers
(defvar webpaste/providers-error-lambda
(cl-defun webpaste/providers-error-lambda (&key text)
"Predefined error callback for providers that always does failover."
(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.")
(webpaste-paste-text text))))
(defvar webpaste/providers-error-lambda-no-failover
(cl-defun webpaste/providers-error-lambda-no-failover (&key text)
"Predefined error callback for providers that shouldn't do 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.")
(message "Got error: %S" error-thrown))))
;;; Predefined success lambdas for providers
(defvar webpaste/providers-success-location-header
(cl-defun webpaste/providers-success-location-header ()
"Predefined success callback for providers returning a Location header."
(cl-function (lambda (&key response &allow-other-keys)
(when response
(webpaste-return-url
(request-response-header response "Location")))))
"Predefined success callback for providers returning a Location header.")
(request-response-header response "Location"))))))
(defvar webpaste/providers-success-response-url
(cl-defun webpaste/providers-success-response-url ()
"Predefined success callback for providers that and up with an URL somehow."
(cl-function (lambda (&key response &allow-other-keys)
(when response
(webpaste-return-url
(request-response-url response)))))
"Predefined success callback for providers that and up with an URL somehow.")
(request-response-url response))))))
(defvar webpaste/providers-success-returned-string
(cl-defun webpaste/providers-success-returned-string ()
"Predefined success callback for providers returning a string with URL."
(cl-function (lambda (&key data &allow-other-keys)
(when data
(setq data (replace-regexp-in-string "\n$" "" data))
(setq data (replace-regexp-in-string "\"" "" data))
(webpaste-return-url data))))
"Predefined success callback for providers returning a string with URL.")
(webpaste-return-url data)))))
(defvar webpaste/providers-default-post-field-lambda
(cl-defun webpaste/providers-default-post-field-lambda ()
"Predefined lambda for building post fields."
(cl-function (lambda (&key text
post-field
provider-uri
@ -155,8 +156,7 @@ precalculated, and also available both for pre and post request access.")
(if (and post-lang-field-name language-name)
;; Append language to the post-data
(cl-pushnew (cons post-lang-field-name language-name) post-data))))
post-data))
"Predefined lambda for building post fields.")
post-data)))
@ -183,8 +183,8 @@ precalculated, and also available both for pre and post request access.")
(parser 'buffer-string)
(lang-overrides '())
(lang-uri-separator nil)
(error-lambda webpaste/providers-error-lambda)
(post-field-lambda webpaste/providers-default-post-field-lambda)
(error-lambda 'webpaste/providers-error-lambda)
(post-field-lambda 'webpaste/providers-default-post-field-lambda)
(sync nil))
"Function to create the lambda function for a provider.
@ -257,16 +257,16 @@ Optional params:
;; Do request
(request uri
:type type
:data (funcall post-field-lambda
:data (funcall (funcall post-field-lambda)
:text text
:provider-uri uri
:post-field post-field
:post-lang-field-name post-lang-field-name
:post-data post-data)
:parser parser
:success success-lambda
:success (funcall success-lambda)
:sync sync
:error error-lambda))))
:error (funcall error-lambda :text text)))))
@ -278,7 +278,7 @@ Optional params:
:post-field "c"
:lang-uri-separator "/"
:lang-overrides '((emacs-lisp-mode . "elisp"))
:success-lambda webpaste/providers-success-location-header))
:success-lambda 'webpaste/providers-success-location-header))
("ix.io"
,(webpaste-provider
@ -286,7 +286,7 @@ Optional params:
:post-field "f:1"
:lang-uri-separator "/"
:lang-overrides '((emacs-lisp-mode . "elisp"))
:success-lambda webpaste/providers-success-returned-string))
:success-lambda 'webpaste/providers-success-returned-string))
("sprunge.us"
,(webpaste-provider
@ -294,7 +294,7 @@ Optional params:
:post-field "sprunge"
:lang-uri-separator "?"
:lang-overrides '((emacs-lisp-mode . "elisp"))
:success-lambda webpaste/providers-success-returned-string))
:success-lambda 'webpaste/providers-success-returned-string))
("dpaste.com"
,(webpaste-provider
@ -305,7 +305,7 @@ Optional params:
:post-field "content"
:post-lang-field-name "syntax"
:lang-overrides '((emacs-lisp-mode . "clojure"))
:success-lambda webpaste/providers-success-location-header))
:success-lambda 'webpaste/providers-success-location-header))
("dpaste.de"
,(webpaste-provider
@ -314,23 +314,23 @@ Optional params:
:post-field "content"
:post-lang-field-name "lexer"
:lang-overrides '((emacs-lisp-mode . "clojure"))
:success-lambda webpaste/providers-success-returned-string))
:success-lambda 'webpaste/providers-success-returned-string))
("gist.github.com"
,(webpaste-provider
:uri "https://api.github.com/gists"
:post-field nil
:post-field-lambda (cl-function (lambda (&key text &allow-other-keys)
(let ((filename (or (file-name-nondirectory (buffer-file-name)) "file.txt")))
(json-encode `(("description" . "Pasted from Emacs with webpaste.el")
("public" . "false")
("files" .
((,filename .
(("content" . ,text))))))))))
:success-lambda (cl-function (lambda (&key data &allow-other-keys)
(when data
(webpaste-return-url
(cdr (assoc 'html_url (json-read-from-string data)))))))))
:post-field-lambda (lambda () (cl-function (lambda (&key text &allow-other-keys)
(let ((filename (or (file-name-nondirectory (buffer-file-name)) "file.txt")))
(json-encode `(("description" . "Pasted from Emacs with webpaste.el")
("public" . "false")
("files" .
((,filename .
(("content" . ,text)))))))))))
:success-lambda (lambda () (cl-function (lambda (&key data &allow-other-keys)
(when data
(webpaste-return-url
(cdr (assoc 'html_url (json-read-from-string data))))))))))
("paste.pound-python.org"
,(webpaste-provider
@ -339,7 +339,7 @@ Optional params:
:post-field "code"
:post-lang-field-name "language"
:lang-overrides '((emacs-lisp-mode . "clojure"))
:success-lambda webpaste/providers-success-response-url)))
:success-lambda 'webpaste/providers-success-response-url)))
"Define all webpaste.el providers.
Consists of provider name and lambda function to do the actuall call to the

Loading…
Cancel
Save