mirror of
https://github.com/SpiceBot/SpiceBot.git
synced 2026-11-10 21:50:59 -05:00
test
This commit is contained in:
parent
731dca8858
commit
cf69d2c345
56
sopel_modules/SpiceBot_Core_Tools/HTTP_Codes.py
Normal file
56
sopel_modules/SpiceBot_Core_Tools/HTTP_Codes.py
Normal file
@ -0,0 +1,56 @@
|
||||
# coding=utf8
|
||||
from __future__ import unicode_literals, absolute_import, division, print_function
|
||||
|
||||
# sopel imports
|
||||
import sopel.module
|
||||
|
||||
from sopel_modules.spicemanip import spicemanip
|
||||
|
||||
import sopel_modules.SpiceBot as SpiceBot
|
||||
|
||||
import re
|
||||
import requests
|
||||
import bleach
|
||||
from lxml import etree
|
||||
|
||||
api_url = 'https://httpstatuses.com/%s'
|
||||
|
||||
|
||||
@SpiceBot.prerun('module')
|
||||
@sopel.module.commands('httpcode')
|
||||
def bot_command_http_codes(bot, trigger, botcom):
|
||||
|
||||
query = spicemanip(botcom.dict["args"], 1) or None
|
||||
if not query:
|
||||
return bot.osd("You must provide a HTTP status code to look up.")
|
||||
result = fetch_result(query)
|
||||
|
||||
bot.osd(["[HTTP code search for " + str(query) + "]", result])
|
||||
|
||||
|
||||
def fetch_result(query):
|
||||
|
||||
if not re.match('^[1-5]\d{2}$', query):
|
||||
return "Invalid HTTP status code: %s" % query
|
||||
url = api_url % query
|
||||
try:
|
||||
r = requests.get(url=url, timeout=(10.0, 4.0))
|
||||
except requests.exceptions.ConnectTimeout:
|
||||
return "Connection timed out."
|
||||
except requests.exceptions.ConnectionError:
|
||||
return "Couldn't connect to server."
|
||||
except requests.exceptions.ReadTimeout:
|
||||
return "Server took too long to send data."
|
||||
if r.status_code == 404:
|
||||
return "Unknown HTTP status code: %s" % query
|
||||
try:
|
||||
r.raise_for_status()
|
||||
except requests.exceptions.HTTPError as e:
|
||||
return "HTTP error: " + e.message
|
||||
|
||||
page = etree.HTML(r.content)
|
||||
title = bleach.clean(etree.tostring(page.xpath('/html/body/article/h1[1]')[0]), tags=[], strip=True)
|
||||
summary = bleach.clean(
|
||||
re.sub('<a href="#ref-\d+">.*?<\/a>', '', etree.tostring(page.xpath('/html/body/article/p[1]')[0])), tags=[],
|
||||
strip=True)
|
||||
return "{title}: {summary} — {link}".format(title=title, summary=summary, link=url)
|
||||
Loading…
Reference in New Issue
Block a user