Skip to content

Commit 94541d2

Browse files
AudricVStypox
authored andcommitted
[YouTube] Add utility data class to store client and device info
This new class, InnertubeClientRequestInfo, composed of two mutable subclasses, ClientInfo and DeviceInfo, allows to store client and device info in a better way, without requiring to pass more than 10 method parameters like in YoutubeStreamHelper currently. Mutability has been added in order to allow changing some fields easily, especially visitorData.
1 parent 9333d7f commit 94541d2

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.schabi.newpipe.extractor.services.youtube;
2+
3+
import javax.annotation.Nonnull;
4+
import javax.annotation.Nullable;
5+
6+
public final class InnertubeClientRequestInfo {
7+
8+
@Nonnull
9+
public ClientInfo clientInfo;
10+
@Nonnull
11+
public DeviceInfo deviceInfo;
12+
13+
public static final class ClientInfo {
14+
15+
@Nonnull
16+
public String clientName;
17+
@Nonnull
18+
public String clientVersion;
19+
@Nonnull
20+
public String clientScreen;
21+
@Nullable
22+
public String clientId;
23+
@Nullable
24+
public String visitorData;
25+
26+
public ClientInfo(@Nonnull final String clientName,
27+
@Nonnull final String clientVersion,
28+
@Nonnull final String clientScreen,
29+
@Nullable final String clientId,
30+
@Nullable final String visitorData) {
31+
this.clientName = clientName;
32+
this.clientVersion = clientVersion;
33+
this.clientScreen = clientScreen;
34+
this.clientId = clientId;
35+
this.visitorData = visitorData;
36+
}
37+
}
38+
39+
public static final class DeviceInfo {
40+
41+
@Nonnull
42+
public String platform;
43+
@Nullable
44+
public String deviceMake;
45+
@Nullable
46+
public String deviceModel;
47+
@Nullable
48+
public String osName;
49+
@Nullable
50+
public String osVersion;
51+
public int androidSdkVersion;
52+
53+
public DeviceInfo(@Nonnull final String platform,
54+
@Nullable final String deviceMake,
55+
@Nullable final String deviceModel,
56+
@Nullable final String osName,
57+
@Nullable final String osVersion,
58+
final int androidSdkVersion) {
59+
this.platform = platform;
60+
this.deviceMake = deviceMake;
61+
this.deviceModel = deviceModel;
62+
this.osName = osName;
63+
this.osVersion = osVersion;
64+
this.androidSdkVersion = androidSdkVersion;
65+
}
66+
}
67+
68+
public InnertubeClientRequestInfo(@Nonnull final ClientInfo clientInfo,
69+
@Nonnull final DeviceInfo deviceInfo) {
70+
this.clientInfo = clientInfo;
71+
this.deviceInfo = deviceInfo;
72+
}
73+
}

0 commit comments

Comments
 (0)