zvoase (owner)

Revisions

gist: 17932 Download_button fork
public
Description:
"untiny" Ubiquity Command
Public Clone URL: git://gist.github.com/17932.git
Embed All Files: show embed
expandTinyURL.js #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// Copyright (c) 2008 Zachary Voase
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
 
function previewTinyURL (previewBlock, tinyURL) {
    jQuery.ajax({
        type: "GET",
        url: "http://utilitymill.com/api/xml/utility/ResolveTinyURL/9/run",
        data: "tinyurl=" + escape(tinyURL),
        dataType: "xml",
        success: function (data) {
            q = jQuery(data);
            expandedURL = q.find("output:first").text();
            if (expandedURL.substring(0, 9).toLowerCase() == 'traceback') {
                previewBlock.innerHTML = "";
            } else {
                previewBlock.innerHTML = "Expand " + tinyURL + " to " + expandedURL;
            }
        }
    });
}
 
function executeTinyURL (tinyURL) {
    jQuery.ajax({
        type: "GET",
        url: "http://utilitymill.com/api/xml/utility/ResolveTinyURL/3/run",
        data: "tinyurl=" + escape(tinyURL),
        dataType: "xml",
        success: function (data) {
            q = jQuery(data);
            expandedURL = q.find("output:first").text();
            if (expandedURL.substring(0, 9).toLowerCase() == 'traceback') {
                displayMessage("Not a valid URL shortening service.");
            } else {
                CmdUtils.setSelection(
                    CmdUtils.renderTemplate(
                        '<a href="${expandedURL}">${expandedURL}</a>',
                        {expandedURL: expandedURL}));
            }
        }
    });
}
 
CmdUtils.CreateCommand({
    name: "untiny",
    description: "Resolve a shortened URL (i.e. via TinyURL, bit.ly, etc.) to its full address.",
    homepage: "http://bit.ly/2KLsw9",
    author: {name: "Zachary Voase", email: "zack@biga.mp"},
    license: "MIT License",
    help: "If you have selected a shortened URL then it will expand it in-place, replacing it with the full URL as a link.",
    takes: {tinyURL: noun_arb_text},
    preview: function (previewBlock, tinyURL) {
        if (tinyURL.text.length == 0) {
            previewTinyURL(previewBlock, CmdUtils.getSelection());
        } else {
            previewTinyURL(previewBlock, tinyURL.text);
        }
    },
    execute: function (tinyURL) {
        if (tinyURL.text.length == 0) {
            executeTinyURL(CmdUtils.getSelection());
        } else {
            executeTinyURL(tinyURL.text);
        }
    },
});