Skip to content

Commit b35db82

Browse files
author
Royce Whetstine
authored
Merge pull request #116 from ModdingFox/Issue_115
app/src/main/java/open/furaffinity/client/dialogs/uploadDialog.java: …
2 parents 7352bbf + ac9acc8 commit b35db82

8 files changed

Lines changed: 201 additions & 263 deletions

File tree

.idea/gradle.xml

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

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

app/src/main/java/open/furaffinity/client/dialogs/uploadDialog.java

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import open.furaffinity.client.abstractClasses.abstractPage;
3131
import open.furaffinity.client.submitPages.submitSubmissionPart1;
3232
import open.furaffinity.client.submitPages.submitSubmissionPart2;
33-
import open.furaffinity.client.submitPages.submitSubmissionPart3;
3433
import open.furaffinity.client.utilities.kvPair;
3534
import open.furaffinity.client.utilities.uiControls;
3635

@@ -142,28 +141,17 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
142141
builder.setPositiveButton(R.string.acceptButton, (dialog, which) -> new submitSubmissionPart2(context, new abstractPage.pageListener() {
143142
@Override
144143
public void requestSucceeded(abstractPage abstractPage) {
145-
new submitSubmissionPart3(context, new abstractPage.pageListener() {
146-
@Override
147-
public void requestSucceeded(open.furaffinity.client.abstractClasses.abstractPage abstractPage) {
148-
uploadFinalizeDialog uploadFinalizeDialog = new uploadFinalizeDialog(((submitSubmissionPart3) abstractPage));
149-
uploadFinalizeDialog.show(fragmentManager, "uploadFinalizeDialog");
150-
uploadDialog.this.dismiss();
151-
}
152-
153-
@Override
154-
public void requestFailed(open.furaffinity.client.abstractClasses.abstractPage abstractPage) {
155-
Toast.makeText(context, "Failed to upload submission step 3", Toast.LENGTH_SHORT).show();
156-
uploadDialog.this.dismiss();
157-
}
158-
}, ((submitSubmissionPart2) abstractPage), sourceFilePath.getText().toString(), thumbnailFilePath.getText().toString()).execute();
144+
uploadFinalizeDialog uploadFinalizeDialog = new uploadFinalizeDialog(((submitSubmissionPart2) abstractPage));
145+
uploadFinalizeDialog.show(fragmentManager, "uploadFinalizeDialog");
146+
uploadDialog.this.dismiss();
159147
}
160148

161149
@Override
162150
public void requestFailed(abstractPage abstractPage) {
163151
Toast.makeText(context, "Failed to upload submission step 2", Toast.LENGTH_SHORT).show();
164152
uploadDialog.this.dismiss();
165153
}
166-
}, page).execute());
154+
}, page, sourceFilePath.getText().toString(), thumbnailFilePath.getText().toString()).execute());
167155
builder.setNegativeButton(R.string.cancelButton, (dialog, which) -> {
168156

169157
});

app/src/main/java/open/furaffinity/client/dialogs/uploadFinalizeDialog.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@
2121

2222
import open.furaffinity.client.R;
2323
import open.furaffinity.client.abstractClasses.abstractPage;
24+
import open.furaffinity.client.submitPages.submitSubmissionPart2;
2425
import open.furaffinity.client.submitPages.submitSubmissionPart3;
2526
import open.furaffinity.client.utilities.kvPair;
2627
import open.furaffinity.client.utilities.uiControls;
2728

2829
public class uploadFinalizeDialog extends DialogFragment {
29-
private final submitSubmissionPart3 page;
30+
private final submitSubmissionPart2 page;
3031
private Spinner cat;
3132
private Spinner aType;
3233
private Spinner species;
@@ -38,7 +39,7 @@ public class uploadFinalizeDialog extends DialogFragment {
3839
private Switch disableComments;
3940
private Switch putInScraps;
4041

41-
public uploadFinalizeDialog(submitSubmissionPart3 page) {
42+
public uploadFinalizeDialog(submitSubmissionPart2 page) {
4243
super();
4344
this.page = page;
4445
}
@@ -83,16 +84,7 @@ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
8384

8485
builder.setView(rootView);
8586
builder.setPositiveButton(R.string.acceptButton, (dialog, which) -> {
86-
List<HashMap<String, String>> params = new ArrayList<>();
87-
88-
for (String key : page.getParams().keySet()) {
89-
HashMap<String, String> newParam = new HashMap<>();
90-
newParam.put("name", key);
91-
newParam.put("value", page.getParams().get(key));
92-
params.add(newParam);
93-
}
94-
95-
new open.furaffinity.client.submitPages.submitSubmissionPart4(context, new abstractPage.pageListener() {
87+
new submitSubmissionPart3(context, new abstractPage.pageListener() {
9688
@Override
9789
public void requestSucceeded(abstractPage abstractPage) {
9890
Toast.makeText(context, "Successfully uploaded submission", Toast.LENGTH_SHORT).show();
@@ -101,10 +93,10 @@ public void requestSucceeded(abstractPage abstractPage) {
10193

10294
@Override
10395
public void requestFailed(abstractPage abstractPage) {
104-
Toast.makeText(context, "Failed to upload submission step 4", Toast.LENGTH_SHORT).show();
96+
Toast.makeText(context, "Failed to upload submission step 3", Toast.LENGTH_SHORT).show();
10597
uploadFinalizeDialog.this.dismiss();
10698
}
107-
}, params, kvPair.getSelectedValue(cat), kvPair.getSelectedValue(aType), kvPair.getSelectedValue(species), kvPair.getSelectedValue(gender), kvPair.getSelectedValue(rating), title.getText().toString(), description.getText().toString(), keywords.getText().toString(), disableComments.isChecked(), putInScraps.isChecked()).execute();
99+
}, page.getSubmissionKey(), kvPair.getSelectedValue(cat), kvPair.getSelectedValue(aType), kvPair.getSelectedValue(species), kvPair.getSelectedValue(gender), kvPair.getSelectedValue(rating), title.getText().toString(), description.getText().toString(), keywords.getText().toString(), disableComments.isChecked(), putInScraps.isChecked()).execute();
108100
});
109101
builder.setNegativeButton(R.string.cancelButton, (dialog, which) -> {
110102

app/src/main/java/open/furaffinity/client/submitPages/submitSubmissionPart1.java

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public class submitSubmissionPart1 extends open.furaffinity.client.abstractClass
1515
private static final String pagePath = "/submit/";
1616

1717
private HashMap<String, String> submissionType = new HashMap<>();
18+
private String maxFileSize = "";
19+
private String submissionKey = "";
1820

1921
private String submissionTypeCurrent = "";
2022

@@ -26,6 +28,8 @@ public submitSubmissionPart1(submitSubmissionPart1 submitSubmissionPart1) {
2628
super(submitSubmissionPart1.context, submitSubmissionPart1.pageListener);
2729
this.submissionType = submitSubmissionPart1.submissionType;
2830
this.submissionTypeCurrent = submitSubmissionPart1.submissionTypeCurrent;
31+
this.maxFileSize = submitSubmissionPart1.maxFileSize;
32+
this.submissionKey = submitSubmissionPart1.submissionKey;
2933
}
3034

3135
public static String getPagePath() {
@@ -34,6 +38,7 @@ public static String getPagePath() {
3438

3539
@Override
3640
protected Boolean processPageData(String html) {
41+
boolean result = true;
3742
Document doc = Jsoup.parse(html);
3843

3944
Elements submissionTypeInputs = doc.select("input[name=submission_type]");
@@ -49,9 +54,34 @@ protected Boolean processPageData(String html) {
4954

5055
submissionType.put(key, value);
5156
}
52-
return true;
57+
58+
if(submissionType.keySet().size() < 1) {
59+
result = false;
60+
}
61+
} else {
62+
result = false;
5363
}
54-
return false;
64+
65+
Element uploadFormForm = doc.selectFirst("form[id=myform]");
66+
if (uploadFormForm != null) {
67+
Element keyInput = uploadFormForm.selectFirst("input[name=key]");
68+
if (keyInput != null) {
69+
submissionKey = keyInput.attr("value");
70+
} else {
71+
result = false;
72+
}
73+
74+
Element maxFileSizeInput = uploadFormForm.selectFirst("input[name=MAX_FILE_SIZE]");
75+
if (maxFileSizeInput != null) {
76+
maxFileSize = maxFileSizeInput.attr("value");
77+
} else {
78+
result = false;
79+
}
80+
} else {
81+
result = false;
82+
}
83+
84+
return result;
5585
}
5686

5787
@Override
@@ -60,7 +90,7 @@ protected Boolean doInBackground(Void... voids) {
6090
if (webClient.getLastPageLoaded() && html != null) {
6191
return processPageData(html);
6292
}
63-
return null;
93+
return false;
6494
}
6595

6696
public HashMap<String, String> getSubmissionType() {
@@ -71,6 +101,14 @@ public String getSubmissionTypeCurrent() {
71101
return submissionTypeCurrent;
72102
}
73103

104+
public String getMaxFileSize() {
105+
return maxFileSize;
106+
}
107+
108+
public String getSubmissionKey() {
109+
return submissionKey;
110+
}
111+
74112
public void setSubmissionTypeCurrent(String submissionTypeCurrent) {
75113
if (submissionType.containsKey(submissionTypeCurrent)) {
76114
this.submissionTypeCurrent = submissionTypeCurrent;

app/src/main/java/open/furaffinity/client/submitPages/submitSubmissionPart2.java

Lines changed: 102 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,33 @@
77
import org.jsoup.nodes.Element;
88
import org.jsoup.select.Elements;
99

10+
import java.io.File;
11+
import java.util.ArrayList;
1012
import java.util.HashMap;
13+
import java.util.List;
1114

1215
import open.furaffinity.client.abstractClasses.abstractPage;
1316

1417
public class submitSubmissionPart2 extends open.furaffinity.client.abstractClasses.abstractPage {
15-
private static String pagePath = "/submit/";
18+
private static final String pagePath = "/submit/upload/";
1619

17-
private HashMap<String, String> params = new HashMap<>();
18-
private open.furaffinity.client.submitPages.submitSubmissionPart1 submitSubmissionPart1;
20+
private final String sourceFilePath;
21+
private final String thumbnailFilePath;
1922

20-
public submitSubmissionPart2(Context context, abstractPage.pageListener pageListener, open.furaffinity.client.submitPages.submitSubmissionPart1 submitSubmissionPart1) {
23+
private String submissionKey = "";
24+
private HashMap<String, String> rating = new HashMap<>();
25+
private HashMap<String, String> cat = new HashMap<>();
26+
private HashMap<String, String> aType = new HashMap<>();
27+
private HashMap<String, String> species = new HashMap<>();
28+
private HashMap<String, String> gender = new HashMap<>();
29+
30+
private final open.furaffinity.client.submitPages.submitSubmissionPart1 submitSubmissionPart1;
31+
32+
public submitSubmissionPart2(Context context, abstractPage.pageListener pageListener, open.furaffinity.client.submitPages.submitSubmissionPart1 submitSubmissionPart1, String sourceFilePath, String thumbnailFilePath) {
2133
super(context, pageListener);
2234
this.submitSubmissionPart1 = submitSubmissionPart1;
35+
this.sourceFilePath = sourceFilePath;
36+
this.thumbnailFilePath = thumbnailFilePath;
2337
}
2438

2539
public static String getPagePath() {
@@ -28,30 +42,80 @@ public static String getPagePath() {
2842

2943
@Override
3044
protected Boolean processPageData(String html) {
45+
boolean result = true;
3146
Document doc = Jsoup.parse(html);
3247

33-
Element myformForm = doc.selectFirst("form[name=myform]");
34-
35-
if (myformForm != null) {
36-
params = new HashMap<>();
37-
38-
Elements hiddenInputs = myformForm.select("input[type=hidden]");
48+
Element finalizeForm = doc.selectFirst("form[id=myform]");
49+
if (finalizeForm != null) {
50+
Element keyInput = finalizeForm.selectFirst("input[name=key]");
51+
if (keyInput != null) {
52+
submissionKey = keyInput.attr("value");
53+
} else {
54+
result = false;
55+
}
56+
} else {
57+
result = false;
58+
}
3959

40-
if (hiddenInputs != null) {
41-
for (Element hiddenInput : hiddenInputs) {
42-
params.put(hiddenInput.attr("name"), hiddenInput.attr("value"));
60+
Element catSelect = doc.selectFirst("select[name=cat]");
61+
Element atypeSelect = doc.selectFirst("select[name=atype]");
62+
Element speciesSelect = doc.selectFirst("select[name=species]");
63+
Element genderSelect = doc.selectFirst("select[name=gender]");
64+
Elements ratingInputs = doc.select("input[name=rating]");
65+
66+
cat = open.furaffinity.client.utilities.html.getDropDownOptions(catSelect);
67+
aType = open.furaffinity.client.utilities.html.getDropDownOptions(atypeSelect);
68+
species = open.furaffinity.client.utilities.html.getDropDownOptions(speciesSelect);
69+
gender = open.furaffinity.client.utilities.html.getDropDownOptions(genderSelect);
70+
71+
if (ratingInputs != null) {
72+
for (Element ratingInput : ratingInputs) {
73+
Element nextDiv = ratingInput.nextElementSibling();
74+
if (nextDiv != null) {
75+
rating.put(ratingInput.attr("value"), nextDiv.text());
4376
}
44-
return true;
4577
}
4678
}
47-
return false;
79+
80+
return result;
4881
}
4982

5083
@Override
5184
protected Boolean doInBackground(Void... voids) {
52-
HashMap<String, String> postParams = new HashMap<>();
53-
postParams.put("part", "2");
54-
postParams.put("submission_type", submitSubmissionPart1.getSubmissionTypeCurrent());
85+
HashMap<String, String> simplePostParams = new HashMap<>();
86+
simplePostParams.put("MAX_FILE_SIZE", submitSubmissionPart1.getMaxFileSize());
87+
simplePostParams.put("key", submitSubmissionPart1.getSubmissionKey());
88+
simplePostParams.put("submission_type", submitSubmissionPart1.getSubmissionTypeCurrent());
89+
90+
List<HashMap<String, String>> postParams = new ArrayList<>();
91+
92+
for (String key : simplePostParams.keySet()) {
93+
HashMap<String, String> newParam = new HashMap<>();
94+
newParam.put("name", key);
95+
newParam.put("value", simplePostParams.get(key));
96+
postParams.add(newParam);
97+
}
98+
99+
File sourceFile = new File(sourceFilePath);
100+
if (sourceFile.exists()) {
101+
HashMap<String, String> newParam = new HashMap<>();
102+
newParam.put("name", "submission");
103+
newParam.put("filePath", sourceFile.getPath());
104+
postParams.add(newParam);
105+
}
106+
107+
File thumbnailFile = new File(thumbnailFilePath);
108+
if (thumbnailFile.exists()) {
109+
HashMap<String, String> newParam = new HashMap<>();
110+
newParam.put("name", "thumbnail");
111+
newParam.put("filePath", thumbnailFile.getPath());
112+
postParams.add(newParam);
113+
} else {
114+
HashMap<String, String> newParam = new HashMap<>();
115+
newParam.put("name", "thumbnail");
116+
newParam.put("filePath", "");
117+
postParams.add(newParam);
118+
}
55119

56120
String html = webClient.sendPostRequest(open.furaffinity.client.utilities.webClient.getBaseUrl() + pagePath, postParams);
57121
if (webClient.getLastPageLoaded() && html != null) {
@@ -60,7 +124,25 @@ protected Boolean doInBackground(Void... voids) {
60124
return false;
61125
}
62126

63-
public HashMap<String, String> getParams() {
64-
return params;
127+
public String getSubmissionKey() { return submissionKey; }
128+
129+
public HashMap<String, String> getCat() {
130+
return cat;
131+
}
132+
133+
public HashMap<String, String> getaType() {
134+
return aType;
135+
}
136+
137+
public HashMap<String, String> getSpecies() {
138+
return species;
139+
}
140+
141+
public HashMap<String, String> getGender() {
142+
return gender;
143+
}
144+
145+
public HashMap<String, String> getRating() {
146+
return rating;
65147
}
66148
}

0 commit comments

Comments
 (0)