Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit60d37fe

Browse files
Add MediaWiki API
This API can be used for any MediaWiki installation that has the OAuthextension [1] installed. Two default instances are provided forconvenience: one for wikis hosted by the Wikimedia Foundation (includingWikipedia), which is the one most users will be interested in, and onefor the Wikimedia Foundation’s Beta Cluster, which is more appropriatefor testing purposes.The example is copied and slightly adapted from AWeberExample.java.[1]:https://www.mediawiki.org/wiki/Extension:OAuth
1 parent47c0732 commit60d37fe

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ ScribeJava support out-of-box several HTTP clients:
6363
* Microsoft Azure Active Directory (Azure AD) (http://azure.microsoft.com/)
6464
* Microsoft Live (https://login.live.com/)
6565
* Mail.Ru (https://mail.ru/)
66+
* MediaWiki (https://www.mediawiki.org/)
6667
* Meetup (http://www.meetup.com/)
6768
* NAVER (http://www.naver.com/)
6869
* NetEase (http://www.163.com/)
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
packagecom.github.scribejava.apis;
2+
3+
importcom.github.scribejava.core.builder.api.DefaultApi10a;
4+
5+
publicclassMediaWikiApiextendsDefaultApi10a {
6+
7+
privatestaticfinalMediaWikiApiWIKIMEDIA_INSTANCE =newMediaWikiApi(
8+
"https://meta.wikimedia.org/w/index.php",
9+
"https://meta.wikimedia.org/wiki/"
10+
);
11+
12+
privatestaticfinalMediaWikiApiWIKIMEDIA_BETA_INSTANCE =newMediaWikiApi(
13+
"https://meta.wikimedia.beta.wmflabs.org/w/index.php",
14+
"https://meta.wikimedia.beta.wmflabs.org/wiki/"
15+
);
16+
17+
privatefinalStringindexUrl;
18+
privatefinalStringniceUrlBase;
19+
20+
/**
21+
* @param indexUrl The URL to the index.php of the wiki.
22+
* Due to <a href="https://phabricator.wikimedia.org/T59500">a MediaWiki bug</a>,
23+
* some requests must currently use the non-nice URL.
24+
* @param niceUrlBase The base of nice URLs for the wiki, including the trailing slash.
25+
* Due to <a href="https://phabricator.wikimedia.org/T74186">another MediaWiki bug</a>,
26+
* some requests must currently use the nice URL.
27+
*/
28+
publicMediaWikiApi(finalStringindexUrl,finalStringniceUrlBase) {
29+
this.indexUrl =indexUrl;
30+
this.niceUrlBase =niceUrlBase;
31+
}
32+
33+
/**
34+
* The instance for wikis hosted by the Wikimedia Foundation.
35+
* Consumers are requested on
36+
* <a href="https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose">
37+
* Special:OAuthConsumerRegistration/propose
38+
* </a>.
39+
*/
40+
publicstaticMediaWikiApiwikimediaInstance() {
41+
returnWIKIMEDIA_INSTANCE;
42+
}
43+
44+
/**
45+
* The instance for wikis in the Wikimedia Foundation’s Beta Cluster.
46+
* Consumers are requested on
47+
* <a href="https://meta.wikimedia.beta.wmflabs.org/wiki/Special:OAuthConsumerRegistration/propose">
48+
* Special:OAuthConsumerRegistration/propose
49+
* </a>.
50+
*/
51+
publicstaticMediaWikiApiwikimediaBetaInstance() {
52+
returnWIKIMEDIA_BETA_INSTANCE;
53+
}
54+
55+
@Override
56+
publicStringgetRequestTokenEndpoint() {
57+
returnindexUrl +"?title=Special:OAuth/initiate";
58+
}
59+
60+
@Override
61+
publicStringgetAuthorizationBaseUrl() {
62+
returnniceUrlBase +"Special:OAuth/authorize";
63+
}
64+
65+
@Override
66+
publicStringgetAccessTokenEndpoint() {
67+
returnindexUrl +"?title=Special:OAuth/token";
68+
}
69+
70+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
packagecom.github.scribejava.apis.examples;
2+
3+
importjava.util.Scanner;
4+
importcom.github.scribejava.core.builder.ServiceBuilder;
5+
importcom.github.scribejava.apis.MediaWikiApi;
6+
importcom.github.scribejava.core.model.OAuth1AccessToken;
7+
importcom.github.scribejava.core.model.OAuth1RequestToken;
8+
importcom.github.scribejava.core.model.OAuthRequest;
9+
importcom.github.scribejava.core.model.Response;
10+
importcom.github.scribejava.core.model.Verb;
11+
importcom.github.scribejava.core.oauth.OAuth10aService;
12+
importjava.io.IOException;
13+
importjava.util.concurrent.ExecutionException;
14+
15+
publicfinalclassMediaWikiExample {
16+
17+
// To get your consumer key/secret, see https://meta.wikimedia.org/wiki/Special:OAuthConsumerRegistration/propose
18+
privatestaticfinalStringCONSUMER_KEY ="";
19+
privatestaticfinalStringCONSUMER_SECRET ="";
20+
21+
privatestaticfinalStringAPI_USERINFO_URL =
22+
"https://meta.wikimedia.org/w/api.php?action=query&format=json&meta=userinfo";
23+
24+
privateMediaWikiExample() {
25+
}
26+
27+
publicstaticvoidmain(String...args)throwsIOException,InterruptedException,ExecutionException {
28+
finalOAuth10aServiceservice =newServiceBuilder(CONSUMER_KEY)
29+
.apiSecret(CONSUMER_SECRET)
30+
.build(MediaWikiApi.wikimediaInstance());
31+
32+
finalScannerin =newScanner(System.in);
33+
34+
System.out.println("=== MediaWiki's OAuth Workflow ===");
35+
System.out.println();
36+
37+
// Obtain the Request Token
38+
System.out.println("Fetching the Request Token...");
39+
finalOAuth1RequestTokenrequestToken =service.getRequestToken();
40+
System.out.println("Got the Request Token!");
41+
System.out.println();
42+
43+
System.out.println("Now go and authorize ScribeJava here:");
44+
System.out.println(service.getAuthorizationUrl(requestToken));
45+
System.out.println("And paste the verifier here");
46+
System.out.print(">>");
47+
finalStringoauthVerifier =in.nextLine();
48+
System.out.println();
49+
50+
// Trade the Request Token and Verfier for the Access Token
51+
System.out.println("Trading the Request Token for an Access Token...");
52+
finalOAuth1AccessTokenaccessToken =service.getAccessToken(requestToken,oauthVerifier);
53+
System.out.println("Got the Access Token!");
54+
System.out.println("(The raw response looks like this: " +accessToken.getRawResponse() +"')");
55+
System.out.println();
56+
57+
// Now let's go and ask for a protected resource!
58+
System.out.println("Now we're going to access a protected resource...");
59+
finalOAuthRequestrequest =newOAuthRequest(Verb.GET,API_USERINFO_URL);
60+
service.signRequest(accessToken,request);
61+
finalResponseresponse =service.execute(request);
62+
System.out.println("Got it! Lets see what we found...");
63+
System.out.println();
64+
System.out.println(response.getBody());
65+
66+
System.out.println();
67+
System.out.println("Thats it man! Go and build something awesome with MediaWiki and ScribeJava! :)");
68+
}
69+
70+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp