Skip to content

Commit 1a4db75

Browse files
author
nicol
committed
updates
1 parent e8dceda commit 1a4db75

4 files changed

Lines changed: 115 additions & 134 deletions

File tree

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
5858
<jwt.version>0.13.0</jwt.version>
5959
<lucene.version>10.5.1</lucene.version>
60-
<artemis.version>2.55.0</artemis.version>
60+
<artemis.version>2.56.0</artemis.version>
6161
<flatlaf.version>3.7.2</flatlaf.version>
6262
<qwartz.version>2.5.2</qwartz.version>
6363
<rome.version>2.1.0</rome.version>
@@ -541,7 +541,7 @@
541541
<dependency>
542542
<groupId>com.fifesoft</groupId>
543543
<artifactId>autocomplete</artifactId>
544-
<version>3.3.3</version>
544+
<version>4.0.0</version>
545545
</dependency>
546546
<dependency>
547547
<groupId>org.rednoise</groupId>
@@ -729,7 +729,7 @@
729729
<dependency>
730730
<groupId>org.freemarker</groupId>
731731
<artifactId>freemarker</artifactId>
732-
<version>2.3.34</version>
732+
<version>2.3.35</version>
733733
</dependency>
734734
<dependency>
735735
<groupId>com.google.code.gson</groupId>

src/main/java/org/magic/gui/CardBuilder2GUI.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@
5656
import org.magic.services.MTGConstants;
5757
import org.magic.services.MTGControler;
5858
import org.magic.services.threads.ThreadManager;
59-
import org.magic.services.tools.FileTools;
60-
import org.magic.services.tools.ImagePoster;
6159
import org.magic.services.tools.ImageTools;
6260
import org.magic.services.tools.MTG;
61+
import org.magic.services.tools.PostImage;
6362
import org.magic.services.tools.UITools;
6463
import org.magic.services.workers.AbstractObservableWorker;
64+
65+
6566
public class CardBuilder2GUI extends MTGUIComponent {
6667

6768
private static final long serialVersionUID = 1L;
@@ -543,30 +544,18 @@ protected BufferedImage doInBackground() throws Exception {
543544

544545
if(magicCardEditorPanel.isProxied())
545546
{
546-
var poster = new ImagePoster();
547+
var poster = new PostImage();
547548

548549
if(card.getUrl()!=null && !poster.isProxified(card.getUrl()))
549-
{
550-
try {
551-
var proxyUrl = poster.upload(card.getUrl());
552-
card.setUrl(proxyUrl);
553-
}
554-
catch(Exception e)
555-
{
556-
logger.error(e);
557-
}
558-
}
550+
card.setUrl(poster.upload(card.getUrl()));
559551
}
560-
return getEnabledPlugin(MTGPictureEditor.class).getPicture(card,(MTGEdition) cboSets.getSelectedItem());
552+
return getEnabledPlugin(MTGPictureEditor.class).getPicture(card,editionModel.getItemAt(cboSets.getSelectedIndex()));
561553
}
562554

563555
@Override
564556
protected void done() {
565-
566-
BufferedImage img;
567557
try {
568-
img = get();
569-
loadPicture(img, panelPictures);
558+
loadPicture(get(), panelPictures);
570559
jsonPanel.init(magicCardEditorPanel.getMagicCard());
571560
panelDetails.init(magicCardEditorPanel.getMagicCard());
572561

src/main/java/org/magic/services/tools/ImagePoster.java

Lines changed: 0 additions & 113 deletions
This file was deleted.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package org.magic.services.tools;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.util.Date;
6+
import java.util.Map;
7+
8+
import org.apache.http.entity.mime.MultipartEntityBuilder;
9+
import org.apache.http.entity.mime.content.FileBody;
10+
import org.apache.logging.log4j.Logger;
11+
import org.magic.services.logging.MTGLogger;
12+
import org.magic.services.network.MTGHttpClient;
13+
import org.magic.services.network.RequestBuilder;
14+
import org.magic.services.network.URLTools;
15+
16+
import com.google.gson.JsonObject;
17+
18+
public class PostImage {
19+
20+
private Logger logger = MTGLogger.getLogger(PostImage.class);
21+
private int expirationDay = 0;
22+
private static final String BASE_URL = "https://postimages.org/";
23+
MTGHttpClient client = URLTools.newClient();
24+
25+
26+
public void setExpirationDay(int expirationDay) {
27+
this.expirationDay = expirationDay;
28+
}
29+
30+
public boolean isProxified(String url)
31+
{
32+
return url.contains("postimg");
33+
}
34+
35+
public String upload(String path) throws IOException
36+
{
37+
if(path.startsWith("http"))
38+
return uploadUrl(path);
39+
else
40+
return uploadFile(new File(path));
41+
}
42+
43+
44+
45+
public String uploadFile(File f) throws IOException {
46+
47+
var ret = client.doPost(BASE_URL + "/json", MultipartEntityBuilder.create().addPart("file", new FileBody(f))
48+
.addTextBody("gallery","")
49+
.addTextBody("expire",String.valueOf(expirationDay))
50+
.addTextBody("numfiles","1")
51+
.addTextBody("upload_session",generateSessionId())
52+
.build(), generateHeaders());
53+
54+
return directLink(URLTools.toJson(ret.getEntity().getContent()).getAsJsonObject());
55+
}
56+
57+
58+
59+
public String uploadUrl(String url) throws IOException {
60+
61+
var jsonRet = RequestBuilder.build().setClient(client).post().url(BASE_URL + "/json")
62+
.addHeaders(generateHeaders())
63+
.addContent("gallery", "")
64+
.addContent("optsize", "0")
65+
.addContent("expire", String.valueOf(expirationDay))
66+
.addContent("url", url)
67+
.addContent("numfiles", "1")
68+
.addContent("upload_session",generateSessionId())
69+
.toJson()
70+
.getAsJsonObject();
71+
72+
logger.debug("upload result : {}", jsonRet);
73+
74+
return directLink(jsonRet);
75+
}
76+
77+
private Map<String,String> generateHeaders()
78+
{
79+
return Map.of(URLTools.ORIGIN, BASE_URL, URLTools.REFERER, BASE_URL + "/web",
80+
URLTools.ACCEPT, URLTools.HEADER_JSON,
81+
URLTools.ACCEPT_ENCODING, "gzip, deflate, br, zstd",
82+
URLTools.ACCEPT_LANGUAGE,"fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7\r\n",
83+
"priority", "u=1, i",
84+
"Cache-Control", "no-cache",
85+
"x-requested-with", "XMLHttpRequest");
86+
}
87+
88+
89+
private String generateSessionId() {
90+
return new Date().getTime() + Double.toString(CryptoUtils.randomDouble(Double.MAX_VALUE)).substring(1);
91+
}
92+
93+
private String directLink(JsonObject jsonRet) throws IOException {
94+
95+
var url = jsonRet.get("url").getAsString();
96+
try {
97+
return RequestBuilder.build().setClient(client).get().url(url).toHtml().getElementById("direct").attr("value");
98+
} catch (Exception _) {
99+
logger.error("error to upload {} : {}", url, jsonRet);
100+
throw new IOException("Error at upload");
101+
}
102+
103+
}
104+
105+
}

0 commit comments

Comments
 (0)