Skip to content

Commit

Permalink
Some loops and sessions
Browse files Browse the repository at this point in the history
  • Loading branch information
AndyTempel committed May 6, 2018
1 parent c416f4c commit fc4c033
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 55 deletions.
4 changes: 2 additions & 2 deletions weebapi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
__author__ = 'AndyTempel'
__license__ = 'MIT'
__copyright__ = 'Copyright 2018 AndyTempel'
__version__ = '0.1.11b'
__version__ = '0.1.12b'

import logging
from collections import namedtuple
Expand All @@ -18,7 +18,7 @@

VersionInfo = namedtuple('VersionInfo', 'major minor micro releaselevel serial')

version_info = VersionInfo(major=0, minor=1, micro=11, releaselevel='beta', serial=0)
version_info = VersionInfo(major=0, minor=1, micro=12, releaselevel='beta', serial=0)

try:
from logging import NullHandler
Expand Down
15 changes: 7 additions & 8 deletions weebapi/client.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
import asyncio
import logging

from .data_objects import *
Expand Down Expand Up @@ -38,10 +39,6 @@ class Client:
*Not required.*
Use v2 API.
**Default:** False
check_ssl: bool[Optional]
*Not required.*
Enable SSL certificate verification.
**Default:** True
**base_url: str[Optional]
*Not required.*
Specify different DBL API url.
Expand All @@ -50,19 +47,21 @@ class Client:
Specify different base url.
**bot: Bot or AutoShardedBot
Your bot client from discord.py
**loop: asyncio loop
Your asyncio loop.
"""

def __init__(self, api_key: str, wolke_token: bool = True, check_ssl: bool = True, v2_api: bool = False,
base_url: str = BASE_URL, bot=None):
def __init__(self, api_key: str, wolke_token: bool = True, v2_api: bool = False,
base_url: str = BASE_URL, bot=None, loop=asyncio.get_event_loop()):
if v2_api is True:
base_url = BASE_URL_V2
self.api_key = api_key
self.check_ssl = check_ssl
self._loop = loop
self.route = Router(base_url)
self.request = krequest(global_headers=[
("Authorization", f"Wolke {self.api_key}" if wolke_token else f"Bearer {self.api_key}")
])
], loop=self._loop)
self.bot = bot
self.img_gen = ImgGen(self)

Expand Down
86 changes: 41 additions & 45 deletions weebapi/request_lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import traceback

import aiohttp
import asyncio

from weebapi import __version__
from .errors import *
Expand All @@ -13,8 +14,10 @@


class krequest(object):
def __init__(self, return_json=True, global_headers={}, **kwargs):
def __init__(self, return_json=True, global_headers={}, loop=asyncio.get_event_loop(), **kwargs):
self.bot = kwargs.get("bot", None)
self.loop = loop
self.session = aiohttp.ClientSession(loop=self.loop)
self.headers = {
"User-Agent": "{}WeebAPI.py/{} (Github: AndyTempel) KRequests/alpha "
"(Custom asynchronous HTTP client)".format(
Expand Down Expand Up @@ -52,33 +55,55 @@ async def _proc_resp(self, response):
async def get(self, url, params=None, headers=None, verify=True):
headers = headers or {}
headers.update(self.headers)
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
async with session.get(url, params=params, headers=headers) as resp:
return await self._proc_resp(resp)
async with self.session.get(url, params=params, headers=headers) as resp:
return await self._proc_resp(resp)

async def delete(self, url, params=None, headers=None, verify=True):
headers = headers or {}
headers.update(self.headers)
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
async with session.delete(url, params=params, headers=headers) as resp:
return await self._proc_resp(resp)
async with self.session.delete(url, params=params, headers=headers) as resp:
return await self._proc_resp(resp)

async def post(self, url, data=None, json=None, headers=None, verify=True):
headers = headers or {}
headers.update(self.headers)
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
if json is not None:
async with session.post(url, json=json, headers=headers) as resp:
return await self._proc_resp(resp)
else:
async with session.post(url, data=data, headers=headers) as resp:
return await self._proc_resp(resp)
if json is not None:
async with self.session.post(url, json=json, headers=headers) as resp:
return await self._proc_resp(resp)
else:
async with self.session.post(url, data=data, headers=headers) as resp:
return await self._proc_resp(resp)

async def download_get(self, url, filename, params=None, headers=None, verify=True):
headers = headers or {}
headers.update(self.headers)
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
async with session.get(url, params=params, headers=headers) as response:
async with self.session.get(url, params=params, headers=headers) as response:
if response.status != 200:
raise Forbidden
with open(filename, 'wb') as f_handle:
while True:
chunk = await response.content.read(1024)
if not chunk:
break
f_handle.write(chunk)
await response.release()

async def download_post(self, url, filename, data=None, json=None, headers=None, verify=True):
headers = headers or {}
headers.update(self.headers)
if json is not None:
async with self.session.post(url, json=json, headers=headers) as response:
if response.status != 200:
raise Forbidden
with open(filename, 'wb') as f_handle:
while True:
chunk = await response.content.read(1024)
if not chunk:
break
f_handle.write(chunk)
await response.release()
else:
async with self.session.post(url, data=data, headers=headers) as response:
if response.status != 200:
raise Forbidden
with open(filename, 'wb') as f_handle:
Expand All @@ -88,32 +113,3 @@ async def download_get(self, url, filename, params=None, headers=None, verify=Tr
break
f_handle.write(chunk)
await response.release()

async def download_post(self, url, filename, data=None, json=None, headers=None, verify=True):
headers = headers or {}
headers.update(self.headers)
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
if json is not None:
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
async with session.post(url, json=json, headers=headers) as response:
if response.status != 200:
raise Forbidden
with open(filename, 'wb') as f_handle:
while True:
chunk = await response.content.read(1024)
if not chunk:
break
f_handle.write(chunk)
await response.release()
else:
async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=verify)) as session:
async with session.post(url, data=data, headers=headers) as response:
if response.status != 200:
raise Forbidden
with open(filename, 'wb') as f_handle:
while True:
chunk = await response.content.read(1024)
if not chunk:
break
f_handle.write(chunk)
await response.release()

0 comments on commit fc4c033

Please sign in to comment.