Merge Upstream

This commit is contained in:
Andreas Bielawski
2016-08-28 00:13:27 +02:00
4 changed files with 89 additions and 10 deletions

View File

@@ -22,11 +22,11 @@
local bindings = {}
local HTTPS = require('ssl.https')
HTTPS.timeout = 10
local JSON = require('dkjson')
local https = require('ssl.https')
https.timeout = 10
local json = require('dkjson')
local ltn12 = require('ltn12')
local MP_ENCODE = require('multipart-post').encode
local mp_encode = require('multipart-post').encode
function bindings.init(token)
bindings.BASE_URL = 'https://api.telegram.org/bot' .. token .. '/'
@@ -65,8 +65,8 @@ function bindings.request(method, parameters, file)
parameters = {''}
end
local response = {}
local body, boundary = MP_ENCODE(parameters)
local success, code = HTTPS.request{
local body, boundary = mp_encode(parameters)
local success, code = https.request{
url = bindings.BASE_URL .. method,
method = 'POST',
headers = {
@@ -81,7 +81,7 @@ function bindings.request(method, parameters, file)
print(method .. ': Connection error. [' .. code .. ']')
return false, false
else
local result = JSON.decode(data)
local result = json.decode(data)
if not result then
return false, false
elseif result.ok then

View File

@@ -59,7 +59,7 @@ function cats:inline_callback(inline_query, config, matches)
utilities.answer_inline_query(inline_query, results, 30)
end
function cats:action(msg, config)
function cats:action(msg, config, matches)
if matches[1] == 'gif' then
local url = 'http://thecatapi.com/api/images/get?type=gif&apikey='..apikey
local file = download_to_file(url, 'miau.gif')

View File

@@ -451,6 +451,15 @@ function utilities.save_data(filename, data)
f:close()
end
-- Returns file size as Integer
-- See: https://www.lua.org/pil/21.3.html
function get_file_size(file)
local current = file:seek() -- get current position
local size = file:seek("end") -- get file size
file:seek("set", current) -- restore position
return tonumber(size)
end
-- Gets coordinates for a location. Used by gMaps.lua, time.lua, weather.lua.
function utilities.get_coords(input, config)
local url = 'https://maps.googleapis.com/maps/api/geocode/json?address='..URL.escape(input)..'&language=de'
@@ -724,6 +733,10 @@ function is_service_msg(msg)
return var
end
-- Make a POST request
-- URL = obvious
-- Arguments = Things, that go into the body. If sending a file, use 'io.open('path/to/file', "r")'
-- Headers = Header table. If not set, we will set a few!
function post_petition(url, arguments, headers)
local url, h = string.gsub(url, "http://", "")
local url, hs = string.gsub(url, "https://", "")
@@ -750,8 +763,13 @@ function post_petition(url, arguments, headers)
request_constructor.headers["X-Accept"] = "application/json"
request_constructor.headers["Accept"] = "application/json"
end
request_constructor.headers["Content-Length"] = tostring(#source)
request_constructor.source = ltn12.source.string(source)
if type(arguments) == 'userdata' then
request_constructor.headers["Content-Length"] = get_file_size(source)
request_constructor.source = ltn12.source.file(source)
else
request_constructor.headers["Content-Length"] = tostring(#source)
request_constructor.source = ltn12.source.string(source)
end
if post_prot == "http" then
ok, response_code, response_headers, response_status_line = http.request(request_constructor)