Skip to content

Commit 605e7ee

Browse files
authored
Merge pull request #32 from vania-pooh/master
Ability to get and set image from the clipboard
2 parents d929b1c + 983f54b commit 605e7ee

File tree

2 files changed

+40
-8
lines changed

2 files changed

+40
-8
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<maven.compiler.target>11</maven.compiler.target>
1818
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1919
<swagger.version>1.6.4</swagger.version>
20-
<openapi-spec.version>1.0.14</openapi-spec.version>
20+
<openapi-spec.version>1.0.15</openapi-spec.version>
2121
<openapi-plugin.version>5.1.0</openapi-plugin.version>
2222
<jackson.version>2.13.1</jackson.version>
2323
<junit-jupiter.version>5.8.2</junit-jupiter.version>

src/main/java/com/aerokube/lightning/extensions/MoonCommands.java

+39-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package com.aerokube.lightning.extensions;
22

3+
import com.aerokube.lightning.FileUtils;
34
import com.aerokube.lightning.WebDriver;
5+
import com.aerokube.lightning.WebDriverException;
46
import com.aerokube.lightning.WebDriverExtension;
57
import com.aerokube.lightning.api.AerokubeApi;
6-
import com.aerokube.lightning.model.StringResponse;
8+
import com.aerokube.lightning.model.ClipboardData;
79

810
import javax.annotation.Nonnull;
11+
import java.nio.charset.StandardCharsets;
12+
import java.nio.file.Path;
913
import java.util.Base64;
1014
import java.util.List;
1115

@@ -19,20 +23,48 @@ public MoonCommands(WebDriver webDriver) {
1923
}
2024

2125
@Nonnull
22-
public MoonCommands updateClipboard(@Nonnull byte[] content) {
26+
public MoonCommands updateClipboardText(@Nonnull String text) {
2327
execute(() -> {
24-
String encodedContent = Base64.getEncoder().encodeToString(content);
25-
aerokubeApi.updateClipboard(getSessionId(), new StringResponse().value(encodedContent));
28+
aerokubeApi.updateClipboard(getSessionId(), new ClipboardData().value(text));
2629
return null;
2730
});
2831
return this;
2932
}
3033

3134
@Nonnull
32-
public byte[] getClipboard() {
35+
public MoonCommands updateClipboardImage(@Nonnull Path image) {
36+
execute(() -> {
37+
String encodedImage = FileUtils.encodeFileToBase64(image);
38+
aerokubeApi.updateClipboard(
39+
getSessionId(),
40+
new ClipboardData()
41+
.value(encodedImage)
42+
.media(ClipboardData.MediaEnum.IMAGE_PNG)
43+
);
44+
return null;
45+
});
46+
return this;
47+
}
48+
49+
@Nonnull
50+
public String getClipboardText() {
3351
return execute(() -> {
34-
String encodedBytes = aerokubeApi.getClipboard(getSessionId()).getValue();
35-
return Base64.getDecoder().decode(encodedBytes);
52+
ClipboardData clipboard = aerokubeApi.getClipboard(getSessionId());
53+
if (clipboard.getMedia() != null) {
54+
throw new WebDriverException(String.format("Received non-text data from the clipboard: %s", clipboard.getMedia()));
55+
}
56+
return clipboard.getValue();
57+
});
58+
}
59+
60+
@Nonnull
61+
public byte[] getClipboardImage() {
62+
return execute(() -> {
63+
ClipboardData clipboard = aerokubeApi.getClipboard(getSessionId());
64+
if (clipboard.getMedia() == null || !ClipboardData.MediaEnum.IMAGE_PNG.equals(clipboard.getMedia())) {
65+
throw new WebDriverException("Received non-image data from the clipboard");
66+
}
67+
return Base64.getDecoder().decode(clipboard.getValue().getBytes(StandardCharsets.UTF_8));
3668
});
3769
}
3870

0 commit comments

Comments
 (0)