diff --git a/.gitignore b/.gitignore index d83c8b3..5fe359d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ backend-infrastructure/.aws-sam # Created by https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode - +*.db ### Linux ### *~ - +.db # temporary files which can be created if a process still has a handle open of a deleted file .fuse_hidden* diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/http/TikTokHttpResponseEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/http/TikTokHttpResponseEvent.java index 926abeb..0a3cc5e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/http/TikTokHttpResponseEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/http/TikTokHttpResponseEvent.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.data.events.http; import io.github.jwdeveloper.tiktok.annotations.EventMeta; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/http/HttpData.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/http/HttpData.java index 235138f..2f1bd3d 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/http/HttpData.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/models/http/HttpData.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.data.models.http; import lombok.Data; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java index ed376ab..7aa4634 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java @@ -57,7 +57,7 @@ public interface LiveClient { /** - * You to manually trigger event + * Use to manually invoke event */ void publishEvent(TikTokEvent event); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapper.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapper.java index 6cf7e98..d2597cb 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapper.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapper.java @@ -47,6 +47,9 @@ public interface TikTokMapper { TikTokMapperModel forMessage(Class mapperName, Function onMapping); + TikTokMapperModel forAnyMessage(); + + boolean isRegistered(String mapperName); boolean isRegistered(Class mapperName); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperHelper.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperHelper.java index b493676..7ae5d9d 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperHelper.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperHelper.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers; import com.google.protobuf.GeneratedMessageV3; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperModel.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperModel.java index f198832..921d7ad 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperModel.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokMapperModel.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/AfterMappingAction.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/AfterMappingAction.java index fe13206..6977e11 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/AfterMappingAction.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/AfterMappingAction.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers.data; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingAction.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingAction.java index 3ed0b99..aefe059 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingAction.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingAction.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers.data; import io.github.jwdeveloper.tiktok.mappers.TikTokMapperHelper; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingResult.java b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingResult.java index f904dcc..81ac6e1 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingResult.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/mappers/data/MappingResult.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers.data; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java index eae77b9..79a10ef 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokHttpRequestFactory.java @@ -141,7 +141,7 @@ public class TikTokHttpRequestFactory implements TikTokHttpRequest { private String getContent(HttpRequest request) throws Exception { var response = client.send(request, HttpResponse.BodyHandlers.ofString()); - var event = new TikTokHttpResponseEvent(response.uri().toString(), HttpData.map(request), HttpData.map(response)); + var event = new TikTokHttpResponseEvent(response.uri().toString(), HttpData.map(response), HttpData.map(request)); eventHandler.publish(null, event); if (response.statusCode() == 404) { throw new TikTokLiveRequestException("Request responded with 404 NOT_FOUND"); diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java index d4ca55a..99e79f5 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java @@ -23,6 +23,7 @@ package io.github.jwdeveloper.tiktok.mappers; import com.google.protobuf.GeneratedMessageV3; +import io.github.jwdeveloper.tiktok.TikTokLive; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; import io.github.jwdeveloper.tiktok.mappers.data.MappingAction; import io.github.jwdeveloper.tiktok.mappers.data.MappingResult; @@ -36,10 +37,12 @@ public class TikTokLiveMapper implements TikTokMapper { private final Map mappers; private final TikTokMapperHelper mapperUtils; + private final TikTokLiveMapperModel globalMapperModel; public TikTokLiveMapper(TikTokMapperHelper mapperUtils) { this.mappers = new HashMap<>(); this.mapperUtils = mapperUtils; + this.globalMapperModel = new TikTokLiveMapperModel("any message"); } @Override @@ -76,6 +79,11 @@ public class TikTokLiveMapper implements TikTokMapper { return forMessage(mapperName, (inputBytes, messageName, mapperHelper) -> MappingResult.of(inputBytes, onMapping.apply(inputBytes))); } + @Override + public TikTokMapperModel forAnyMessage() { + return globalMapperModel; + } + public boolean isRegistered(String mapperName) { return mappers.containsKey(mapperName); @@ -84,6 +92,7 @@ public class TikTokLiveMapper implements TikTokMapper { public boolean isRegistered(Class mapperName) { return mappers.containsKey(mapperName.getSimpleName()); } + public List handleMapping(String messageName, byte[] bytes) { if (!isRegistered(messageName)) { return List.of(); @@ -91,10 +100,17 @@ public class TikTokLiveMapper implements TikTokMapper { var mapperModel = mappers.get(messageName); var inputBytes = mapperModel.getOnBeforeMapping().onMapping(bytes, messageName, mapperUtils); + var globalInputBytes = globalMapperModel.getOnBeforeMapping().onMapping(inputBytes, messageName, mapperUtils); - var mappingResult = mapperModel.getOnMapping().onMapping(inputBytes, messageName, mapperUtils); + + var mappingResult = mapperModel.getOnMapping().onMapping(globalInputBytes, messageName, mapperUtils); + + if (mappingResult == null) { + mappingResult = globalMapperModel.getOnMapping().onMapping(globalInputBytes, messageName, mapperUtils); + } var afterMappingResult = mapperModel.getOnAfterMapping().apply(mappingResult); - return afterMappingResult; + var globalAfterMappingResult = globalMapperModel.getOnAfterMapping().apply(MappingResult.of(mappingResult.getSource(), afterMappingResult)); + return globalAfterMappingResult; } } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperHelper.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperHelper.java index bb3cd2d..9c854f9 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperHelper.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperHelper.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers; import com.google.protobuf.GeneratedMessageV3; diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperModel.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperModel.java index c4f3b69..93f9f52 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperModel.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapperModel.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.mappers; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java new file mode 100644 index 0000000..6dd12e1 --- /dev/null +++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +package io.github.jwdeveloper.tiktok; + +import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; +import io.github.jwdeveloper.tiktok.data.models.Picture; +import io.github.jwdeveloper.tiktok.data.models.gifts.Gift; +import io.github.jwdeveloper.tiktok.live.GiftManager; +import io.github.jwdeveloper.tiktok.live.LiveClient; +import lombok.AllArgsConstructor; + +public class CustomEventExample { + @AllArgsConstructor + public static class CheapGiftEvent extends TikTokEvent { + Gift gift; + } + + @AllArgsConstructor + public static class ExpensiveGiftEvent extends TikTokEvent { + Gift gift; + } + + public static void main(String[] args) { + TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME) + .onGift((liveClient, event) -> + { + if (event.getGift().getDiamondCost() > 100) + liveClient.publishEvent(new ExpensiveGiftEvent(event.getGift())); + else + liveClient.publishEvent(new CheapGiftEvent(event.getGift())); + }) + .onEvent(CheapGiftEvent.class,(liveClient, event) -> + { + System.out.println("Thanks for cheap gift"); + }) + .onEvent(ExpensiveGiftEvent.class,(liveClient, event) -> + { + System.out.println("Thanks for expensive gift!"); + }) + .build(); + } +} diff --git a/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/Settings.java b/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/Settings.java index 8cd3f51..136126c 100644 --- a/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/Settings.java +++ b/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/Settings.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.webviewer; diff --git a/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokCollectorService.java b/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokCollectorService.java index 483c17b..8279385 100644 --- a/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokCollectorService.java +++ b/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokCollectorService.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.webviewer.services; import io.github.jwdeveloper.tiktok.tools.TikTokLiveTools; diff --git a/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokDatabaseService.java b/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokDatabaseService.java index 6aaa1b9..357eb39 100644 --- a/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokDatabaseService.java +++ b/Tools-EventsWebViewer/src/main/java/io/github/jwdeveloper/tiktok/webviewer/services/TikTokDatabaseService.java @@ -1,3 +1,25 @@ +/* + * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ package io.github.jwdeveloper.tiktok.webviewer.services; import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse; diff --git a/Tools-EventsWebViewer/src/main/resources/public/index.js b/Tools-EventsWebViewer/src/main/resources/public/index.js index 184f7a6..905c332 100644 --- a/Tools-EventsWebViewer/src/main/resources/public/index.js +++ b/Tools-EventsWebViewer/src/main/resources/public/index.js @@ -25,7 +25,6 @@ var data = } - dropDown("usersDropDown", () => `${baseUrl}/tiktok/users`, async (e) => { data.user = e; update(); @@ -51,28 +50,15 @@ function update() { } async function updateAsync() { - console.log(data); + console.log("Updating", data); await updateConnectionButton() await updateDataNamesList(async (dataName) => { data.dataName = dataName; data.page = 0; - await updateContent(); + await updateContent(`${baseUrl}/tiktok/data?name=${data.dataName}&type=${data.dataType}&page=${data.page}`); await updatePagination(async (page, link) => { data.page = page; - let response = await fetch(link); - let json = await response.text(); - console.log(link) - let root = JSON.parse(json); - editor.setValue(root.content); - - if(data.dataType === 'message') - { - console.log("sending proto version") - let response2 = await fetch(`${link}&asProto=true`); - let json2 = await response2.text(); - let root2 = JSON.parse(json2); - editor2.setValue(root2.content); - } + await updateContent(link) }); }); await fetch(`${baseUrl}/tiktok/update?user=${data.user}&session=${data.sessionTag}`); @@ -100,21 +86,30 @@ async function updatePagination(onSelect) { }); } -async function updateContent() { +async function updateContent(link) { console.log("updating content", data) - let response = await fetch(`${baseUrl}/tiktok/data?name=${data.dataName}&type=${data.dataType}&page=${data.page}`); + let response = await fetch(link); let json = await response.text(); + console.log(link) let root = JSON.parse(json); editor.setValue(root.content); - - - if(data.dataType === 'message') - { + $("#editor2").hide() + if (data.dataType === 'message') { console.log("sending proto version") - let response2 = await fetch(`${baseUrl}/tiktok/data?name=${data.dataName}&type=${data.dataType}&page=${data.page}&asProto=true`); + let response2 = await fetch(`${link}&asProto=true`); let json2 = await response2.text(); let root2 = JSON.parse(json2); editor2.setValue(root2.content); + $("#editor2").show() + } + + if (data.dataType === 'response' && data.dataName === 'Http') { + + var content = JSON.parse(root.content); + var body = JSON.parse(content.request.body) + var asJson = JSON.stringify(body, null, 2) + editor2.setValue(asJson); + $("#editor2").show() } } @@ -194,9 +189,9 @@ async function updateConnectionButton() { async function connect() { let name = document.getElementById('name').value; - let session = document.getElementById('sessionTag').value; + let session = document.getElementById('sessionTag').value; data.collector.name = name - data.collector.sessionTag =session + data.collector.sessionTag = session let response = await fetch(`${baseUrl}/tiktok/connect?name=${data.collector.name}&session=${data.collector.sessionTag}`); let greeting = await response.text(); diff --git a/link.db b/link.db deleted file mode 100644 index 0334105..0000000 Binary files a/link.db and /dev/null differ diff --git a/log.db b/log.db deleted file mode 100644 index c5b92c3..0000000 Binary files a/log.db and /dev/null differ