mcbot/cmds/mcabber_bts.lua
author Mikael Berthe <mikael@lilotux.net>
Thu, 15 Apr 2010 06:56:28 +0200
changeset 14 5c3ef7c5ba6c
parent 13 4a7d06e8709f
child 16 064a50911e05
permissions -rw-r--r--
Handle some more HTML tags in mcabber_bts
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     1
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     2
require "libs.shcmd"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     3
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     4
local function get_issue_details (num)
8
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
     5
    local item
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
     6
6
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     7
    num = tonumber(num);
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
    if not num then return nil end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     9
    local issue = {}
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    10
    local btsurl = "http://bitbucket.org/McKael/mcabber-crew/issue/"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    11
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    12
    issue.id = tostring(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    13
    issue.url = btsurl..issue.id.."/"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    14
    local data = shcmd("curl "..issue.url)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    15
    local title = data:match("#"..issue.id.."%s*-%s*(.*)%s*&mdash;")
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
    if not title then return nil end
12
6428c88dc58a On more small update of mcabber_bts (&amp;)
Mikael Berthe <mikael@lilotux.net>
parents: 10
diff changeset
    17
    issue.title = title:gsub("&quot;", "\""):gsub("&amp;", "&")
14
5c3ef7c5ba6c Handle some more HTML tags in mcabber_bts
Mikael Berthe <mikael@lilotux.net>
parents: 13
diff changeset
    18
    issue.title = issue.title:gsub("&lt;", "<"):gsub("&gt;", ">")
13
4a7d06e8709f Fix previous commit :)
Mikael Berthe <mikael@lilotux.net>
parents: 12
diff changeset
    19
    issue.title = issue.title:gsub("&#39;", "'")
8
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    20
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    21
    -- Get Status
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    22
    item = data:match("Status:%s*</td>%s*<td [^>]*>(.-)</td>")
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    23
    if item then issue.status = item end
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    24
    -- Get Type
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    25
    item = data:match("Type:%s*</td>%s*<td [^>]*>(.-)</td>")
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    26
    if item then issue.type = item end
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    27
6
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    28
    return issue
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    29
end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    30
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    31
local function mcabber_bts (num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    32
    -- Check that xepnum is a valid number
7
c515e8218c87 Small optimization
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
    33
    if num then num = num:gsub("[%s%?%.%!]+$", "") end
c515e8218c87 Small optimization
Mikael Berthe <mikael@lilotux.net>
parents: 6
diff changeset
    34
    num = tonumber(num)
6
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    35
    if not num or num < 1 then
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    36
        return nil, "Please provide an issue number"
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    37
    end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    38
    local issue = get_issue_details(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    39
    if not issue then
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    40
        return nil,"Sorry, couldn't find issue "..tostring(num)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    41
    end
8
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    42
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    43
    local result = "Issue #"..issue.id.." -- "..issue.title.."\n"
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    44
    if issue.status then
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    45
        result = result .. "Status: " .. issue.status .. "\n"
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    46
    end
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    47
    if issue.type then
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    48
        result = result .. "Type: " .. issue.type .. "\n"
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    49
    end
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    50
    return result .. "URL: <"..tostring(issue.url)..">"
6
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    51
end
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    52
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
mcbot_register_command("bts", mcabber_bts)
7cf014d0d206 Add command bts/bug (mcabber_bts)
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    54
mcbot_register_command("bug", mcabber_bts)
8
db84d97cf13d Improve mcabber_bts (display status and type)
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    55
mcbot_register_command("issue", mcabber_bts)