Skip to content

Commit f3fac65

Browse files
authored
Use GetUserIdFromLogin instead of ReportMenuItem (#1180)
## Pull Request Etiquette ### Checklist - [x] Tests have been added in relevant areas - [x] Corresponding changes made to the documentation (README.adoc) <!-- (if irrelevant check the box too) --> ### Type of change Bug fix <!-- Choose one from "Bug fix" / "New Feature" / "Breaking change" / "Internal change" --> ## Description <!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. --> ReportMenuItem seems to be gone, replace it with another query.
1 parent 3363783 commit f3fac65

13 files changed

Lines changed: 92 additions & 144 deletions

File tree

miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/GQLApi.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.joinraid.JoinRaidOperation;
2626
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.makeprediction.MakePredictionData;
2727
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.makeprediction.MakePredictionOperation;
28-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemData;
29-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemOperation;
28+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
29+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginOperation;
3030
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.setdropscommunityhighlighttohidden.SetDropsCommunityHighlightToHiddenData;
3131
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.setdropscommunityhighlighttohidden.SetDropsCommunityHighlightToHiddenOperation;
3232
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.FollowConnection;
@@ -72,8 +72,8 @@ public class GQLApi{
7272
private final IIntegrityProvider integrityProvider;
7373

7474
@NonNull
75-
public Optional<GQLResponse<ReportMenuItemData>> reportMenuItem(@NonNull String username){
76-
return postGqlRequest(new ReportMenuItemOperation(username));
75+
public Optional<GQLResponse<GetUserIdFromLoginData>> getUserIdFromLogin(@NonNull String username){
76+
return postGqlRequest(new GetUserIdFromLoginOperation(username));
7777
}
7878

7979
@NonNull

miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/reportmenuitem/ReportMenuItemData.java renamed to miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/reportmenuitem/GetUserIdFromLoginData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
@Builder
1717
@EqualsAndHashCode
1818
@ToString
19-
public class ReportMenuItemData{
19+
public class GetUserIdFromLoginData {
2020
@JsonProperty("user")
2121
@NonNull
2222
private User user;

miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/reportmenuitem/ReportMenuItemOperation.java renamed to miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/data/reportmenuitem/GetUserIdFromLoginOperation.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@
1010

1111
@EqualsAndHashCode(callSuper = true)
1212
@ToString
13-
public class ReportMenuItemOperation extends IGQLOperation<ReportMenuItemData>{
14-
public ReportMenuItemOperation(@NonNull String username){
15-
super("ReportMenuItem");
16-
addPersistedQueryExtension(new PersistedQueryExtension(1, "8f3628981255345ca5e5453dfd844efffb01d6413a9931498836e6268692a30c"));
17-
addVariable("channelLogin", username);
13+
public class GetUserIdFromLoginOperation extends IGQLOperation<GetUserIdFromLoginData>{
14+
public GetUserIdFromLoginOperation(@NonNull String username){
15+
super("GetUserIDFromLogin");
16+
addPersistedQueryExtension(new PersistedQueryExtension(1, "c8502d09d4f290bb5155e6953a2c3119d4296d7ce647a2e21d1cf4c805583e43"));
17+
addVariable("login", username);
18+
addVariable("lookupType", "ACTIVE");
1819
}
1920

2021
@Override
2122
@NonNull
22-
public GenericType<GQLResponse<ReportMenuItemData>> getResponseType(){
23+
public GenericType<GQLResponse<GetUserIdFromLoginData>> getResponseType(){
2324
return new GenericType<>(){};
2425
}
2526
}

miner/src/main/java/fr/rakambda/channelpointsminer/miner/api/passport/TwitchLogin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
88
import fr.rakambda.channelpointsminer.miner.api.gql.gql.GQLApi;
99
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.GQLResponse;
10-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemData;
10+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
1111
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User;
1212
import fr.rakambda.channelpointsminer.miner.util.json.CookieDeserializer;
1313
import fr.rakambda.channelpointsminer.miner.util.json.CookieSerializer;
@@ -72,9 +72,9 @@ public String fetchUserId(@NonNull GQLApi gqlApi){
7272
.findAny()
7373
.map(Cookie::getValue)
7474
.map(v -> v.split("%")[0])
75-
.or(() -> gqlApi.reportMenuItem(username)
75+
.or(() -> gqlApi.getUserIdFromLogin(username)
7676
.map(GQLResponse::getData)
77-
.map(ReportMenuItemData::getUser)
77+
.map(GetUserIdFromLoginData::getUser)
7878
.map(User::getId))
7979
.orElseThrow(() -> new IllegalStateException("Failed to get current user id"));
8080
}

miner/src/main/java/fr/rakambda/channelpointsminer/miner/runnable/StreamerConfigurationReload.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package fr.rakambda.channelpointsminer.miner.runnable;
22

33
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.GQLResponse;
4-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemData;
4+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
55
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User;
66
import fr.rakambda.channelpointsminer.miner.event.impl.StreamerUnknownEvent;
77
import fr.rakambda.channelpointsminer.miner.event.manager.IEventManager;
@@ -160,9 +160,9 @@ private Map<String, StreamerResult> getStreamersFromConfiguration(@NonNull Colle
160160

161161
@NonNull
162162
private Optional<String> getStreamerId(@NonNull String username) {
163-
var id = miner.getGqlApi().reportMenuItem(username)
163+
var id = miner.getGqlApi().getUserIdFromLogin(username)
164164
.map(GQLResponse::getData)
165-
.map(ReportMenuItemData::getUser)
165+
.map(GetUserIdFromLoginData::getUser)
166166
.map(User::getId);
167167
if (id.isEmpty()) {
168168
eventManager.onEvent(new StreamerUnknownEvent(username, TimeFactory.now()));
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package fr.rakambda.channelpointsminer.miner.api.gql.gql;
2+
3+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.GQLResponse;
4+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
5+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.Stream;
6+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User;
7+
import fr.rakambda.channelpointsminer.miner.tests.UnirestMockExtension;
8+
import org.mockito.junit.jupiter.MockitoExtension;
9+
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.api.extension.ExtendWith;
11+
import java.util.Map;
12+
import static org.assertj.core.api.Assertions.assertThat;
13+
14+
@ExtendWith(MockitoExtension.class)
15+
@ExtendWith(UnirestMockExtension.class)
16+
class GQLApiGetUserIdFromLoginTest extends AbstractGQLTest{
17+
private static final String USERNAME = "username";
18+
19+
@Test
20+
void nominal(){
21+
var expected = GQLResponse.<GetUserIdFromLoginData> builder()
22+
.extensions(Map.of(
23+
"durationMilliseconds", 41,
24+
"operationName", "GetUserIDFromLogin",
25+
"requestID", "request-id"
26+
))
27+
.data(GetUserIdFromLoginData.builder()
28+
.user(User.builder()
29+
.id("123456789")
30+
.build())
31+
.build())
32+
.build();
33+
34+
expectValidRequestOkWithIntegrityOk("api/gql/gql/getUserIdFromLogin_offline.json");
35+
36+
assertThat(tested.getUserIdFromLogin(USERNAME)).contains(expected);
37+
38+
verifyAll();
39+
}
40+
41+
@Override
42+
protected String getValidRequest(){
43+
return "{\"extensions\":{\"persistedQuery\":{\"sha256Hash\":\"c8502d09d4f290bb5155e6953a2c3119d4296d7ce647a2e21d1cf4c805583e43\",\"version\":1}},\"operationName\":\"GetUserIDFromLogin\",\"variables\":{\"lookupType\":\"ACTIVE\",\"login\":\"%s\"}}".formatted(USERNAME);
44+
}
45+
}

miner/src/test/java/fr/rakambda/channelpointsminer/miner/api/gql/gql/GQLApiReportMenuItemTest.java

Lines changed: 0 additions & 71 deletions
This file was deleted.

miner/src/test/java/fr/rakambda/channelpointsminer/miner/api/passport/TwitchLoginTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import fr.rakambda.channelpointsminer.miner.api.gql.gql.GQLApi;
44
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.GQLResponse;
5-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemData;
5+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
66
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User;
77
import fr.rakambda.channelpointsminer.miner.factory.ApiFactory;
88
import kong.unirest.core.Cookie;
@@ -28,17 +28,17 @@ class TwitchLoginTest{
2828
@Mock
2929
private GQLApi gqlApi;
3030
@Mock
31-
private GQLResponse<ReportMenuItemData> gqlResponse;
31+
private GQLResponse<GetUserIdFromLoginData> gqlResponse;
3232
@Mock
33-
private ReportMenuItemData reportMenuItemData;
33+
private GetUserIdFromLoginData getUserIdFromLoginData;
3434
@Mock
3535
private User user;
3636

3737
@BeforeEach
3838
void setUp(){
39-
lenient().when(gqlApi.reportMenuItem(USERNAME)).thenReturn(Optional.of(gqlResponse));
40-
lenient().when(gqlResponse.getData()).thenReturn(reportMenuItemData);
41-
lenient().when(reportMenuItemData.getUser()).thenReturn(user);
39+
lenient().when(gqlApi.getUserIdFromLogin(USERNAME)).thenReturn(Optional.of(gqlResponse));
40+
lenient().when(gqlResponse.getData()).thenReturn(getUserIdFromLoginData);
41+
lenient().when(getUserIdFromLoginData.getUser()).thenReturn(user);
4242
lenient().when(user.getId()).thenReturn(USER_ID);
4343
}
4444

@@ -88,7 +88,7 @@ void getUserIdFromApiNoResponse(){
8888
.username(USERNAME)
8989
.build();
9090

91-
when(gqlApi.reportMenuItem(USERNAME)).thenReturn(Optional.empty());
91+
when(gqlApi.getUserIdFromLogin(USERNAME)).thenReturn(Optional.empty());
9292

9393
assertThrows(IllegalStateException.class, () -> tested.fetchUserId(gqlApi));
9494
}

miner/src/test/java/fr/rakambda/channelpointsminer/miner/runnable/StreamerConfigurationReloadInitialNoFollowsTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import fr.rakambda.channelpointsminer.miner.api.gql.gql.GQLApi;
44
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.GQLResponse;
5-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemData;
5+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
66
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User;
77
import fr.rakambda.channelpointsminer.miner.event.impl.StreamerUnknownEvent;
88
import fr.rakambda.channelpointsminer.miner.event.manager.IEventManager;
@@ -55,9 +55,9 @@ class StreamerConfigurationReloadInitialNoFollowsTest{
5555
private GQLApi gqlApi;
5656

5757
@Mock
58-
private ReportMenuItemData reportMenuItemData;
58+
private GetUserIdFromLoginData getUserIdFromLoginData;
5959
@Mock
60-
private GQLResponse<ReportMenuItemData> reportMenuItemResponse;
60+
private GQLResponse<GetUserIdFromLoginData> reportMenuItemResponse;
6161
@Mock
6262
private User user;
6363
@Mock
@@ -74,14 +74,14 @@ void setUp(){
7474
lenient().when(miner.getGqlApi()).thenReturn(gqlApi);
7575
lenient().when(miner.getStreamers()).thenReturn(List.of());
7676

77-
lenient().when(reportMenuItemResponse.getData()).thenReturn(reportMenuItemData);
78-
lenient().when(reportMenuItemData.getUser()).thenReturn(user);
77+
lenient().when(reportMenuItemResponse.getData()).thenReturn(getUserIdFromLoginData);
78+
lenient().when(getUserIdFromLoginData.getUser()).thenReturn(user);
7979
lenient().when(user.getId()).thenReturn(STREAMER_ID);
8080
}
8181

8282
@Test
8383
void loadFromConfig(){
84-
when(gqlApi.reportMenuItem(STREAMER_USERNAME)).thenReturn(Optional.of(reportMenuItemResponse));
84+
when(gqlApi.getUserIdFromLogin(STREAMER_USERNAME)).thenReturn(Optional.of(reportMenuItemResponse));
8585

8686
setupStreamerConfig(STREAMER_USERNAME);
8787

@@ -96,7 +96,7 @@ void loadFromConfig(){
9696

9797
@Test
9898
void loadFromConfigWithDuplicateNames() {
99-
when(gqlApi.reportMenuItem(STREAMER_USERNAME)).thenReturn(Optional.of(reportMenuItemResponse));
99+
when(gqlApi.getUserIdFromLogin(STREAMER_USERNAME)).thenReturn(Optional.of(reportMenuItemResponse));
100100

101101
setupStreamerConfig(STREAMER_USERNAME, STREAMER_USERNAME, STREAMER_USERNAME);
102102

@@ -123,7 +123,7 @@ void loadFromConfigUnknown(){
123123
try(var timeFactory = mockStatic(TimeFactory.class)){
124124
timeFactory.when(TimeFactory::now).thenReturn(NOW);
125125

126-
when(gqlApi.reportMenuItem(STREAMER_USERNAME)).thenReturn(Optional.empty());
126+
when(gqlApi.getUserIdFromLogin(STREAMER_USERNAME)).thenReturn(Optional.empty());
127127

128128
setupStreamerConfig(STREAMER_USERNAME);
129129

miner/src/test/java/fr/rakambda/channelpointsminer/miner/runnable/StreamerConfigurationReloadInitialWithFollowsTest.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import fr.rakambda.channelpointsminer.miner.api.gql.gql.GQLApi;
44
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.GQLResponse;
5-
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.ReportMenuItemData;
5+
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.reportmenuitem.GetUserIdFromLoginData;
66
import fr.rakambda.channelpointsminer.miner.api.gql.gql.data.types.User;
77
import fr.rakambda.channelpointsminer.miner.event.manager.IEventManager;
88
import fr.rakambda.channelpointsminer.miner.factory.StreamerSettingsFactory;
@@ -50,9 +50,9 @@ class StreamerConfigurationReloadInitialWithFollowsTest{
5050
private StreamerSettings streamerSettings;
5151

5252
@Mock
53-
private GQLResponse<ReportMenuItemData> reportMenuItemDataGQLResponse;
53+
private GQLResponse<GetUserIdFromLoginData> reportMenuItemDataGQLResponse;
5454
@Mock
55-
private ReportMenuItemData reportMenuItemData;
55+
private GetUserIdFromLoginData getUserIdFromLoginData;
5656

5757
@BeforeEach
5858
void setUp(){
@@ -65,9 +65,9 @@ void setUp(){
6565
lenient().when(miner.getGqlApi()).thenReturn(gqlApi);
6666
lenient().when(miner.getStreamers()).thenReturn(List.of());
6767

68-
lenient().when(gqlApi.reportMenuItem(STREAMER_USERNAME)).thenReturn(Optional.empty());
69-
lenient().when(reportMenuItemDataGQLResponse.getData()).thenReturn(reportMenuItemData);
70-
lenient().when(reportMenuItemData.getUser()).thenReturn(user);
68+
lenient().when(gqlApi.getUserIdFromLogin(STREAMER_USERNAME)).thenReturn(Optional.empty());
69+
lenient().when(reportMenuItemDataGQLResponse.getData()).thenReturn(getUserIdFromLoginData);
70+
lenient().when(getUserIdFromLoginData.getUser()).thenReturn(user);
7171
}
7272

7373
@Test
@@ -81,7 +81,7 @@ void loadFromFollows(){
8181

8282
var expectedStreamer = new Streamer(STREAMER_ID, STREAMER_USERNAME, streamerSettings);
8383
verify(miner).addStreamer(expectedStreamer);
84-
verify(gqlApi, never()).reportMenuItem(anyString());
84+
verify(gqlApi, never()).getUserIdFromLogin(anyString());
8585
}
8686

8787
@Test
@@ -91,15 +91,15 @@ void loadFromFollowsEmpty(){
9191
assertDoesNotThrow(() -> tested.run());
9292

9393
verify(miner, never()).addStreamer(any());
94-
verify(gqlApi, never()).reportMenuItem(anyString());
94+
verify(gqlApi, never()).getUserIdFromLogin(anyString());
9595
}
9696

9797
@Test
9898
void loadFromConfig(){
9999
when(user.getId()).thenReturn(STREAMER_ID);
100100

101101
when(streamerSettingsFactory.getStreamerConfigs()).thenReturn(Stream.of(Paths.get(STREAMER_USERNAME + ".json")));
102-
when(gqlApi.reportMenuItem(STREAMER_USERNAME)).thenReturn(Optional.of(reportMenuItemDataGQLResponse));
102+
when(gqlApi.getUserIdFromLogin(STREAMER_USERNAME)).thenReturn(Optional.of(reportMenuItemDataGQLResponse));
103103

104104
assertDoesNotThrow(() -> tested.run());
105105

0 commit comments

Comments
 (0)