// Copyright 2015 The Project Buendia Authors
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at: http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distrib-
// uted under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
// OR CONDITIONS OF ANY KIND, either express or implied. See the License for
// specific language governing permissions and limitations under the License.
package org.projectbuendia.client.net;
import android.util.Base64;
import org.projectbuendia.client.AppSettings;
import java.util.Map;
/** Provides the URL and credentials for connecting to OpenMRS. */
public class OpenMrsConnectionDetails {
private final VolleySingleton mVolley;
private final AppSettings mSettings;
/**
* Constructs an {@link OpenMrsConnectionDetails} object.
* @param volley the {@link VolleySingleton} for making requests
* @param settings the application settings
*/
public OpenMrsConnectionDetails(VolleySingleton volley, AppSettings settings) {
mVolley = volley;
mSettings = settings;
}
/** Gets the Volley instance to use for network connections. */
public VolleySingleton getVolley() {
return mVolley;
}
/** Gets the URL to the API served by the Buendia module in OpenMRS. */
public String getBuendiaApiUrl() {
// The default value is set by setDefaultValues, not specified here.
return mSettings.getOpenmrsUrl("/ws/rest/v1/projectbuendia");
}
public String getRestApiUrl() {
return mSettings.getOpenmrsUrl("/ws/rest/v1");
}
/**
* Adds an authentication header to an existing map of HTTP headers.
* @param params the header map to be modified
* @return the modified header map, for method chaining
*/
public Map<String, String> addAuthHeader(Map<String, String> params) {
return addAuthHeader(getUser(), getPassword(), params);
}
/**
* Adds an authentication header to an existing map of HTTP headers.
* @param username the username
* @param password the password
* @param params the header map to be modified
* @return the modified header map, for method chaining
*/
public static Map<String, String> addAuthHeader(
String username, String password, Map<String, String> params) {
String creds = String.format("%s:%s", username, password);
String encoded = Base64.encodeToString(creds.getBytes(), Base64.DEFAULT);
params.put("Authorization", "Basic " + encoded);
return params;
}
/** Gets the OpenMRS username to use. */
public String getUser() {
return mSettings.getOpenmrsUser();
}
/** Gets the OpenMRS password to use. */
public String getPassword() {
return mSettings.getOpenmrsPassword();
}
}