org.intermine.app.net.request.post.GetUserTokenRequest.java Source code

Java tutorial

Introduction

Here is the source code for org.intermine.app.net.request.post.GetUserTokenRequest.java

Source

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();
    }
}