2222import static org .schabi .newpipe .extractor .services .youtube .YoutubeParsingHelper .isWebEmbeddedPlayerStreamingUrl ;
2323import static java .lang .Math .min ;
2424
25+ import android .content .Context ;
2526import android .net .Uri ;
2627
2728import androidx .annotation .NonNull ;
4748import com .google .common .net .HttpHeaders ;
4849
4950import org .schabi .newpipe .DownloaderImpl ;
51+ import org .schabi .newpipe .settings .ProxyManager ;
5052
5153import java .io .IOException ;
5254import java .io .InputStream ;
5658import java .net .HttpURLConnection ;
5759import java .net .MalformedURLException ;
5860import java .net .NoRouteToHostException ;
61+ import java .net .Proxy ;
5962import java .net .URL ;
6063import java .util .HashMap ;
6164import java .util .List ;
@@ -86,6 +89,7 @@ public final class YoutubeHttpDataSource extends BaseDataSource implements HttpD
8689 */
8790 public static final class Factory implements HttpDataSource .Factory {
8891
92+ private final Context context ;
8993 private final RequestProperties defaultRequestProperties ;
9094
9195 @ Nullable
@@ -102,8 +106,10 @@ public static final class Factory implements HttpDataSource.Factory {
102106
103107 /**
104108 * Creates an instance.
109+ * @param context the context to use
105110 */
106- public Factory () {
111+ public Factory (final Context context ) {
112+ this .context = context ;
107113 defaultRequestProperties = new RequestProperties ();
108114 connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MILLIS ;
109115 readTimeoutMs = DEFAULT_READ_TIMEOUT_MILLIS ;
@@ -222,7 +228,6 @@ public Factory setContentTypePredicate(
222228 * <p>The default is {@code null}.
223229 *
224230 * <p>See {@link DataSource#addTransferListener(TransferListener)}.
225- *
226231 * @param transferListenerToUse The listener that will be used.
227232 * @return This factory.
228233 */
@@ -249,6 +254,7 @@ public Factory setKeepPostFor302Redirects(final boolean keepPostFor302RedirectsV
249254 @ Override
250255 public YoutubeHttpDataSource createDataSource () {
251256 final YoutubeHttpDataSource dataSource = new YoutubeHttpDataSource (
257+ context ,
252258 connectTimeoutMs ,
253259 readTimeoutMs ,
254260 allowCrossProtocolRedirects ,
@@ -274,6 +280,7 @@ public YoutubeHttpDataSource createDataSource() {
274280 private static final String YOUTUBE_BASE_URL = "https://www.youtube.com" ;
275281 private static final byte [] POST_BODY = new byte [] {0x78 , 0 };
276282
283+ private final Context context ;
277284 private final boolean allowCrossProtocolRedirects ;
278285 private final boolean rangeParameterEnabled ;
279286 private final boolean rnParameterEnabled ;
@@ -301,7 +308,8 @@ public YoutubeHttpDataSource createDataSource() {
301308 private long requestNumber ;
302309
303310 @ SuppressWarnings ("checkstyle:ParameterNumber" )
304- private YoutubeHttpDataSource (final int connectTimeoutMillis ,
311+ private YoutubeHttpDataSource (final Context context ,
312+ final int connectTimeoutMillis ,
305313 final int readTimeoutMillis ,
306314 final boolean allowCrossProtocolRedirects ,
307315 final boolean rangeParameterEnabled ,
@@ -310,6 +318,7 @@ private YoutubeHttpDataSource(final int connectTimeoutMillis,
310318 @ Nullable final Predicate <String > contentTypePredicate ,
311319 final boolean keepPostFor302Redirects ) {
312320 super (true );
321+ this .context = context ;
313322 this .connectTimeoutMillis = connectTimeoutMillis ;
314323 this .readTimeoutMillis = readTimeoutMillis ;
315324 this .allowCrossProtocolRedirects = allowCrossProtocolRedirects ;
@@ -716,6 +725,11 @@ private HttpURLConnection makeConnection(
716725 * @return an {@link HttpURLConnection} created with the {@code url}
717726 */
718727 private HttpURLConnection openConnection (@ NonNull final URL url ) throws IOException {
728+ final ProxyManager proxyManager = new ProxyManager (context );
729+ final Proxy proxy = proxyManager .getProxy ();
730+ if (proxy != null ) {
731+ return (HttpURLConnection ) url .openConnection (proxy );
732+ }
719733 return (HttpURLConnection ) url .openConnection ();
720734 }
721735
@@ -1014,4 +1028,3 @@ public int hashCode() {
10141028 }
10151029 }
10161030}
1017-
0 commit comments