Source code for onlinejudge_template.network

"""
the module to access networks

この module はネットワークアクセスを行い、問題の HTML やサンプルケースを取得します。
"""

from logging import getLogger
from typing import *

import requests

import onlinejudge
import onlinejudge.utils
from onlinejudge_template.types import *

logger = getLogger(__name__)


[docs]def download_html(url: str, *, session: Optional[requests.Session] = None) -> bytes: session = session or onlinejudge.utils.get_default_session() resp = session.get(url) logger.debug('HTTP response: %s', resp) resp.raise_for_status() return resp.content
[docs]def download_sample_cases(url: str, *, session: Optional[requests.Session] = None) -> Optional[List[SampleCase]]: session = session or onlinejudge.utils.get_default_session() try: problem = onlinejudge.dispatch.problem_from_url(url) assert problem is not None sample_cases = problem.download_sample_cases(session=session) return [SampleCase(input=case.input_data, output=case.output_data) for case in sample_cases] except Exception as e: logger.error('downloading sample cases failed: %s', e) return None