Skip to content

Commit a375b1c

Browse files
ChristopheCVBPjiescoTinaTielTinaTielnvdweem
authored
5.x.x/develop is the new develop (#136)
* test: getVideoSettingsRequest * test: removeSceneCollectionRequest * test: setCurrentSceneCollectionRequest * test: setProfileParameterRequest * test: broadcastCustomEventRequest * test: getSourceActiveRequest * test: getSourceScreenshotRequest * test: saveSourceScreenshotRequest * core: code sharing * Sync with 5.x.x/develop * requested changes * cicd: modified e2e auth test to pull and run OBS Websocket, and run the authentication test instead * separated General request tests * separated Config request tests * separated Source request tests * separated Transitions request tests * test: createInputRequest * test: getInputListRequest * test: getInputKindListRequest fix: test method naming * test: getInputMonitorTypeRequest * core: Rename package to io.obswebsocket.community.client * core: RequestResponse and RequestBatchResponse isSuccessful * test: getInputMuteRequest * test: getInputSettingsRequest * test: getInputTracksRequest * test: getInputVolumeRequest * test: getSpecialInputNamesRequest * test: setInputMonitorTypeRequest * test: setInputMuteRequest * test: setInputNameRequest * test: createInputRequest * test: setInputSettingsRequest fix: createInputRequest * test: setInputMuteRequest * test: setInputVolumeRequest fix: SetInputVolumeRequest missing parameters * test: toggleInputMuteRequest * fix: Package * fix: Package * test: getTransitionListRequest * test: releaseTbarRequest * test: setCurrentTransitionDurationRequest * test: setCurrentTransitionRequest * test: setTbarPositionRequest * test: setTransitionSettingsRequest * test: triggerStudioModeTransitionRequest * test: createSceneRequest * test: deleteSceneTransitionOverrideRequest * test: getCurrentPreviewSceneRequest * test: getCurrentProgramSceneRequest * test: getSceneListRequest * test: getSceneTransitionOverrideRequest * test: removeSceneRequest * test: setCurrentPreviewSceneRequest * test: setCurrentProgramSceneRequest * test: setSceneNameRequest * test: setSceneTransitionOverrideRequest * test: createInputRequest * test: getSourceFilterRequest * test: GetSourceFilterListRequest * test: removeSourceFilterRequest * test: setSourceFilterEnabledRequest * test: setSourceFilterSettingsRequest * fix: typo * fix: typo * doc: OBSCommunicator missing param * core: rpc version is now static, and throws error on mismatch * fix: controller not disconnecting on error. test: Replaced CommunicatorE2E tests with tests against Controller. core: Added direct setter for communicator in the RemoteController builder * feat: GetSystemStats * feat: GetProjectorList * feat: CloseProjector * feat: GetRecordStatus * test: createSceneItemRequest * test: duplicateSceneItemRequest * feat: Start/Stop/Toggle Record * feat: Start/Stop/Toggle Record * test: getSceneItemColorRequest * Moved contact e2e tests into lifecycle e2e tests * test: getSceneItemEnabledRequest * feat: Resume/Pause/Toggle RecordPause * core: updated rpc check to verify server can support client * feat: Get/Set RecordDirectory * feat: Get/Set RecordFilenameFormatting * fix: Optimize Imports * test: getSceneItemListRequest * test: getSceneItemLockedRequest * test: removeSceneItemRequest * test: setSceneItemEnabledRequest * test: setSceneItemIndexRequest * test: setSceneItemLockedRequest * fix: Log * feat: RemoveInput * feat: connection timeout when obs unreachable * test: remove last disabled case; covered already in auth test * Added unit test for RemoteController builder, and increased e2e test timeout * cicd: updated pr flow to upload failing test results * cicd: updated test result upload to include all html resources in report * cicd: gave test reports unique names per job * test: Moved failed connection test into integration tests; the explicitly don't require OBS, and it may work better in cicd * cicd: fix, '/' invalid char in test results artifact name * test: updated to simply verify throwable is provided at all, since the specific kind depends on the OS. core: ensure throwable (cause if available, else the throwable) is always provided when obs cannot be reached * request: GetReplayBufferStatus * request: ToggleReplayBufferRequest * request: StopReplayBuffer * request: SaveReplayBuffer * style: updated constructor param javadocs. core: moved verification to constructor. * request: GetLastReplayBufferReplay * request: GetOutputList * request: ToggleOutput * request: StartOutput * request: StopOutput * feat: Output Request Methods in OBSRemoteController * test: Output Request tests * core: optimize imports * fix: record requests methods in OBSRemoteController * fix: wrong return Type * fix: request method parameters * fix: wrong request type * fix: requestType in getOutputListRequest Test * core: added websocket closecode enum, and updated tests checking code to use the enum * code: added fromCode lookup method for WebSocketCloseCode enum * fix: missing GetSystemStatsRequest method * fix: missing request methods * core: enforced websocketCloseCode enum on lifecycle callbacks. test: cleaned up several irrelevant and missing tests in the 'Unescured' test module. * fix: catch for Ubuntu case unknown host * test: Added positive connect test for unsecured case, and clarified the secured case is already covered. * core: hardened error handling for connect sequence. Unfortuntately cannot unit-test with Jetty WebSocketClient, it has several final methods and I cannot implement my own because there is no interface. We could address this later, but creating a facade should be done carefully...the Jetty client could be quite messy to cleanly facade out. Yucky yucky. * request: GetStreamStatus * request: ToggleStream * request: StartStream * request: StopStream * request: SendStreamCaption * request: GetStreamServiceSettings * request: SetStreamServiceSettings * feat: request methods * test: Stream request tests * request: GetMediaInputStatus * request: OffsetMediaInputTimecode * request: SetMediaInputTimecode * request: SetMediaInputPauseState * request: StopMediaInput * request: RestartMediaInput * request: NextMediaInputPlaylistItem * request: PreviousMediaInputPlaylistItem * fix: GroupId * feat: Media Input request methods * test: Media Input Request Tests * test: getVersionRequest * fix: Media Inputs package name * core: Migrate to Gradle v7.1 * core: Migrate to Gradle v7.1 * core: Migrate to Gradle v7.1 * feat: SetSceneIndex * doc: Update README.md with groupId * doc: Include and Apply IntelliJ Java Google CheckStyle * fix: SceneItems package name * fix: WebSocketCloseCode snucked semicolon * core: Moved onReady and onDisconnect into Communicator listeners, verified tests pass as before. Need to add additional specs verifying calls to expected lifecycle methods * core: implemented ready and disconnect callbacks in ObsCommunicator * core: added lifecycleBuilder facade covering both controller and communicator lifecycle callback registration. style: Added javadocs to communicator and controller. test: updated integration tests to expected onReady rather than onIdentified * doc: Add Example Gradle Module * chore: removed unnecessary CommunicatorBuilder constructor with reference to RemoteController * doc: Add Example class * doc: Add Example class * doc: Add Example class * cicd: Update Workflows * cicd: Update Workflows * cicd: Update Workflows * doc: Add example implementation * core: Removed isFailed calls; not useful or correct here * core: removed references to controller and communicator in lifecycle callback listeners; no-longer needed, nor should be exposed. * core: removed logical error, renamed builders, removed cruft, and added @OVERRIDES where missing * cicd: Fix pr workflow * doc: Add password to example and update onReady signature * core: Remove release related stuff from example build.gradle * core: Move lombok.config to client module * doc: Update README.md * docs: Reorganized docs, explaining the builder in pieces and adding a separate section comparing this library to the prior version. Moved the transfer notice to CONTRIBUTING and updated the gradle calls * docs: added section on error handling * docs: removed unnecessary header in text under logo * docs: Added gradle logging example, and various typos * docs: added link to file issue * doc: Add example implementation * feat: Get/Set GlobalPersistentData Requests * fix: Scene Events * feat: (WIP) Transition Events * fix: Transition Events package * feat: (WIP) Filter Events * fix: CustomEvent * fix: CustomEvent * core: Rename * Update GetInputKindListRequest.java * core: PersistentDataRequest * feat: GetStats request * feat: SetCurrentProfile request * feat: CreateProfile request * feat: RemoveProfile request * feat: SetVideoSettings request * feat: GetInputAudioSyncOffset request * feat: SetInputAudioSyncOffset request * fix: rename GetInputTracks >> GetInputAudioTracks * feat: GetInputPropertiesListPropertyItems request * fix: make itemValue a string * feat: PressInputPropertiesButton request * fix: persistent data requests parameters and response names * fix: request/response parameters * fix: request/response parameters * feat: StartReplayBuffer request * core: reformat request code * feat: OBSRemoteController requests * fix: unit-tests * feat: abstract ProfileRequest class * fix: GetInputAudioSyncOffsetRequest extending InputRequest * fix: SetInputAudioSyncOffsetRequest extending InputRequest * fix: inputAudioSyncOffset type * fix: propertyItems type * add todo * 5.x.x/events (#119) * fix: rename CurrentSceneChangedEvent >> CurrentProgramSceneChangedEvent * core: reformat code * fix: type * fix: Enum name Co-authored-by: Christophe Carvalho Vilas-Boas <[email protected]> * Issue forms (#129) * Copied over short repo transfer notice from 5.x.x/develop branch * docs: Correcting typo * Create issue templates * fix: requested changes * Change missing-event issue template to new Issue Form * Change missing-request issue template to new Issue Form Co-authored-by: TinaTiel <[email protected]> Co-authored-by: Pjiesco <[email protected]> Co-authored-by: Pjiesco <[email protected]> * core: Protocol Update (#122) * core: OperationCode * core: OperationCode * core: Message data * core: Message data * core: Message data * core: Comment GetVersion Request when client is identified * core: requestStatus Codes * core: Upgrade dependencies * core: Rename Event.Category to Event.Intent doc: Rename obs-websocket repo + fixes * core: Event Serialization + CurrentProfileChangedEvent * core: CurrentSceneCollectionChangedEvent * core: ProfileListChangedEvent * core: SceneCollectionListChangedEvent * fix: make fields final * core: CustomEvent * core: ExitStartedEvent * core: StudioModeStateChangedEvent * fix: Example * fix: CustomEventTriggered and SceneCollectionListChangedEventTriggered tests * core: call super on toString + Filter events * fix: ObsCommunicatorEventIT * fix: FilterEvent and add test * core: InputAudioSyncOffsetChangedEvent * core: Input events + Tests * core: InputVolumeChangedEvent * core: Media events + Tests * core: Output events + Tests * core: SceneItem events + Tests * core: Scene events + Tests * core: Update Logo fixes #124 * core: Upgrade lombok * core: Make *Event.messageData non final * core: TransitionEvent and subclasses * core: TransitionEvent and subclasses * core: TransitionEvent and subclasses * core: Events Serialization Tests * core: Events Serialization Tests * core: Events Serialization Tests * test: Reorganize test classes * Update GetStreamServiceSettingsResponse.java https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings * 5.x.x/protocol update requests config (#128) * core: Protocol Update for Requests * core: Protocol Update Config Requests * core: Optimize imports * fix: Example * Fix change in messages (#134) + more (#135) * Update example default port * NPE 'fix', not sure if messageData is supposed to be nullable * We know we are connecting, no point in info logging that * Request data field was incorrectly named * Put response data in the correct place * Reuse websocket client and add explicit stop * Actually close the websocket when calling disconnect * Example should now stop the communicator at the end * Allow configuring the websocket client * Put requestData in the correct place * Make events work again and (de)serialization using generics * Update references to old default port * Fix testcases * Update close codes * Change docker port mapping to the non-standard websocket port * Restore example * Add link to Google style convention * Fix review feedback * Get eventIntent through messageData * Apply workaround to allow SuperBuilder inheritance projectlombok/lombok#2524 * Don't use builders when not needed * Don't use boolean object when not needed Co-authored-by: Niels van de Weem <[email protected]> * core: clean * FIX: VendorEvent * cicd: Upgrade GitHub Actions * cicd: Upgrade GitHub Actions * cicd: Upgrade GitHub Actions core: Upgrade Gradle Wrapper * core: Upgrade Dependencies & clean * fix: Events Intent * fix: Events Intent * core: RequestBatch and RequestBatchResponse * fix: Event.Intent names * fix: RequestBatch, RequestBatchResponse is still todo * core: Event.Intent and Requests + RequestResponses * fix: RequestBatchResponse * fix: Remove not-needed superbuilders * fix: Get/SetSceneSceneTransitionOverride * fix: Fix compilation errors * fix: Update test Co-authored-by: Pjiesco <[email protected]> Co-authored-by: Niels van de Weem <[email protected]> Co-authored-by: Niels van de Weem <[email protected]> Co-authored-by: Pjiesco <[email protected]> Co-authored-by: TinaTiel <[email protected]> Co-authored-by: Pjiesco <[email protected]> Co-authored-by: TinaTiel <[email protected]> Co-authored-by: Niels van de Weem <[email protected]> Co-authored-by: Niels van de Weem <[email protected]>
1 parent 8315933 commit a375b1c

File tree

575 files changed

+17683
-5103
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

575 files changed

+17683
-5103
lines changed

Diff for: .github/ISSUE_TEMPLATE/missing-event.yml

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Missing Event
2+
description: Request Implementation of a missing event
3+
labels: [ "missing event" ]
4+
5+
body:
6+
- type: input
7+
id: eventName
8+
attributes:
9+
label: Event Name
10+
description: Name of the event
11+
placeholder: SceneCreated
12+
validations:
13+
required: true
14+
15+
- type: input
16+
id: docLink
17+
attributes:
18+
label: Documentation
19+
description: Link to the Event Documentation
20+
validations:
21+
required: true
22+
23+
- type: textarea
24+
id: eventFields
25+
attributes:
26+
label: Event Fields
27+
description: |
28+
Fields send with the Event
29+
30+
Tip: Use the given example table to list the fields
31+
value: |
32+
| Name | Type |
33+
| ------------- | :-------------: |
34+
| `exampleField` | String |
35+
| `exampleField2` | int |
36+
validations:
37+
required: true
38+
39+
- type: textarea
40+
id: additional-info
41+
attributes:
42+
label: Additional Info
43+
description: Other usefull information like links to a Event handler etc.

Diff for: .github/ISSUE_TEMPLATE/missing-request.yml

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Missing Request
2+
description: Request implementation of a missing request
3+
labels: [ "missing request" ]
4+
5+
body:
6+
- type: input
7+
id: requestName
8+
attributes:
9+
label: Request Name
10+
description: Name of the request
11+
placeholder: GetVersion
12+
validations:
13+
required: true
14+
15+
- type: input
16+
id: docLink
17+
attributes:
18+
label: Documentation
19+
description: Link to the Request Documentation
20+
validations:
21+
required: true
22+
23+
- type: textarea
24+
id: requestParameters
25+
attributes:
26+
label: Request Parameters
27+
description: |
28+
Tip: Use the given example table to list the parameters
29+
value: |
30+
| Name | Type | Required |
31+
| ------------- | :-------------: | :-------------: |
32+
| `exampleParameter` | String | yes |
33+
| `exampleParameter2` | int | no |
34+
validations:
35+
required: true
36+
37+
- type: textarea
38+
id: responseParameters
39+
attributes:
40+
label: Response Parameters
41+
description: |
42+
Tip: Use the given example table to list the parameters
43+
value: |
44+
| Name | Type |
45+
| ------------- | :-------------: |
46+
| `exampleResponse` | String |
47+
| `exampleResponse2` | int |
48+
validations:
49+
required: true
50+
51+
- type: textarea
52+
id: additional-info
53+
attributes:
54+
label: Additional Info
55+
description: Other usefull information like links to a Request handler etc.

Diff for: .github/images/obs-ws-java.png

91.6 KB
Loading

Diff for: .github/workflows/master.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
build:
1010
runs-on: ubuntu-latest
1111
steps:
12-
- uses: actions/checkout@v2
12+
- uses: actions/checkout@v3
1313
- name: Git tag
1414
run: |
1515
git tag $(cat VERSION)

Diff for: .github/workflows/pr.yml

+56-8
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,66 @@ on:
99
- '**'
1010

1111
jobs:
12-
build:
12+
unit-and-integration-tests:
1313

1414
runs-on: ubuntu-latest
1515

1616
steps:
1717
- uses: actions/checkout@v2
1818
- name: Set up JDK 1.8
19-
uses: actions/setup-java@v1
19+
uses: actions/setup-java@v3
2020
with:
21-
java-version: 1.8
22-
java-package: jdk
23-
- name: Grant execute permission for gradlew
24-
run: chmod +x gradlew
25-
- name: Test with Gradle
26-
run: ./gradlew test
21+
distribution: temurin
22+
java-version: 8
23+
- name: Setup Gradle
24+
uses: gradle/gradle-build-action@v2
25+
- name: Run unit tests
26+
run: ./gradlew client:test
27+
- name: Run integration tests
28+
run: ./gradlew client:integrationTest
29+
- name: Upload Failing Unit Test Results
30+
if: failure()
31+
uses: actions/upload-artifact@v3
32+
with:
33+
name: Unit and Int Test Failure Results
34+
path: client/build/reports/tests/**
35+
36+
e2e-authentication-test:
37+
38+
runs-on: ubuntu-latest
39+
40+
steps:
41+
- uses: actions/checkout@v3
42+
- name: Set up JDK 1.8
43+
uses: actions/setup-java@v3
44+
with:
45+
distribution: temurin
46+
java-version: 8
47+
- name: Setup Gradle
48+
uses: gradle/gradle-build-action@v2
49+
- name: Pull and Run OBS Websocket
50+
run: docker run -p 4455:4444 -d tinatiel/obswebsocket:latest
51+
- name: Run End2End Secured tests
52+
run: ./gradlew client:endToEndSecuredTest
53+
- name: Upload Failing Unit Test Results
54+
if: failure()
55+
uses: actions/upload-artifact@v3
56+
with:
57+
name: E2E Secured Test Failure Results
58+
path: client/build/reports/tests/**
59+
60+
example-build:
61+
62+
runs-on: ubuntu-latest
63+
64+
steps:
65+
- uses: actions/checkout@v3
66+
- name: Set up JDK 1.8
67+
uses: actions/setup-java@v3
68+
with:
69+
distribution: temurin
70+
java-version: 8
71+
- name: Setup Gradle
72+
uses: gradle/gradle-build-action@v2
73+
- name: Example gradle build
74+
run: ./gradlew example:build

Diff for: .github/workflows/release.yml

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Prepare release candidate
1+
name: Publish Release
22

33
on:
44
push:
@@ -9,14 +9,17 @@ jobs:
99
build:
1010
runs-on: ubuntu-latest
1111
steps:
12-
- uses: actions/checkout@v1
12+
- uses: actions/checkout@v3
1313
- name: Set up JDK 1.8
14-
uses: actions/setup-java@v1
14+
uses: actions/setup-java@v3
1515
with:
16-
java-version: 1.8
17-
- name: Gradle uploadArchives
16+
distribution: temurin
17+
java-version: 8
18+
- name: Setup Gradle
19+
uses: gradle/gradle-build-action@v2
20+
- name: Gradle Maven Publish
1821
run: |
19-
./gradlew uploadArchives
22+
./gradlew client:publishMavenJavaPublicationToMavenRepository
2023
env:
2124
IS_RELEASE: "YES"
2225
PGP_KEY: ${{ secrets.PGP_KEY }}

Diff for: .github/workflows/snapshot.yml

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Snapshot build & publish
1+
name: Publish Snapshot
22

33
on:
44
push:
@@ -11,14 +11,17 @@ jobs:
1111
runs-on: ubuntu-latest
1212

1313
steps:
14-
- uses: actions/checkout@v1
14+
- uses: actions/checkout@v3
1515
- name: Set up JDK 1.8
16-
uses: actions/setup-java@v1
16+
uses: actions/setup-java@v3
1717
with:
18-
java-version: 1.8
19-
- name: Gradle uploadArchives
18+
distribution: temurin
19+
java-version: 8
20+
- name: Setup Gradle
21+
uses: gradle/gradle-build-action@v2
22+
- name: Gradle Maven Publish
2023
run: |
21-
./gradlew uploadArchives
24+
./gradlew client:publishMavenJavaPublicationToMavenRepository
2225
env:
2326
PGP_KEY: ${{ secrets.PGP_KEY }}
2427
PGP_PSW: ${{ secrets.PGP_PSW }}

0 commit comments

Comments
 (0)