Skip to content

Commit

Permalink
fix: oauth1 endpoints to access protected content (#158)
Browse files Browse the repository at this point in the history
* fix_oauth1_endpoints

* fixing unit tests

* renaming requet helper field

* last commit

* fixing following nrt

* update version
  • Loading branch information
redouane59 authored Mar 11, 2021
1 parent b2df670 commit 51127f5
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 102 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.github.redouane59.twitter</groupId>
<artifactId>twittered</artifactId>
<version>1.20</version>
<version>1.21</version>

<name>twittered</name>
<description>java client for twitter API</description>
Expand Down
102 changes: 56 additions & 46 deletions src/main/java/com/github/redouane59/twitter/TwitterClient.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package com.github.redouane59.twitter.helpers;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Optional;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.github.redouane59.twitter.TwitterClient;
import com.github.redouane59.twitter.signature.TwitterCredentials;
Expand All @@ -14,7 +9,10 @@
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Optional;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -88,19 +86,19 @@ public <T> Optional<T> makeRequest(Verb verb, String url, Map<String, String> he
}
if (body != null && verb.isPermitBody()) {
request.setPayload(body);
if (!request.getHeaders().containsKey("Content-Type")) {
request.addHeader("Content-Type", "application/json");
}
if (!request.getHeaders().containsKey("Content-Type")) {
request.addHeader("Content-Type", "application/json");
}
}
return makeRequest(request, signRequired, classType);
}

public <T> Optional<T> makeRequest(OAuthRequest request, boolean signRequired, Class<T> classType) {
T result = null;
try {
if (signRequired) {
signRequest(request);
}
if (signRequired) {
signRequest(request);
}
Response response = getService().execute(request);
String stringResponse = response.getBody();
if (response.getCode() == 429) {
Expand All @@ -125,4 +123,8 @@ public <T> Optional<T> makeRequest(OAuthRequest request, boolean signRequired, C
return Optional.ofNullable(result);
}

public abstract <T> Optional<T> getRequest(String url, Class<T> classType);

public abstract <T> Optional<T> getRequestWithParameters(String url, Map<String, String> parameters, Class<T> classType);

}
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
package com.github.redouane59.twitter.helpers;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Map;
import java.util.Optional;

import com.github.redouane59.twitter.signature.TwitterCredentials;
import com.github.scribejava.core.httpclient.multipart.FileByteArrayBodyPartPayload;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth10aService;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Map;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class RequestHelper extends AbstractRequestHelper {

public RequestHelper(TwitterCredentials twitterCredentials) {
super(twitterCredentials);
super(twitterCredentials);
}

public RequestHelper(TwitterCredentials twitterCredentials, OAuth10aService service) {
super(twitterCredentials, service);
super(twitterCredentials, service);
}

public <T> Optional<T> postRequestWithBodyJson(String url, Map<String, String> parameters, String requestBodyJson, Class<T> classType) {
Expand All @@ -32,14 +30,14 @@ public <T> Optional<T> postRequestWithBodyJson(String url, Map<String, String> p
public <T> Optional<T> postRequest(String url, Map<String, String> parameters, Class<T> classType) {
return postRequestWithBodyJson(url, parameters, null, classType);
}

public <T> Optional<T> uploadMedia(String url, File file, Class<T> classType) {
try {
return uploadMedia(url, file.getName(), Files.readAllBytes(file.toPath()), classType);
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
return Optional.empty();
}
try {
return uploadMedia(url, file.getName(), Files.readAllBytes(file.toPath()), classType);
} catch (IOException e) {
LOGGER.error(e.getMessage(), e);
return Optional.empty();
}
}

public <T> Optional<T> uploadMedia(String url, String fileName, byte[] data, Class<T> classType) {
Expand All @@ -50,7 +48,7 @@ public <T> Optional<T> uploadMedia(String url, String fileName, byte[] data, Cla
}

public <T> Optional<T> putRequest(String url, String body, Class<T> classType) {
return makeRequest(Verb.PUT, url, null, body, true, classType);
return makeRequest(Verb.PUT, url, null, body, true, classType);
}

public <T> Optional<T> getRequest(String url, Class<T> classType) {
Expand All @@ -61,10 +59,10 @@ public <T> Optional<T> getRequest(String url, Class<T> classType) {
public <T> Optional<T> getRequestWithParameters(String url, Map<String, String> parameters, Class<T> classType) {
return makeRequest(Verb.GET, url, parameters, null, true, classType);
}

@Override
protected void signRequest(OAuthRequest request) {
getService().signRequest(getTwitterCredentials().asAccessToken(), request);
getService().signRequest(getTwitterCredentials().asAccessToken(), request);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ public void testUploadMedia() throws Exception {

@Test
public void testAnswerToSeveralUsers() {
Tweet tweet = twitterClient.postTweet(".", "1341161857931874304");
Tweet tweet = twitterClient.postTweet(".", "1369395732415922182");
assertNotNull(tweet);
assertNotNull(tweet.getId());
twitterClient.deleteTweet(tweet.getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,6 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import com.github.redouane59.RelationType;
import com.github.redouane59.twitter.TwitterClient;
import com.github.redouane59.twitter.dto.stream.StreamRules.StreamMeta;
Expand All @@ -26,7 +18,13 @@
import com.github.redouane59.twitter.dto.user.User;
import com.github.redouane59.twitter.helpers.ConverterHelper;
import com.github.scribejava.core.model.Response;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -198,7 +196,7 @@ public void testGetTweetIdWithTwoTypes() {

@Test
public void testHideAndUnideReply() {
String tweetId = "1298226351653056514";
String tweetId = "1355818194754281472";
boolean reply = twitterClient.hideReply(tweetId, true);
assertTrue(reply);
reply = twitterClient.hideReply(tweetId, false);
Expand Down Expand Up @@ -252,7 +250,7 @@ public void testGetUserTimeline() {

@Test
public void testGetUserTimelineWithDates() {
List<Tweet> result = twitterClient.getUserTimeline("1120050519182016513", 20, ConverterHelper.dayBeforeNow(5),
List<Tweet> result = twitterClient.getUserTimeline(this.userId, 20, ConverterHelper.dayBeforeNow(5),
ConverterHelper.dayBeforeNow(1), null, null);
assertEquals(20, result.size());
assertNotNull(result.get(0).getId());
Expand All @@ -261,9 +259,9 @@ public void testGetUserTimelineWithDates() {

@Test
public void testGetUserTimelineWithIds() {
List<Tweet> result = twitterClient.getUserTimeline(this.userId, 10, null, null, "1339662509201121280",
"1339667017109032966");
assertEquals(2, result.size());
List<Tweet> result = twitterClient.getUserTimeline(this.userId, 10, null, null, "1368841795061350402",
"1369395486743011338");
assertTrue(result.size() > 0);
assertNotNull(result.get(0).getId());
assertNotNull(result.get(0).getText());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.github.redouane59.twitter.unit;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;

import com.github.redouane59.twitter.TwitterClient;
import com.github.redouane59.twitter.signature.TwitterCredentials;
Expand Down Expand Up @@ -30,15 +30,15 @@ public static void init() {

@Test
public void testRequestHelpers() {
assertNotNull(twitterClient.getRequestHelper());
assertNotNull(twitterClient.getRequestHelperV1());
assertNotNull(twitterClient.getRequestHelperV2());
}

@Test
public void testRequestV1String() {
Optional<String>
result =
twitterClient.getRequestHelper().postRequest(twitterClient.getUrlHelper().getLikeUrl("12345"), new HashMap<>(), String.class);
twitterClient.getRequestHelperV1().postRequest(twitterClient.getUrlHelper().getLikeUrl("12345"), new HashMap<>(), String.class);
assertTrue(result.isPresent());
assertTrue(result.get().contains("89"));
}
Expand All @@ -47,7 +47,7 @@ public void testRequestV1String() {
public void testRequestV1() {
Optional<LinkedHashMap>
result =
twitterClient.getRequestHelper().postRequest(twitterClient.getUrlHelper().getLikeUrl("12345"), new HashMap<>(), LinkedHashMap.class);
twitterClient.getRequestHelperV1().postRequest(twitterClient.getUrlHelper().getLikeUrl("12345"), new HashMap<>(), LinkedHashMap.class);
assertTrue(result.isPresent());
ArrayList<LinkedHashMap> errors = (ArrayList) result.get().get("errors");
assertNotNull(errors);
Expand All @@ -67,10 +67,10 @@ public void testRequestV2() {
public void testRequestWithBodyJsonV1() {
Optional<LinkedHashMap>
result =
twitterClient.getRequestHelper().postRequestWithBodyJson(twitterClient.getUrlHelper().getLikeUrl("12345"),
new HashMap<>(),
"{\"changes\": [{\"op\":\"add\",\"tweet_id\":\"390897780949925889\"}],\"id\": \"custom-1348265030006042629\"}",
LinkedHashMap.class);
twitterClient.getRequestHelperV1().postRequestWithBodyJson(twitterClient.getUrlHelper().getLikeUrl("12345"),
new HashMap<>(),
"{\"changes\": [{\"op\":\"add\",\"tweet_id\":\"390897780949925889\"}],\"id\": \"custom-1348265030006042629\"}",
LinkedHashMap.class);
assertTrue(result.isPresent());
ArrayList<LinkedHashMap> errors = (ArrayList) result.get().get("errors");
assertNotNull(errors);
Expand Down

0 comments on commit 51127f5

Please sign in to comment.