Difference between revisions of "Examples"

From BITPlan mediawiki-japi Wiki
Jump to navigation Jump to search
 
(7 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
Depending on your version of Mediawiki you'll get different API details and help pages:
 
Depending on your version of Mediawiki you'll get different API details and help pages:
  
* [http://mediawiki-japi.bitplan.com/mw1_19/api.php Version 1.19 API help]
 
 
* [http://mediawiki-japi.bitplan.com/mw1_23/api.php Version 1.23 API help]
 
* [http://mediawiki-japi.bitplan.com/mw1_23/api.php Version 1.23 API help]
* [http://mediawiki-japi.bitplan.com/mw1_24/api.php Version 1.24 API help]
 
 
* [https://en.wikipedia.org/w/api.php current API help]
 
* [https://en.wikipedia.org/w/api.php current API help]
  
 
== API usage examples ==
 
== API usage examples ==
 +
You might have to change the DEFAULT_SCRIPTPATH depending on your wiki configuration see [https://github.com/WolfgangFahl/Mediawiki-Japi/issues/26 Issue26]
 +
 
=== Sample query:get a single page ===
 
=== Sample query:get a single page ===
 
http://www.mediawiki.org/wiki/API:Query#Sample_query
 
http://www.mediawiki.org/wiki/API:Query#Sample_query
Line 54: Line 54:
 
     wiki.logout();
 
     wiki.logout();
 
   }
 
   }
 +
</source>
 +
 +
=== query ===
 +
[https://github.com/WolfgangFahl/Mediawiki-Japi/blob/master/src/test/java/com/bitplan/mediawiki/japi/TestAPI_Query.java Junit Test]
 +
==== Allpages ====
 +
<source lang='java'>
 +
        /**
 +
* test the Allpages API call http://www.mediawiki.org/wiki/API:Allpages
 +
*
 +
* @throws Exception
 +
*/
 +
@Test
 +
public void testGetAllPages() throws Exception {
 +
for (ExampleWiki lwiki : getWikis()) {
 +
Api api = getQueryResult(lwiki, "&list=allpages&apfrom=Kre&aplimit=3");
 +
List<P> pageRefList = api.getQuery().getAllpages();
 +
assertEquals(lwiki.getSiteurl(),3, pageRefList.size());
 +
}
 +
}
 
</source>
 
</source>
  
Line 62: Line 81:
 
wiki.edit("Test Page 1","new content of test page 1","Summary for this edit");
 
wiki.edit("Test Page 1","new content of test page 1","Summary for this edit");
 
</source>
 
</source>
[https://github.com/WolfgangFahl/Mediawiki-Japi/blob/master/src/test/java/com/bitplan/mediawiki/japi/TestAPI_Edit.java JUnit test]
+
[https://github.com/WolfgangFahl/Mediawiki-Japi/blob/master/src/test/java/com/bitplan/mediawiki/japi/TestAPI_Edit.java TestAPI_Edit.java JUnit test]
 +
=== Multiple Implementations ===
 +
{{CurrentVersion}} supports to use different implementations via the common MediawikiApi Java Interface. E.g. you can use the one-class implementation org.wikipedia.Mediawiki.
 +
<source lang='java'>
 +
  @Test
 +
  /**
 +
  * Test for issue #3
 +
  * @throws Exception
 +
  */
 +
  public void testMultipleImplementations() throws Exception {
 +
    MediawikiApi[] wikiapis = { new Mediawiki(), new org.wikipedia.Mediawiki() };
 +
    for (MediawikiApi wikiapi : wikiapis) {
 +
      wikiapi.setSiteurl("http://en.wikipedia.org");
 +
      String content = wikiapi.getPageContent("Main Page");
 +
      assertTrue(content.contains("Wikipedia"));
 +
    }
 +
  }
 +
</source>
 +
[https://github.com/WolfgangFahl/Mediawiki-Japi/blob/master/src/test/java/com/bitplan/mediawiki/japi/TestUsage.java TestUsage.java JUnit test]

Latest revision as of 16:23, 20 August 2018

Intro

Depending on your version of Mediawiki you'll get different API details and help pages:

API usage examples

You might have to change the DEFAULT_SCRIPTPATH depending on your wiki configuration see Issue26

Sample query:get a single page

http://www.mediawiki.org/wiki/API:Query#Sample_query

Mediawiki wiki=new Mediawiki("http://en.wikipedia.org");
String content=wiki.getPageContent("Main Page");

JUnit Test

/**
 * http://www.mediawiki.org/wiki/API:Query#Sample_query
 * http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles=Main%20Page&format=xml
 * @throws Exception 
 */
@Test
public void testSampleQuery() throws Exception {
  Mediawiki wiki=new Mediawiki("http://en.wikipedia.org");
  String content=wiki.getPageContent("Main Page");
  assertTrue(content.contains("Wikipedia"));
}

login/logout

http://www.mediawiki.org/wiki/API:Login

Login login=wiki.login("scott","tiger");
wiki.logout();

Junit Test

  /**
   * test Login and logout 
   * see <a href='http://www.mediawiki.org/wiki/API:Login'>API:Login</a>
   * @throws Exception
   */
   @Test
   public void testLogin() throws Exception {
     WikiUser wuser=WikiUser.getUser("mediawiki_org");
     Login login=wiki.login(wuser.getUsername(),wuser.getPassword());
     assertEquals("Success",login.getResult());
     assertNotNull(login.getLguserid());
     assertEquals(wuser.getUsername(),login.getLgusername());
     assertNotNull(login.getLgtoken());
     wiki.logout();
   }

query

Junit Test

Allpages

        /**
	 * test the Allpages API call http://www.mediawiki.org/wiki/API:Allpages
	 * 
	 * @throws Exception
	 */
	@Test
	public void testGetAllPages() throws Exception {
		for (ExampleWiki lwiki : getWikis()) {
			Api api = getQueryResult(lwiki, "&list=allpages&apfrom=Kre&aplimit=3");
			List<P> pageRefList = api.getQuery().getAllpages();
			assertEquals(lwiki.getSiteurl(),3, pageRefList.size());
		}
	}

Edit

https://www.mediawiki.org/wiki/API:Edit

wiki.login("scott","tiger");
wiki.edit("Test Page 1","new content of test page 1","Summary for this edit");

TestAPI_Edit.java JUnit test

Multiple Implementations

0.1.06 supports to use different implementations via the common MediawikiApi Java Interface. E.g. you can use the one-class implementation org.wikipedia.Mediawiki.

  @Test
  /**
   * Test for issue #3
   * @throws Exception
   */
  public void testMultipleImplementations() throws Exception {
    MediawikiApi[] wikiapis = { new Mediawiki(), new org.wikipedia.Mediawiki() };
    for (MediawikiApi wikiapi : wikiapis) {
      wikiapi.setSiteurl("http://en.wikipedia.org");
      String content = wikiapi.getPageContent("Main Page");
      assertTrue(content.contains("Wikipedia"));
    }
  }

TestUsage.java JUnit test