summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xwgetpaste82
1 files changed, 52 insertions, 30 deletions
diff --git a/wgetpaste b/wgetpaste
index 313d2e5..c5e6f6d 100755
--- a/wgetpaste
+++ b/wgetpaste
@@ -12,6 +12,34 @@ unset LANGUAGE
E=$'\e'
N=$'\n'
+# generic post function
+POST_generic() {
+ local post nick description language expiration cvt_tabs input nr extra f
+ post=$1
+ nick=$2
+ description=$3
+ language=$4
+ expiration=$5
+ cvt_tabs=$6
+ input=$7
+
+ nr=${post//[^ ]}
+ [[ 6 = ${#nr} ]] || die "\"${SERVICE}\" is not supported by POST_${SERVICE}()."
+ extra=${post%% *}
+ [[ '%' = $extra ]] || echo -n "$extra&"
+ e() {
+ post="$1"
+ shift
+ while [[ -n $1 ]]; do
+ f=${post%% *}
+ [[ '%' != $f ]] && echo -n "$f=${!1}" && [[ $# -gt 1 ]] && echo -n "&"
+ shift
+ post=${post#$f }
+ done
+ }
+ e "${post#$extra }" nick description language expiration cvt_tabs input
+}
+
### services
SERVICES="codepad bpaste dpaste gists snippets"
# bpaste
@@ -44,7 +72,9 @@ ADDITIONAL_HEADERS_snippets=("Content-Type: application/json")
### engines
# codepad
LANGUAGES_codepad="C C++ D Haskell Lua OCaml PHP Perl Plain%Text Python Ruby Scheme Tcl"
-POST_codepad="submit % % lang % % code"
+POST_codepad() {
+ POST_generic "submit % % lang % % code" "$1" "$2" "$3" "$4" "$5" "$6"
+}
REGEX_URL_codepad='s|^--.*\(http://codepad.org/[^ ]\+\)|\1|p'
REGEX_RAW_codepad='s|^\(http://[^/]*/\)\([[:alnum:]]*\)$|\1\2/raw.rb|'
# dpaste
@@ -54,7 +84,10 @@ LANGUAGE_VALUES_dpaste="% Apache Bash Css Diff DjangoTemplate Haskell JScript Py
Ruby Rhtml Sql Xml"
EXPIRATIONS_dpaste="30%days 30%days%after%last%view"
EXPIRATION_VALUES_dpaste="off on"
-POST_dpaste="submit=Paste+it poster title language hold % content"
+POST_dpaste() {
+ POST_generic "submit=Paste+it poster title language hold % content" "$1" "$2" "$3" "$4" "$5" "$6"
+}
+
REGEX_RAW_dpaste='s|^\(http://[^/]*/\)\([[:alnum:]]*\)$|\1\2.txt|'
# gists
LANGUAGES_gists="ActionScript Ada Apex AppleScript Arc Arduino ASP Assembly
@@ -87,18 +120,19 @@ REGEX_URL_gists='s|^.*"html_url": "\([^"]\+gist[^"]\+\)".*$|\1|p'
REGEX_RAW_gists='s|^\(https://gist.github.com\)\(/.*\)$|\1/raw\2|'
escape_description_gists() { sed -e 's|"|\\"|g' -e 's|\x1b|\\u001b|g' -e 's|\r||g' <<< "$*"; }
escape_input_gists() { sed -e 's|\\|\\\\|g' -e 's|\x1b|\\u001b|g' -e 's|\r||g' -e 's|\t|\\t|g' -e 's|"|\\"|g' -e 's|$|\\n|' <<< "$*" | tr -d '\n'; }
-json_gists() {
- local description="${1}" language="${2}" content="${3}"
- [[ "$language" = auto ]] && language="" || language=".$language"
- echo "{\"description\":\"${description}\",\"public\":\"${PUBLIC_gists}\",\"files\":{\"${description//\/}${language}\":{\"content\":\"${content}\"}}"
+POST_gists() {
+ local description="${2}" language="${3}" content="${6}"
+ [[ "$language" = auto ]] && language="" || language=".$language"
+ echo "{\"description\":\"${description}\",\"public\":\"${PUBLIC_gists}\",\"files\":{\"${description//\/}${language}\":{\"content\":\"${content}\"}}"
+ echo "{\"description\":\"${description}\",\"public\":\"${PUBLIC_gists}\",\"files\":{\"${description//\/}${language}\":{\"content\":\"${content}\"}}"
}
# snippets
REGEX_URL_snippets='s|.*"web_url":"\([^"]*\)".*|\1|p'
REGEX_RAW_snippets='s|^\(.*/snippets\)\(/.*\)$|\1\2/raw|'
escape_description_snippets() { sed -e 's|"|\\"|g' -e 's|\x1b|\\u001b|g' -e 's|\r||g' <<< "$*"; }
escape_input_snippets() { sed -e 's|\\|\\\\|g' -e 's|\x1b|\\u001b|g' -e 's|\r||g' -e 's|\t|\\t|g' -e 's|"|\\"|g' -e 's|$|\\n|' <<< "$*" | tr -d '\n'; }
-json_snippets() {
- local description="${1}" content="${3}"
+POST_snippets() {
+ local description="${2}" content="${6}"
echo "{\"title\": \"${description}\", \"content\": \"${content}\", \"description\": \"${description}\", \"file_name\": \"${description}\", \"visibility\": \"${VISIBILITY_snippets}\" }"
}
# lodgeit
@@ -137,7 +171,9 @@ objective-c objective-j ocaml ooc perl php text pov prolog python python3 py3tb
ragel-c ragel-cpp ragel-d ragel-java ragel-objc ragel-ruby raw rconsole rebol redcode rst rhtml rb \
rbcon splus sass scala scheme smalltalk smarty sql sqlite3 squidconf tcl tcsh tex diff vala vb.net \
vim xml xml+cheetah xml+django xml+evoque xml+mako xml+myghty xml+php xml+erb xml+smarty xslt yaml"
-POST_lodgeit="submit=Paste! % % language % % code"
+POST_lodgeit() {
+ POST_generic "submit=Paste! % % language % % code" "$1" "$2" "$3" "$4" "$5" "$6"
+}
REGEX_RAW_lodgeit='s|^\(https\?://[^/]*/\)show\(/[[:alnum:]]*/\)$|\1raw\2|'
# pinnwand
LANGUAGES_pinnwand="ABAP ActionScript%3 ActionScript Ada ANTLR ANTLR%With%ActionScript%Target \
@@ -193,7 +229,9 @@ tcl tcsh tea tex text text treetop ts urbiscript vala vb.net velocity verilog vg
xml+cheetah xml+django xml+evoque xml+lasso xml+mako xml+myghty xml+php xml+erb xml+smarty \
xml+velocity xml xquery xslt xtend yaml"
EXPIRATIONS_pinnwand="1day 1week 1month never"
-POST_pinnwand="submit=Paste! % % lexer expiry % code"
+POST_pinnwand() {
+ POST_generic "submit=Paste! % % lexer expiry % code" "$1" "$2" "$3" "$4" "$5" "$6"
+}
REGEX_LOC_pinnwand="\(/show/[^ ]*\).*$|https://bpaste.net\1"
REGEX_RAW_pinnwand='s|^\(https\?://[^/]*/\)show\(/[^ ]*/\?\)$|\1raw\2|'
@@ -542,29 +580,12 @@ getrecipient() {
# generate POST data
postdata() {
- local post nr extra f
+ local post
post=POST_$ENGINE
- if [[ -n ${!post} ]]; then
- nr=${!post//[^ ]}
- [[ 6 = ${#nr} ]] || die "\"${SERVICE}\" is not supported by ${FUNCNAME}()."
- extra=${!post%% *}
- [[ '%' = $extra ]] || echo -n "$extra&"
- e() {
- post="$1"
- shift
- while [[ -n $1 ]]; do
- f=${post%% *}
- [[ '%' != $f ]] && echo -n "$f=${!1}" && [[ $# -gt 1 ]] && echo -n "&"
- shift
- post=${post#$f }
- done
- }
- e "${!post#$extra }" NICK DESCRIPTION LANGUAGE EXPIRATION CVT_TABS INPUT
- elif [[ function == $(type -t json_$ENGINE) ]]; then
- json_$ENGINE "$DESCRIPTION" "$LANGUAGE" "$INPUT"
- else
+ if [[ function != $(type -t $post) ]]; then
die "\"${SERVICE}\" is not supported by ${FUNCNAME}()."
fi
+ $post "$NICK" "$DESCRIPTION" "$LANGUAGE" "$EXPIRATION" "$CVT_TABS" "$INPUT"
}
# get url from response from server
@@ -572,6 +593,7 @@ geturl() {
local regex location
regex=REGEX_URL_$ENGINE
location=REGEX_LOC_$ENGINE
+
if [[ -n ${!regex} ]]; then
[[ needstdout = $1 ]] && return 0
sed -n -e "${!regex}" <<< "$*"