Ejemplo n.º 1
0
async def register_user(client: AsyncClient, email: EmailStr,
                        password: SecretStr):
    path = "/auth/register"
    await client.post(
        path,
        json={
            "email": email,
            "password": password.get_secret_value(),
            "confirm": password.get_secret_value(),
            "invitation": "",
        },
    )
Ejemplo n.º 2
0
class TwitterCredentials(BaseSettings):
    bearer_token: Optional[SecretStr] = Field(None, env="twitter_bearer_token")
    consumer_key: Optional[SecretStr] = Field(None, env="twitter_consumer_key")
    consumer_secret: Optional[SecretStr] = Field(None,
                                                 env="twitter_consumer_secret")
    endpoint: str = Field("https://api.twitter.com/2/tweets/search/recent",
                          env="twitter_endpoint")
    extra_headers_dict: Optional[Dict[str, Any]] = None

    def __init__(self, **data: Any):
        super().__init__(**data)
        if self.bearer_token is None:
            if self.consumer_key is None and self.consumer_secret is None:
                raise AttributeError(
                    "consumer_key and consumer_secret required to generate bearer_token via Twitter"
                )

            self.bearer_token = SecretStr(self.generate_bearer_token())

    def get_twitter_credentials(self):
        if self.bearer_token is None:
            self.bearer_token = self.generate_bearer_token()

        return {
            "bearer_token": self.bearer_token.get_secret_value(),
            "endpoint": self.endpoint,
            "extra_headers_dict": self.extra_headers_dict,
        }

    # Copied from Twitter searchtweets-v2 lib
    def generate_bearer_token(self):
        """
        Return the bearer token for a given pair of consumer key and secret values.
        """
        data = [("grant_type", "client_credentials")]
        resp = requests.post(
            TWITTER_OAUTH_ENDPOINT,
            data=data,
            auth=(
                self.consumer_key.get_secret_value(),
                self.consumer_secret.get_secret_value(),
            ),
        )
        logger.warning("Grabbing bearer token from OAUTH")
        if resp.status_code >= 400:
            logger.error(resp.text)
            resp.raise_for_status()

        return resp.json()["access_token"]

    class Config:
        arbitrary_types_allowed = True
Ejemplo n.º 3
0
async def login_user(client: AsyncClient, email: EmailStr, password: SecretStr):
    typer.secho(
        f"loging user {email}",
    )
    path = "/auth/login"
    r = await client.post(
        path, json={"email": email, "password": password.get_secret_value()}
    )
    r.raise_for_status()
    typer.secho(
        f"user {email} logged in",
        fg=typer.colors.YELLOW,
    )