From 1e77e4de80833cd22df3561a14e3568959791f75 Mon Sep 17 00:00:00 2001 From: Akamaru Date: Wed, 27 May 2015 18:56:46 +0200 Subject: [PATCH] new plugin qr_codes --- plugins/qr_codes.lua | 104 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 plugins/qr_codes.lua diff --git a/plugins/qr_codes.lua b/plugins/qr_codes.lua new file mode 100644 index 0000000..570a900 --- /dev/null +++ b/plugins/qr_codes.lua @@ -0,0 +1,104 @@ +--[[ +* qr plugin uses: +* - http://goqr.me/api/doc/create-qr-code/ +* psykomantis +]] + +function url_encode(str) + if (str) then + str = string.gsub (str, "\n", "\r\n") + str = string.gsub (str, "([^%w %-%_%.%~])", + function (c) return string.format ("%%%02X", string.byte(c)) end) + str = string.gsub (str, " ", "+") + end + return str +end + + +function get_hex(str) + if(string.match(str,"(red)") == "red") then + return "f00" + elseif(string.match(str,"(blue)") == "blue") then + return "00f" + elseif(string.match(str,"(green)") == "green") then + return "0f0" + elseif(string.match(str,"(yellow)") == "yellow") then + return "ff0" + elseif(string.match(str,"(purple)") == "purple") then + return "f0f" + elseif(string.match(str,"(white)") == "white") then + return "fff" + elseif(string.match(str,"(black)") == "black") then + return "000" + elseif(string.match(str,"(gray)") == "gray") then + return "ccc" + end + + return str +end + + + +do + +local function qr(msg, query) + + local receiver = get_receiver(msg) + + local http = require("socket.http") + local url = "http://api.qrserver.com/v1/create-qr-code/?" .. query .. "&size=600x600" --fixed size otherways it's low detailed + local response, code, headers = http.request(url) + + if code ~= 200 then + return "Oops! Error: " .. code + end + + if #response > 0 then + send_photo_from_url(receiver, url) + return + + end + return "Oops! Something strange happened :(" +end + + + +local function run(msg, matches) + + local query = "" + + if(#matches == 3) then + + local bgcolor = get_hex(matches[1]) + local color = get_hex(matches[2]) + local data = url_encode(matches[3]:trim()) + + query = "data=" .. data .. "&color=" .. color .. "&bgcolor=" .. bgcolor + + return qr(msg, query) + + end + + query = "data=" .. url_encode(matches[1]:trim()) + + return qr(msg, query) +end + +return { + description = {"qr code plugin for telegram, given a text it returns the qr code"}, + usage = { + "/qr [text]", + '/qr "[background color]" "[data color]" [text]', + ".......................................................", + "Color through text: red|green|blue|purple|black|white|gray", + "Or colors through hex notation: (\"a56729\" is brown)", + "Or colors through decimals: (\"255-192-203\" is pink)" + }, + patterns = { + '^/qr "(.+)" "(.+)" (.+)$', + "^/qr (.+)$" + }, + run = run +} + +end