aboutsummaryrefslogtreecommitdiff
path: root/vimperator.dot.link/plugin/scuttle.js
blob: 8ce21780df4aeee1c5457fa53f7bfac445a8f0e0 (plain)
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
// Vimperator Plugin: 'Scuttle' based on 'Delicious' plugin by Travis Jeffery
// License: MIT
// Maintainer: Silvio Rhatto <rhatto@riseup.net>
// Usage: Use :scuttle "description in quotes (optional)" <tags delimited by commas> command
// Usage: if successfully posted you will see "done" echoed
// See: https://github.com/SciDevs/delicious-api
//
// The MIT License (MIT)
//
// Copyright (c) 2009-2015 Travis Jeffery, Silvio Rhatto
//
// 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.

commands.addUserCommand(['scuttle'], "Save page as a bookmark on Scuttle",
    function(args) {
        var url = "https://links.sarava.org/api/posts/add?";
        url += "&url=" + encodeURIComponent(buffer.URL);
        url += "&description=" + encodeURIComponent(buffer.title);
        var re = new RegExp(/"([^"]+)"/);
        var ext = args.string.match(re);
        if (ext) {
            tags = args.string.substr(ext[0].length).replace(/,,/g, ';').replace(/,/g, ' ').replace(/;/g, ', ').replace(/%2C/g, ',');
            url += "&extended=" + encodeURIComponent(ext[1]);
            url += tags;
        } else {
            tags = "&tags=" + encodeURIComponent(args.toString().replace(/,,/g, ';').replace(/,/g, ' ').replace(/;/g, ', ')).replace(/%2C/g, ',');
            url += tags;
        }

        var xhr = new XMLHttpRequest();
        xhr.open("POST", url, false);
        xhr.send(null);
        var xml = (new DOMParser()).parseFromString(xhr.responseText, "text/xml");
        var status = xml.getElementsByTagName('result')[0].getAttribute('code');

        liberator.echo(status);
    }
);