Skip to content

Commit 5638d82

Browse files
committed
Implement missing tag api methods
1 parent 32317da commit 5638d82

File tree

2 files changed

+174
-79
lines changed

2 files changed

+174
-79
lines changed

core/src/main/java/eu/bittrade/libs/steemj/plugins/apis/tags/TagsApi.java

+105-79
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
package eu.bittrade.libs.steemj.plugins.apis.tags;
22

3-
import java.text.ParseException;
4-
import java.text.SimpleDateFormat;
5-
import java.util.Date;
63
import java.util.List;
7-
import java.util.TimeZone;
84

9-
import eu.bittrade.libs.steemj.base.models.Permlink;
105
import eu.bittrade.libs.steemj.communication.CommunicationHandler;
116
import eu.bittrade.libs.steemj.communication.jrpc.JsonRPCRequest;
12-
import eu.bittrade.libs.steemj.configuration.SteemJConfig;
137
import eu.bittrade.libs.steemj.enums.RequestMethods;
148
import eu.bittrade.libs.steemj.enums.SteemApiType;
159
import eu.bittrade.libs.steemj.exceptions.SteemCommunicationException;
1610
import eu.bittrade.libs.steemj.exceptions.SteemResponseException;
17-
import eu.bittrade.libs.steemj.exceptions.SteemTransformationException;
1811
import eu.bittrade.libs.steemj.plugins.apis.tags.enums.DiscussionSortType;
1912
import eu.bittrade.libs.steemj.plugins.apis.tags.models.Discussion;
13+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.DiscussionQuery;
14+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.DiscussionQueryResult;
15+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetActiveVotesArgs;
16+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetActiveVotesReturn;
17+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetDiscussionArgs;
18+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetDiscussionsByAuthorBeforeDateArgs;
19+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetRepliesByLastUpdateArgs;
20+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetTagsUsedByAuthorArgs;
21+
import eu.bittrade.libs.steemj.plugins.apis.tags.models.GetTagsUsedByAuthorReturn;
2022
import eu.bittrade.libs.steemj.plugins.apis.tags.models.Tag;
21-
import eu.bittrade.libs.steemj.plugins.apis.tags.models.VoteState;
22-
import eu.bittrade.libs.steemj.protocol.AccountName;
2323

2424
/**
2525
* This class implements the tags api.
@@ -82,14 +82,43 @@ public static List<Tag> getTrendingTags(CommunicationHandler communicationHandle
8282
return communicationHandler.performRequest(requestObject, Tag.class);
8383
}
8484

85-
public static void getTagsUsedByAuthor(CommunicationHandler communicationHandler) {
86-
85+
/**
86+
*
87+
* @param communicationHandler
88+
* @param getTagsUsedByAuthorArgs
89+
* @return
90+
* @throws SteemCommunicationException
91+
* @throws SteemResponseException
92+
*/
93+
public static GetTagsUsedByAuthorReturn getTagsUsedByAuthor(CommunicationHandler communicationHandler,
94+
GetTagsUsedByAuthorArgs getTagsUsedByAuthorArgs)
95+
throws SteemCommunicationException, SteemResponseException {
96+
JsonRPCRequest requestObject = new JsonRPCRequest();
97+
requestObject.setApiMethod(RequestMethods.GET_CONTENT_REPLIES);
98+
requestObject.setSteemApi(SteemApiType.TAGS_API);
99+
requestObject.setAdditionalParameters(getTagsUsedByAuthorArgs);
100+
101+
return communicationHandler.performRequest(requestObject, GetTagsUsedByAuthorReturn.class).get(0);
87102
}
88-
89-
public static void getDiscussion(CommunicationHandler communicationHandler) {
90-
103+
104+
/**
105+
*
106+
* @param communicationHandler
107+
* @param getDiscussionArgs
108+
* @return
109+
* @throws SteemCommunicationException
110+
* @throws SteemResponseException
111+
*/
112+
public static Discussion getDiscussion(CommunicationHandler communicationHandler,
113+
GetDiscussionArgs getDiscussionArgs) throws SteemCommunicationException, SteemResponseException {
114+
JsonRPCRequest requestObject = new JsonRPCRequest();
115+
requestObject.setApiMethod(RequestMethods.GET_DISCUSSION);
116+
requestObject.setSteemApi(SteemApiType.TAGS_API);
117+
requestObject.setAdditionalParameters(getDiscussionArgs);
118+
119+
return communicationHandler.performRequest(requestObject, Discussion.class).get(0);
91120
}
92-
121+
93122
/**
94123
* Get the replies of a specific post.
95124
*
@@ -113,26 +142,52 @@ public static void getDiscussion(CommunicationHandler communicationHandler) {
113142
* <li>If the Server returned an error object.</li>
114143
* </ul>
115144
*/
116-
public List<Discussion> getContentReplies(CommunicationHandler communicationHandler, AccountName author, Permlink permlink)
117-
throws SteemCommunicationException, SteemResponseException {
145+
public DiscussionQueryResult getContentReplies(CommunicationHandler communicationHandler,
146+
DiscussionQuery discussionQuery) throws SteemCommunicationException, SteemResponseException {
118147
JsonRPCRequest requestObject = new JsonRPCRequest();
119148
requestObject.setApiMethod(RequestMethods.GET_CONTENT_REPLIES);
120-
requestObject.setSteemApi(SteemApiType.DATABASE_API);
121-
String[] parameters = { author.getName(), permlink.getLink() };
122-
requestObject.setAdditionalParameters(parameters);
149+
requestObject.setSteemApi(SteemApiType.TAGS_API);
150+
requestObject.setAdditionalParameters(discussionQuery);
123151

124-
return communicationHandler.performRequest(requestObject, Discussion.class);
152+
return communicationHandler.performRequest(requestObject, DiscussionQueryResult.class).get(0);
125153
}
126-
127-
128-
public static void getPostDiscussionsByPayout() {
129-
154+
155+
/**
156+
*
157+
* @param communicationHandler
158+
* @param discussionQuery
159+
* @return
160+
* @throws SteemCommunicationException
161+
* @throws SteemResponseException
162+
*/
163+
public static DiscussionQueryResult getPostDiscussionsByPayout(CommunicationHandler communicationHandler,
164+
DiscussionQuery discussionQuery) throws SteemCommunicationException, SteemResponseException {
165+
JsonRPCRequest requestObject = new JsonRPCRequest();
166+
requestObject.setApiMethod(RequestMethods.GET_POST_DISCUSSIONS_BY_PAYOUT);
167+
requestObject.setSteemApi(SteemApiType.TAGS_API);
168+
requestObject.setAdditionalParameters(discussionQuery);
169+
170+
return communicationHandler.performRequest(requestObject, DiscussionQueryResult.class).get(0);
130171
}
131-
132-
public static void getCommentDiscussionsByPayout() {
133-
172+
173+
/**
174+
*
175+
* @param communicationHandler
176+
* @param discussionQuery
177+
* @return
178+
* @throws SteemCommunicationException
179+
* @throws SteemResponseException
180+
*/
181+
public static DiscussionQueryResult getCommentDiscussionsByPayout(CommunicationHandler communicationHandler,
182+
DiscussionQuery discussionQuery) throws SteemCommunicationException, SteemResponseException {
183+
JsonRPCRequest requestObject = new JsonRPCRequest();
184+
requestObject.setApiMethod(RequestMethods.GET_COMMENT_DISCUSSIONS_BY_PAYOUT);
185+
requestObject.setSteemApi(SteemApiType.TAGS_API);
186+
requestObject.setAdditionalParameters(discussionQuery);
187+
188+
return communicationHandler.performRequest(requestObject, DiscussionQueryResult.class).get(0);
134189
}
135-
190+
136191
/**
137192
* Get active discussions for a specified tag.
138193
*
@@ -156,30 +211,15 @@ public static void getCommentDiscussionsByPayout() {
156211
* <li>If the Server returned an error object.</li>
157212
* </ul>
158213
*/
159-
public List<Discussion> getDiscussionsBy(CommunicationHandler communicationHandler, eu.bittrade.libs.steemj.plugins.apis.tags.models.DiscussionQuery discussionQuery, DiscussionSortType sortBy)
160-
throws SteemCommunicationException, SteemResponseException {
214+
public List<Discussion> getDiscussionsBy(CommunicationHandler communicationHandler, DiscussionQuery discussionQuery,
215+
DiscussionSortType sortBy) throws SteemCommunicationException, SteemResponseException {
161216
JsonRPCRequest requestObject = new JsonRPCRequest();
162-
163217
requestObject.setApiMethod(RequestMethods.valueOf(sortBy.name()));
164-
requestObject.setSteemApi(SteemApiType.DATABASE_API);
165-
Object[] parameters = { discussionQuery };
166-
requestObject.setAdditionalParameters(parameters);
218+
requestObject.setSteemApi(SteemApiType.TAGS_API);
219+
requestObject.setAdditionalParameters(discussionQuery);
167220

168221
return communicationHandler.performRequest(requestObject, Discussion.class);
169-
170-
/*(get_discussions_by_trending)
171-
(get_discussions_by_created)
172-
(get_discussions_by_active)
173-
(get_discussions_by_cashout)
174-
(get_discussions_by_votes)
175-
(get_discussions_by_children)
176-
(get_discussions_by_hot)
177-
(get_discussions_by_feed)
178-
(get_discussions_by_blog)
179-
(get_discussions_by_comments)
180-
(get_discussions_by_promoted)*/
181222
}
182-
183223

184224
/**
185225
* /** Get a list of Content starting from the given post of the given user.
@@ -207,17 +247,17 @@ public List<Discussion> getDiscussionsBy(CommunicationHandler communicationHandl
207247
* <li>If the Server returned an error object.</li>
208248
* </ul>
209249
*/
210-
public List<Discussion> getRepliesByLastUpdate(CommunicationHandler communicationHandler, AccountName username, Permlink permlink, int limit)
250+
public List<Discussion> getRepliesByLastUpdate(CommunicationHandler communicationHandler,
251+
GetRepliesByLastUpdateArgs getRepliesByLastUpdateArgs)
211252
throws SteemCommunicationException, SteemResponseException {
212253
JsonRPCRequest requestObject = new JsonRPCRequest();
213254
requestObject.setApiMethod(RequestMethods.GET_REPLIES_BY_LAST_UPDATE);
214-
requestObject.setSteemApi(SteemApiType.DATABASE_API);
215-
Object[] parameters = { username, permlink.getLink(), String.valueOf(limit) };
216-
requestObject.setAdditionalParameters(parameters);
255+
requestObject.setSteemApi(SteemApiType.TAGS_API);
256+
requestObject.setAdditionalParameters(getRepliesByLastUpdateArgs);
217257

218258
return communicationHandler.performRequest(requestObject, Discussion.class);
219259
}
220-
260+
221261
/**
222262
* Get a list of discussion for a given author.
223263
*
@@ -246,30 +286,17 @@ public List<Discussion> getRepliesByLastUpdate(CommunicationHandler communicatio
246286
* <li>If the Server returned an error object.</li>
247287
* </ul>
248288
*/
249-
public List<Discussion> getDiscussionsByAuthorBeforeDate(CommunicationHandler communicationHandler, AccountName author, Permlink permlink, String date,
250-
int limit) throws SteemCommunicationException, SteemResponseException {
289+
public DiscussionQueryResult getDiscussionsByAuthorBeforeDate(CommunicationHandler communicationHandler,
290+
GetDiscussionsByAuthorBeforeDateArgs getDiscussionsByAuthorBeforeDateArgs)
291+
throws SteemCommunicationException, SteemResponseException {
251292
JsonRPCRequest requestObject = new JsonRPCRequest();
252-
253293
requestObject.setApiMethod(RequestMethods.GET_DISCUSSIONS_BY_AUTHOR_BEFORE_DATE);
254-
requestObject.setSteemApi(SteemApiType.DATABASE_API);
294+
requestObject.setSteemApi(SteemApiType.TAGS_API);
295+
requestObject.setAdditionalParameters(getDiscussionsByAuthorBeforeDateArgs);
255296

256-
// Verify that the date has the correct format.
257-
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(SteemJConfig.getInstance().getDateTimePattern());
258-
simpleDateFormat.setTimeZone(TimeZone.getTimeZone(SteemJConfig.getInstance().getTimeZoneId()));
259-
Date beforeDate;
260-
try {
261-
beforeDate = simpleDateFormat.parse(date);
262-
} catch (ParseException e) {
263-
throw new SteemTransformationException("Could not parse the received date to a Date object.", e);
264-
}
265-
266-
String[] parameters = { author.getName(), permlink.getLink(), simpleDateFormat.format(beforeDate),
267-
String.valueOf(limit) };
268-
requestObject.setAdditionalParameters(parameters);
269-
270-
return communicationHandler.performRequest(requestObject, Discussion.class);
297+
return communicationHandler.performRequest(requestObject, DiscussionQueryResult.class).get(0);
271298
}
272-
299+
273300
/**
274301
* Get the active votes for a given post of a given author.
275302
*
@@ -293,14 +320,13 @@ public List<Discussion> getDiscussionsByAuthorBeforeDate(CommunicationHandler co
293320
* <li>If the Server returned an error object.</li>
294321
* </ul>
295322
*/
296-
public static List<VoteState> getActiveVotes(CommunicationHandler communicationHandler, AccountName author, Permlink permlink)
297-
throws SteemCommunicationException, SteemResponseException {
323+
public static GetActiveVotesReturn getActiveVotes(CommunicationHandler communicationHandler,
324+
GetActiveVotesArgs getActiveVotesArgs) throws SteemCommunicationException, SteemResponseException {
298325
JsonRPCRequest requestObject = new JsonRPCRequest();
299326
requestObject.setApiMethod(RequestMethods.GET_ACTIVE_VOTES);
300-
requestObject.setSteemApi(SteemApiType.DATABASE_API);
301-
String[] parameters = { author.getName(), permlink.getLink() };
302-
requestObject.setAdditionalParameters(parameters);
327+
requestObject.setSteemApi(SteemApiType.TAGS_API);
328+
requestObject.setAdditionalParameters(getActiveVotesArgs);
303329

304-
return communicationHandler.performRequest(requestObject, VoteState.class);
330+
return communicationHandler.performRequest(requestObject, GetActiveVotesReturn.class).get(0);
305331
}
306332
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package eu.bittrade.libs.steemj.plugins.apis.tags.models;
2+
3+
import org.apache.commons.lang3.builder.ToStringBuilder;
4+
5+
import com.fasterxml.jackson.annotation.JsonCreator;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
8+
import eu.bittrade.libs.steemj.base.models.Permlink;
9+
import eu.bittrade.libs.steemj.protocol.AccountName;
10+
import eu.bittrade.libs.steemj.util.SteemJUtils;
11+
12+
/**
13+
* This class represents a Steem "get_active_votes_args" object.
14+
*
15+
* @author <a href="http://steemit.com/@dez1337">dez1337</a>
16+
*/
17+
public class GetActiveVotesArgs {
18+
@JsonProperty("author")
19+
private AccountName author;
20+
@JsonProperty("permlink")
21+
private Permlink permlink;
22+
23+
/**
24+
*
25+
* @param author
26+
* @param permlink
27+
*/
28+
@JsonCreator
29+
public GetActiveVotesArgs(@JsonProperty("author") AccountName author, @JsonProperty("permlink") Permlink permlink) {
30+
this.setAuthor(author);
31+
this.setPermlink(permlink);
32+
}
33+
34+
/**
35+
* @return the author
36+
*/
37+
public AccountName getAuthor() {
38+
return author;
39+
}
40+
41+
/**
42+
* @param author
43+
* the author to set
44+
*/
45+
public void setAuthor(AccountName author) {
46+
this.author = SteemJUtils.setIfNotNull(author, "The account needs to be provided.");
47+
}
48+
49+
/**
50+
* @return the permlink
51+
*/
52+
public Permlink getPermlink() {
53+
return permlink;
54+
}
55+
56+
/**
57+
* @param permlink
58+
* the permlink to set
59+
*/
60+
public void setPermlink(Permlink permlink) {
61+
this.permlink = SteemJUtils.setIfNotNull(permlink, "The permlink needs to be provided.");
62+
;
63+
}
64+
65+
@Override
66+
public String toString() {
67+
return ToStringBuilder.reflectionToString(this);
68+
}
69+
}

0 commit comments

Comments
 (0)