57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
package fr.imirhil.april.hebdobot.statusnet;
|
|
|
|
import java.util.Scanner;
|
|
|
|
import org.scribe.builder.ServiceBuilder;
|
|
import org.scribe.builder.api.Api;
|
|
import org.scribe.model.OAuthRequest;
|
|
import org.scribe.model.Token;
|
|
import org.scribe.model.Verb;
|
|
import org.scribe.model.Verifier;
|
|
import org.scribe.oauth.OAuthService;
|
|
|
|
public abstract class StatusNetClient {
|
|
private final OAuthService service;
|
|
private final Token token;
|
|
|
|
public StatusNetClient(final Class<? extends Api> apiClass,
|
|
final String apiKey, final String apiSecret, final String tokenKey,
|
|
final String tokenSecret) {
|
|
this.service = getService(apiClass, apiKey, apiSecret);
|
|
this.token = new Token(tokenKey, tokenSecret);
|
|
}
|
|
|
|
private static OAuthService getService(final Class<? extends Api> apiClass,
|
|
final String apiKey, final String apiSecret) {
|
|
return new ServiceBuilder().provider(apiClass).apiKey(apiKey)
|
|
.apiSecret(apiSecret).build();
|
|
}
|
|
|
|
public static void register(final Class<? extends Api> apiClass,
|
|
final String apiKey, final String apiSecret) {
|
|
final OAuthService service = getService(apiClass, apiKey, apiSecret);
|
|
final Token requestToken = service.getRequestToken();
|
|
System.out.println(service.getAuthorizationUrl(requestToken));
|
|
System.out.print(">>");
|
|
final Scanner scanner = new Scanner(System.in);
|
|
try {
|
|
final Verifier verifier = new Verifier(scanner.nextLine());
|
|
final Token token = service.getAccessToken(requestToken, verifier);
|
|
System.out.println(token);
|
|
} finally {
|
|
scanner.close();
|
|
}
|
|
}
|
|
|
|
public void post(final String message) {
|
|
final OAuthRequest request =
|
|
new OAuthRequest(Verb.POST, this.getApiUrl()
|
|
+ "/statuses/update.json");
|
|
request.addBodyParameter("status", message);
|
|
this.service.signRequest(this.token, request);
|
|
request.send();
|
|
}
|
|
|
|
protected abstract String getApiUrl();
|
|
}
|