mirror of https://github.com/ekimekim/wubloader
Merge pull request #163 from ekimekim/mike/api-ping
api_ping: A simple util for hitting google apis to prevent inactivitypull/174/head
commit
dea143cc0a
@ -0,0 +1,17 @@
|
||||
FROM alpine:3.7
|
||||
# dependencies needed for compiling c extensions
|
||||
# also busybox-extras for telnet for easier use of backdoor
|
||||
RUN apk --update add py2-pip gcc python-dev musl-dev busybox-extras
|
||||
|
||||
# Install gevent so that we don't need to re-install it when common changes
|
||||
RUN pip install gevent
|
||||
|
||||
# Install common lib first as it changes less
|
||||
COPY common /tmp/common
|
||||
RUN pip install /tmp/common && rm -r /tmp/common
|
||||
|
||||
# Install actual application
|
||||
COPY api_ping /tmp/api_ping
|
||||
RUN pip install /tmp/api_ping && rm -r /tmp/api_ping
|
||||
|
||||
ENTRYPOINT ["python2", "-m", "api_ping"]
|
@ -0,0 +1,16 @@
|
||||
|
||||
import gevent.monkey
|
||||
gevent.monkey.patch_all()
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import argh
|
||||
|
||||
from api_ping.main import main
|
||||
|
||||
LOG_FORMAT = "[%(asctime)s] %(levelname)8s %(name)s(%(module)s:%(lineno)d): %(message)s"
|
||||
|
||||
level = os.environ.get('WUBLOADER_LOG_LEVEL', 'INFO').upper()
|
||||
logging.basicConfig(level=level, format=LOG_FORMAT)
|
||||
argh.dispatch_command(main)
|
@ -0,0 +1,49 @@
|
||||
|
||||
import json
|
||||
|
||||
from common.googleapis import GoogleAPIClient
|
||||
|
||||
# Youtube video to look up (look at this graph)
|
||||
YOUTUBE_VIDEO_ID = 'sIlNIVXpIns'
|
||||
|
||||
# Sheet id to look up (DB2019 public sheet)
|
||||
SHEET_ID = '15t-UsfNlP5xUxLTLH-EUjrOYriOvXuNGAPxi_8EZJhU'
|
||||
|
||||
|
||||
def youtube(client):
|
||||
client.request('GET', 'https://www.googleapis.com/youtube/v3/videos',
|
||||
params={'part': 'id', 'id': YOUTUBE_VIDEO_ID},
|
||||
).raise_for_status()
|
||||
|
||||
|
||||
def sheets(client):
|
||||
client.request('GET',
|
||||
'https://sheets.googleapis.com/v4/spreadsheets/{}/values/A1'.format(SHEET_ID),
|
||||
).raise_for_status()
|
||||
|
||||
|
||||
ACTIONS = {
|
||||
'youtube': youtube,
|
||||
'sheets': sheets,
|
||||
}
|
||||
|
||||
|
||||
def main(
|
||||
*targets
|
||||
):
|
||||
"""Does an action on the given google api targets, preventing issues due to api inactivity.
|
||||
A target should consist of a comma-seperated list of apis to hit, then a colon, then a creds file.
|
||||
eg. "sheets,youtube:my_creds.json".
|
||||
"""
|
||||
for target in targets:
|
||||
if ':' not in target:
|
||||
raise ValueError("Bad target: {!r}".format(target))
|
||||
apis, credfile = target.split(':', 1)
|
||||
apis = apis.split(',')
|
||||
with open(credfile) as f:
|
||||
creds = json.load(f)
|
||||
client = GoogleAPIClient(creds['client_id'], creds['client_secret'], creds['refresh_token'])
|
||||
for api in apis:
|
||||
if api not in ACTIONS:
|
||||
raise ValueError("No such api {!r}".format(api))
|
||||
ACTIONS[api](client)
|
@ -0,0 +1,12 @@
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name = "wubloader-api-ping",
|
||||
version = "0.0.0",
|
||||
packages = find_packages(),
|
||||
install_requires = [
|
||||
"argh",
|
||||
"requests",
|
||||
"wubloader-common",
|
||||
],
|
||||
)
|
Loading…
Reference in New Issue