Skip to content

Commit f571674

Browse files
committed
add new API Wunderlist (https://www.wunderlist.com/) (thanks to https://github.com/M-F-K)
1 parent 8269f2a commit f571674

6 files changed

Lines changed: 105 additions & 68 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ ScribeJava support out-of-box several HTTP clients:
7474
* LinkedIn (https://www.linkedin.com/)
7575
* Microsoft Azure Active Directory (Azure AD) (http://azure.microsoft.com/)
7676
* Microsoft Live (https://login.live.com/)
77+
* Misfit (http://misfit.com/)
7778
* Mail.Ru (https://mail.ru/)
7879
* MediaWiki (https://www.mediawiki.org/)
7980
* Meetup (http://www.meetup.com/)
@@ -94,9 +95,9 @@ ScribeJava support out-of-box several HTTP clients:
9495
* uCoz (https://www.ucoz.com/)
9596
* Viadeo (http://viadeo.com/)
9697
* VK ВКонтакте (http://vk.com/)
98+
* Wunderlist (https://www.wunderlist.com/)
9799
* XING (https://www.xing.com/)
98100
* Yahoo (https://www.yahoo.com/)
99-
* Misfit (http://misfit.com/)
100101
* check the [examples folder](https://github.com/scribejava/scribejava/tree/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples)
101102

102103
### Small and modular

changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* make redirect_uri optional while Access Token requesting on OAuth 2.0 (thanks to https://github.com/computerlove)
33
* switch to java 9+ (from java 7 only) for compilation. Runtime is still java 7+. Complement README with links and RFC descriptions.
44
* switch OAuth2 Bearer Token Usage from enum OAuth2SignatureType to interface BearerSignature to be extensible
5+
* add new API Wunderlist (https://www.wunderlist.com/) (thanks to https://github.com/M-F-K)
56

67
[5.6.0]
78
* remove support for obsolete NetEase (http://www.163.com/) and sohu 搜狐 (http://www.sohu.com/) (thanks to https://github.com/zawn)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.github.scribejava.apis;
2+
3+
import com.github.scribejava.apis.service.WunderlistOAuthService;
4+
import com.github.scribejava.core.builder.api.DefaultApi20;
5+
import com.github.scribejava.core.httpclient.HttpClient;
6+
import com.github.scribejava.core.httpclient.HttpClientConfig;
7+
import com.github.scribejava.core.oauth.OAuth20Service;
8+
import com.github.scribejava.core.oauth2.bearersignature.BearerSignature;
9+
import com.github.scribejava.core.oauth2.bearersignature.BearerSignatureURIQueryParameter;
10+
import com.github.scribejava.core.oauth2.clientauthentication.ClientAuthentication;
11+
import com.github.scribejava.core.oauth2.clientauthentication.RequestBodyAuthenticationScheme;
12+
import java.io.OutputStream;
13+
14+
/**
15+
* Wunderlist.com Api
16+
*/
17+
public class WunderlistAPI extends DefaultApi20 {
18+
19+
protected WunderlistAPI() {
20+
}
21+
22+
private static class InstanceHolder {
23+
24+
private static final WunderlistAPI INSTANCE = new WunderlistAPI();
25+
}
26+
27+
public static WunderlistAPI instance() {
28+
return InstanceHolder.INSTANCE;
29+
}
30+
31+
@Override
32+
public String getAccessTokenEndpoint() {
33+
return "https://www.wunderlist.com/oauth/access_token";
34+
}
35+
36+
@Override
37+
protected String getAuthorizationBaseUrl() {
38+
return "https://www.wunderlist.com/oauth/authorize";
39+
}
40+
41+
@Override
42+
public BearerSignature getBearerSignature() {
43+
return BearerSignatureURIQueryParameter.instance();
44+
}
45+
46+
@Override
47+
public ClientAuthentication getClientAuthentication() {
48+
return RequestBodyAuthenticationScheme.instance();
49+
}
50+
51+
@Override
52+
public OAuth20Service createService(String apiKey, String apiSecret, String callback, String scope,
53+
OutputStream debugStream, String state, String responseType, String userAgent,
54+
HttpClientConfig httpClientConfig, HttpClient httpClient) {
55+
return new WunderlistOAuthService(this, apiKey, apiSecret, callback, scope, state, responseType, userAgent,
56+
httpClientConfig, httpClient);
57+
}
58+
}

scribejava-apis/src/main/java/com/github/scribejava/apis/WunderlistAPI20.java

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.github.scribejava.apis.service;
2+
3+
import com.github.scribejava.apis.WunderlistAPI;
4+
import com.github.scribejava.core.httpclient.HttpClient;
5+
import com.github.scribejava.core.httpclient.HttpClientConfig;
6+
import com.github.scribejava.core.model.OAuthRequest;
7+
import com.github.scribejava.core.oauth.OAuth20Service;
8+
9+
public class WunderlistOAuthService extends OAuth20Service {
10+
11+
public WunderlistOAuthService(WunderlistAPI api, String apiKey, String apiSecret, String callback, String scope,
12+
String state, String responseType, String userAgent, HttpClientConfig httpClientConfig,
13+
HttpClient httpClient) {
14+
super(api, apiKey, apiSecret, callback, scope, state, responseType, userAgent, httpClientConfig, httpClient);
15+
}
16+
17+
@Override
18+
public void signRequest(String accessToken, OAuthRequest request) {
19+
super.signRequest(accessToken, request);
20+
request.addHeader("X-Client-ID", getApiKey());
21+
}
22+
}

scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Wunderlist20Example.java renamed to scribejava-apis/src/test/java/com/github/scribejava/apis/examples/WunderlistExample.java

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,51 +5,50 @@
55
import java.util.Scanner;
66
import java.util.concurrent.ExecutionException;
77

8-
import com.github.scribejava.apis.WunderlistAPI20;
8+
import com.github.scribejava.apis.WunderlistAPI;
99
import com.github.scribejava.core.builder.ServiceBuilder;
1010
import com.github.scribejava.core.model.OAuth2AccessToken;
1111
import com.github.scribejava.core.model.OAuthRequest;
1212
import com.github.scribejava.core.model.Response;
1313
import com.github.scribejava.core.model.Verb;
1414
import com.github.scribejava.core.oauth.OAuth20Service;
1515

16-
public class Wunderlist20Example {
16+
public class WunderlistExample {
1717

1818
private static final String NETWORK_NAME = "Wunderlist";
1919
private static final String PROTECTED_RESOURCE_URL = "https://a.wunderlist.com/api/v1/user";
2020

21-
private Wunderlist20Example() {
21+
private WunderlistExample() {
2222
}
2323

2424
public static void main(String... args) throws IOException, InterruptedException, ExecutionException {
2525
// Replace these with your own values
26-
final String apiKey = "your_api_key";
27-
final String apiSecret = "your_api_secret";
26+
final String apiKey = "apiKey";
27+
final String apiSecret = "apiSecret";
2828
final String callbackUrl = "http://example.com/callback";
29-
final String secretState = "security_token" + new Random().nextInt(999_999);
30-
29+
final String secretState = "security_token" + new Random().nextInt(999_999);
30+
3131
final OAuth20Service service = new ServiceBuilder(apiKey)
3232
.apiSecret(apiSecret)
3333
.callback(callbackUrl)
3434
.state(secretState)
3535
.debug()
36-
.build(WunderlistAPI20.instance());
37-
final Scanner in = new Scanner(System.in, "UTF-8");
38-
39-
System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
40-
System.out.println();
41-
36+
.build(WunderlistAPI.instance());
4237

43-
// Obtain the Authorization URL
44-
System.out.println("Fetching the Authorization URL...");
45-
final String authorizationUrl = service.getAuthorizationUrl();
46-
System.out.println("Got the Authorization URL!");
47-
System.out.println("Now go and authorize ScribeJava here:");
48-
System.out.println(authorizationUrl);
49-
System.out.println("And paste the authorization code here");
50-
System.out.print(">>");
51-
final String code = in.nextLine();
52-
in.close();
38+
final String code;
39+
try (Scanner in = new Scanner(System.in, "UTF-8")) {
40+
System.out.println("=== " + NETWORK_NAME + "'s OAuth Workflow ===");
41+
System.out.println();
42+
// Obtain the Authorization URL
43+
System.out.println("Fetching the Authorization URL...");
44+
final String authorizationUrl = service.getAuthorizationUrl();
45+
System.out.println("Got the Authorization URL!");
46+
System.out.println("Now go and authorize ScribeJava here:");
47+
System.out.println(authorizationUrl);
48+
System.out.println("And paste the authorization code here");
49+
System.out.print(">>");
50+
code = in.nextLine();
51+
}
5352
System.out.println();
5453

5554
// Trade the Request Token and Verifier for the Access Token
@@ -62,7 +61,6 @@ public static void main(String... args) throws IOException, InterruptedException
6261
// Now let's go and ask for a protected resource!
6362
System.out.println("Now we're going to access a protected resource...");
6463
final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
65-
request.addHeader("X-Client-ID", apiKey);
6664
service.signRequest(accessToken, request);
6765
final Response response = service.execute(request);
6866
System.out.println("Got it! Lets see what we found...");

0 commit comments

Comments
 (0)