Skip to content

Commit

Permalink
✨ Support Request Proxying (#35)
Browse files Browse the repository at this point in the history
  • Loading branch information
tombulled authored Aug 5, 2022
1 parent cbb2b25 commit db6c919
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 194 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,6 @@ tst.*.py
_.*.py
_.*/
.ignore/

# Visual Studio Code
.vscode/
103 changes: 0 additions & 103 deletions examples/parsing.py

This file was deleted.

13 changes: 8 additions & 5 deletions innertube/adaptor.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from dataclasses import dataclass, field
from typing import Optional

from httpx import Client, Request, Response
Expand All @@ -9,12 +8,16 @@
from .models import ClientContext


@dataclass
class InnerTubeAdaptor:
context: ClientContext
session: Client = field(
default_factory=lambda: Client(base_url=config.base_url), repr=False
)
session: Client

def __init__(self, context: ClientContext, session: Optional[Client] = None) -> None:
self.context = context
self.session = session or Client(base_url=config.base_url)

def __repr__(self) -> str:
return f"{type(self).__name__}(context={self.context!r})"

def _build_request(
self, endpoint: str, params: Optional[dict] = None, body: Optional[dict] = None
Expand Down
20 changes: 14 additions & 6 deletions innertube/clients.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
from dataclasses import dataclass, field
import dataclasses
from typing import List, Optional

import httpx
import mediate
from httpx._types import ProxiesTypes

from . import api, utils
from .adaptor import InnerTubeAdaptor
from .config import config
from .enums import Endpoint
from .models import ClientContext, Locale
from .protocols import Adaptor


@dataclass
@dataclasses.dataclass
class Client:
adaptor: Adaptor

middleware: mediate.Middleware = field(
middleware: mediate.Middleware = dataclasses.field(
default_factory=mediate.Middleware, repr=False, init=False
)

Expand All @@ -35,7 +37,7 @@ def process(data: dict, /) -> dict:
return response


@dataclass(init=False)
@dataclasses.dataclass(init=False)
class InnerTube(Client):
def __init__(
self,
Expand All @@ -47,7 +49,8 @@ def __init__(
referer: Optional[str] = None,
locale: Optional[Locale] = None,
auto: bool = True,
):
proxies: ProxiesTypes = None,
) -> None:
if client_name is None:
raise ValueError("Precondition failed: Missing client name")

Expand All @@ -73,7 +76,12 @@ def __init__(

context = ClientContext(**kwargs)

super().__init__(adaptor=InnerTubeAdaptor(context))
super().__init__(
adaptor=InnerTubeAdaptor(
context=context,
session=httpx.Client(base_url=config.base_url, proxies=proxies),
)
)

def config(self) -> dict:
return self(Endpoint.CONFIG)
Expand Down
Loading

0 comments on commit db6c919

Please sign in to comment.