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.Reference; import mediawiki.info.wikibase.ValueSnak; import mediawiki.info.wikibase.Statement; import mediawiki.request.ManipulativeRequest; import mediawiki.request.TokenRequest; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class SetReferenceRequest extends MediaWikiRequest implements ManipulativeRequest { @Deprecated public SetReferenceRequest(String id, Property prop, ValueSnak<?> e) throws JSONException { this(new Statement(id),new Reference(prop,e)); } @Deprecated public SetReferenceRequest(String id, Claim a) throws JSONException{ this(new Statement(id),new Reference(a)); } @Deprecated public SetReferenceRequest(Statement c, Claim a) throws JSONException{ this(c, new Reference(a)); } public SetReferenceRequest(Statement c, Reference r) throws JSONException{ setProperty("statement", c.getID()); JSONObject snaks = new JSONObject(); for(Claim claims : r){ JSONArray array = new JSONArray(); JSONObject value = new JSONObject(); value.put("snaktype",claims.getSnakTypeAsString()); value.put("property",claims.getProperty().toString()); if(claims.getSnak() instanceof ValueSnak<?>) value.put("datavalue", ((ValueSnak)claims.getSnak()).toReferenceRepresentation()); array.put(value); snaks.put(claims.getProperty().toString(), array); } setProperty("snaks", snaks.toString()); } @Override public Object request(MediaWikiConnection c) throws Exception { String token = (String) c.request(new TokenRequest("csrf")); MediaWikiPostRequest p = new MediaWikiPostRequest(c); p.putData(getProperties()); p.putData("action", "wbsetreference"); p.putData("token", token); Document d = p.requestDocument(); return null; } }