package mediawiki.request.wikibase; import javat.xml.Document; import mediawiki.MediaWikiConnection; import mediawiki.MediaWikiPostRequest; import mediawiki.MediaWikiRequest; import mediawiki.info.wikibase.Claim; import mediawiki.info.wikibase.Property; import mediawiki.info.wikibase.Snak; import mediawiki.info.wikibase.ValueSnak; import mediawiki.info.wikibase.Statement; import mediawiki.request.ManipulativeRequest; import mediawiki.request.TokenRequest; import org.json.JSONException; public class CreateClaimRequest extends MediaWikiRequest<Statement> implements ManipulativeRequest { public CreateClaimRequest(String entity, Property prop, Snak value) throws JSONException { setProperty("entity", entity); setProperty("property", prop.toString()); if(value instanceof ValueSnak) setProperty("value", ((ValueSnak<?>)value).toClaimRepresentation()); setProperty("snaktype", value.getSnakTypeAsString()); } public CreateClaimRequest(String entity, Claim a) throws JSONException { this(entity, a.getProperty(), a.getSnak()); } @Override public Statement request(MediaWikiConnection c) throws Exception { String token = (String) c.request(new TokenRequest("csrf")); MediaWikiPostRequest p = new MediaWikiPostRequest(c); p.putData(getProperties()); p.putData("action", "wbcreateclaim"); p.putData("token", token); Document d = p.requestDocument(); return new Statement(d.getRootElement().getChildren("claim").get(0)); } }