mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 04:43:54 +01:00
Added incomplete APICalls class
To make http requests to API TODO: Find out how to construct Category models
This commit is contained in:
parent
9066c7da34
commit
506c2ab624
2 changed files with 201 additions and 3 deletions
192
commons/src/main/java/fr/free/nrw/commons/upload/APICalls.java
Normal file
192
commons/src/main/java/fr/free/nrw/commons/upload/APICalls.java
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
package fr.free.nrw.commons.upload;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.volley.Cache;
|
||||
import com.android.volley.NetworkResponse;
|
||||
import com.android.volley.Request;
|
||||
import com.android.volley.RequestQueue;
|
||||
import com.android.volley.Response;
|
||||
import com.android.volley.VolleyError;
|
||||
import com.android.volley.toolbox.HttpHeaderParser;
|
||||
import com.android.volley.toolbox.JsonRequest;
|
||||
import com.android.volley.toolbox.Volley;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
public class APICalls {
|
||||
|
||||
//private static final String ENDPOINT = "https://commons.wikimedia.org/w/api.php?action=query&prop=categories|coordinates|pageprops&format=json&clshow=!hidden&coprop=type%7Cname%7Cdim%7Ccountry%7Cregion%7Cglobe&codistancefrompoint=40.7127%7C-74.0059&generator=geosearch&redirects=&ggscoord=40.7127%7C-74.0059&ggsradius=10&ggslimit=5&ggsnamespace=6&ggsprop=type%7Cname%7Cdim%7Ccountry%7Cregion%7Cglobe&ggsprimary=all&formatversion=2";
|
||||
private static final String ENDPOINT = "https://commons.wikimedia.org/w/api.php?action=query&prop=categories|coordinates|pageprops&format=json&clshow=!hidden&coprop=type%7Cname%7Cdim%7Ccountry%7Cregion%7Cglobe&codistancefrompoint=38.11386944444445%7C13.356263888888888&generator=geosearch&redirects=&ggscoord=38.11386944444445%7C13.356263888888888&ggsradius=100&ggslimit=10&ggsnamespace=6&ggsprop=type%7Cname%7Cdim%7Ccountry%7Cregion%7Cglobe&ggsprimary=all&formatversion=2";
|
||||
private static RequestQueue REQUEST_QUEUE;
|
||||
private static final Gson GSON = new Gson();
|
||||
private Context context;
|
||||
|
||||
public APICalls(Context context) {
|
||||
this.context = context;
|
||||
}
|
||||
public void request() {
|
||||
JsonRequest<QueryResponse> request = new QueryRequest(ENDPOINT,
|
||||
new LogResponseListener<QueryResponse>(), new LogResponseErrorListener());
|
||||
getQueue().add(request);
|
||||
}
|
||||
|
||||
private RequestQueue getQueue() {
|
||||
return getQueue(context);
|
||||
}
|
||||
|
||||
private static RequestQueue getQueue(Context context) {
|
||||
if (REQUEST_QUEUE == null) {
|
||||
REQUEST_QUEUE = Volley.newRequestQueue(context.getApplicationContext());
|
||||
}
|
||||
return REQUEST_QUEUE;
|
||||
}
|
||||
|
||||
private static class LogResponseListener<T> implements Response.Listener<T> {
|
||||
private static final String TAG = LogResponseListener.class.getName();
|
||||
|
||||
@Override
|
||||
public void onResponse(T response) {
|
||||
Log.d(TAG, response.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static class LogResponseErrorListener implements Response.ErrorListener {
|
||||
private static final String TAG = LogResponseErrorListener.class.getName();
|
||||
|
||||
@Override
|
||||
public void onErrorResponse(VolleyError error) {
|
||||
Log.e(TAG, error.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private static class QueryRequest extends JsonRequest<QueryResponse> {
|
||||
private static final String TAG = QueryRequest.class.getName();
|
||||
|
||||
public QueryRequest(String url,
|
||||
Response.Listener<QueryResponse> listener,
|
||||
Response.ErrorListener errorListener) {
|
||||
super(Request.Method.GET, url, null, listener, errorListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Response<QueryResponse> parseNetworkResponse(NetworkResponse response) {
|
||||
String json = parseString(response);
|
||||
//Log.d(TAG, "json=" + json);
|
||||
QueryResponse queryResponse = GSON.fromJson(json, QueryResponse.class);
|
||||
return Response.success(queryResponse, cacheEntry(response));
|
||||
}
|
||||
|
||||
|
||||
private Cache.Entry cacheEntry(NetworkResponse response) {
|
||||
return HttpHeaderParser.parseCacheHeaders(response);
|
||||
}
|
||||
|
||||
|
||||
private String parseString(NetworkResponse response) {
|
||||
try {
|
||||
return new String(response.data, HttpHeaderParser.parseCharset(response.headers));
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
return new String(response.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class QueryResponse {
|
||||
private Query query;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "query=" + query.toString();
|
||||
}
|
||||
}
|
||||
|
||||
private static class Query {
|
||||
private Page [] pages;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("pages=");
|
||||
for (Page page : pages) {
|
||||
builder.append(page.toString());
|
||||
builder.append("\n");
|
||||
//page.extractCategories();
|
||||
}
|
||||
builder.replace(builder.length() - 1, builder.length(), "");
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
private static class Page {
|
||||
private int pageid;
|
||||
private int ns;
|
||||
private String title;
|
||||
//private ArrayList<Object> categories;
|
||||
//private Category category;
|
||||
|
||||
/*
|
||||
public boolean categoryExists() {
|
||||
if (categories != null) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void extractCategories() {
|
||||
if (categoryExists()==true) {
|
||||
Log.d("Cat", "categories exist");
|
||||
for (Object categoryobj : categories) {
|
||||
Log.d("Cat", categoryobj.getClass().getName());
|
||||
}
|
||||
}
|
||||
else {
|
||||
Log.d("Cat", "categories don't exist");
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
//if (categoryExists()==true) {
|
||||
return "pageid=" + pageid + " ns=" + ns + " title=" + title + " categories=";// + category.toString();
|
||||
//}
|
||||
//else {
|
||||
// return "pageid=" + pageid + " ns=" + ns + " title=" + title;
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
private class Category {
|
||||
private Category [] categories;
|
||||
private int ns;
|
||||
private String title;
|
||||
|
||||
public Category(Object categoryobj) {
|
||||
//TODO
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("categories=");
|
||||
for (Category category: categories) {
|
||||
builder.append(category.toString());
|
||||
builder.append("\n");
|
||||
}
|
||||
builder.replace(builder.length() - 1, builder.length(), "");
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
|
||||
}*/
|
||||
}
|
||||
|
||||
|
|
@ -184,7 +184,14 @@ public class ShareActivity
|
|||
String coords = imageObj.getCoords();
|
||||
Log.d("Image", "Coords of image: " + coords);
|
||||
|
||||
Log.d("Image", "URL: " + UrlBuilder.buildUrl(coords));
|
||||
//build URL for MediaWiki API calls
|
||||
String apiUrl = UrlBuilder.buildUrl(coords);
|
||||
Log.d("Image", "URL: " + apiUrl);
|
||||
|
||||
|
||||
//TODO: Call request() method of APICalls
|
||||
APICalls apiCall = new APICalls(this);
|
||||
apiCall.request();
|
||||
|
||||
|
||||
ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView);
|
||||
|
|
@ -237,8 +244,7 @@ public class ShareActivity
|
|||
.appendQueryParameter("ggsprimary", "all")
|
||||
.appendQueryParameter("formatversion", "2");
|
||||
|
||||
String url = builder.build().toString();
|
||||
return url;
|
||||
return builder.build().toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue