package org.intermine.app.net.request.post;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
import android.content.Context;
import com.google.gson.Gson;
import org.intermine.app.R;
import org.intermine.app.net.request.PostRequest;
import org.springframework.http.HttpBasicAuthentication;
import org.springframework.http.HttpHeaders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.util.Map;
/**
* @author Daria Komkova <Daria_Komkova @ hotmail.com>
*/
public class GetUserTokenRequest extends PostRequest<String> {
public static final String TOKEN_PARAM = "token";
public static final String TOKEN_TYPE_PARAM = "type";
public static final String TOKEN_MESSAGE_PARAM = "message";
public static final String DEFAULT_TOKEN_TYPE_VALUE = "api";
public static final String TOKEN_MESSAGE_VALUE = "InterMine Android App";
private String mUsername;
private String mPassword;
private String mMineName;
public GetUserTokenRequest(Context ctx, String mineName, String username, String password) {
super(String.class, ctx, null, null, null);
mUsername = username;
mPassword = password;
mMineName = mineName;
}
@Override
public String getUrl() {
return getBaseUrl(mMineName) + getContext().getString(R.string.get_token_path);
}
@Override
public HttpHeaders getHeaders() {
HttpHeaders headers = super.getHeaders();
headers.setAuthorization(new HttpBasicAuthentication(mUsername, mPassword));
return headers;
}
@Override
public MultiValueMap<String, String> getPost() {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add(TOKEN_TYPE_PARAM, DEFAULT_TOKEN_TYPE_VALUE);
params.add(TOKEN_MESSAGE_PARAM, TOKEN_MESSAGE_VALUE);
return params;
}
@Override
public String loadDataFromNetwork() throws Exception {
String json = post();
Gson mapper = getMapper();
Map<String, String> map = mapper.fromJson(json, Map.class);
String token = map.get(TOKEN_PARAM);
return token;
}
protected Gson getMapper() {
return new Gson();
}
}