def METHOD_NAME(self, slug, js_data):
    token_data = {
        "token": self.cache.get("token"),
        "token_type": self.cache.get("token_type"),
    }
    if token_data["token"] and token_data["token_type"]:
        log.debug("Using cached token")
    else:
        log.debug("Getting new token")
        res = self.session.http.post(
            self.login_url,
            json=js_data["credentials"],
        )
        token_data = self.session.http.json(res, schema=self.token_schema)
        log.debug(f'Token={token_data["token"]}')
        self.cache.set("token", token_data["token"], expires=token_data["expires_in"])
        self.cache.set("token_type", token_data["token_type"], expires=token_data["expires_in"])
    headers = {"Authorization": f'{token_data["token_type"]} {token_data["token"]}'}
    data = {
        "slug": slug,
        "type": js_data["type"],
    }
    res = self.session.http.post(
        self.stream_url,
        headers=headers,
        json=data,
    )
    encrypted_data = self.session.http.json(
        res,
        schema=self.encrypted_data_schema,
    )
    stream_data = parse_json(
        self.decrypt_data(js_data["cipher_data"], encrypted_data),
        schema=self.stream_schema,
    )
    self.author = stream_data["channel_name"]
    self.category = stream_data["genres"]
    self.title = stream_data["meta_title"]
    return stream_data["live_stream_url"]