package fr.prcaen.externalresources.url; import android.net.Uri; import android.support.annotation.NonNull; import java.util.HashMap; import java.util.Locale; import java.util.Map; public class DefaultUrl implements Url { protected static final String QUERY_PARAMETER_DENSITY_DPI = "density_dpi"; protected static final String QUERY_PARAMETER_FONT_SCALE = "font_scale"; protected static final String QUERY_PARAMETER_HARD_KEYBOARD_HIDDEN = "hard_keyboard_hidden"; protected static final String QUERY_PARAMETER_KEYBOARD = "keyboard"; protected static final String QUERY_PARAMETER_KEYBOARD_HIDDEN = "keyboard_hidden"; protected static final String QUERY_PARAMETER_LOCALE = "locale"; protected static final String QUERY_PARAMETER_MCC = "mcc"; protected static final String QUERY_PARAMETER_MNC = "mnc"; protected static final String QUERY_PARAMETER_NAVIGATION = "navigation"; protected static final String QUERY_PARAMETER_NAVIGATION_HIDDEN = "navigation_hidden"; protected static final String QUERY_PARAMETER_ORIENTATION = "orientation"; protected static final String QUERY_PARAMETER_SCREEN_HEIGHT_DP = "screen_height_dp"; protected static final String QUERY_PARAMETER_SCREEN_LAYOUT = "screen_layout"; protected static final String QUERY_PARAMETER_SCREEN_WIDTH_DP = "screen_width_dp"; protected static final String QUERY_PARAMETER_SMALLEST_SCREEN_WIDTH_DP = "smallest_screen_width_dp"; protected static final String QUERY_PARAMETER_TOUCHSCREEN = "touch_screen"; protected static final String QUERY_PARAMETER_UI_MODE = "ui_mode"; protected final String baseURL; protected final HashMap<String, String> parameters = new HashMap<>(); public DefaultUrl(@NonNull String baseUrl) { this.baseURL = baseUrl; } @Override public void fontScale(float fontScale) { parameters.put(QUERY_PARAMETER_FONT_SCALE, String.valueOf(fontScale)); } @Override public void hardKeyboardHidden(int hardKeyboardHidden) { parameters.put(QUERY_PARAMETER_HARD_KEYBOARD_HIDDEN, String.valueOf(hardKeyboardHidden)); } @Override public void keyboard(int keyboard) { parameters.put(QUERY_PARAMETER_KEYBOARD, String.valueOf(keyboard)); } @Override public void keyboardHidden(int keyboardHidden) { parameters.put(QUERY_PARAMETER_KEYBOARD_HIDDEN, String.valueOf(keyboardHidden)); } @Override public void locale(Locale locale) { parameters.put(QUERY_PARAMETER_LOCALE, locale.toString()); } @Override public void mcc(int mcc) { parameters.put(QUERY_PARAMETER_MCC, String.valueOf(mcc)); } @Override public void mnc(int mnc) { parameters.put(QUERY_PARAMETER_MNC, String.valueOf(mnc)); } @Override public void navigation(int navigation) { parameters.put(QUERY_PARAMETER_NAVIGATION, String.valueOf(navigation)); } @Override public void navigationHidden(int navigationHidden) { parameters.put(QUERY_PARAMETER_NAVIGATION_HIDDEN, String.valueOf(navigationHidden)); } @Override public void orientation(int orientation) { parameters.put(QUERY_PARAMETER_ORIENTATION, String.valueOf(orientation)); } @Override public void screenLayout(int screenLayout) { parameters.put(QUERY_PARAMETER_SCREEN_LAYOUT, String.valueOf(screenLayout)); } @Override public void touchscreen(int touchscreen) { parameters.put(QUERY_PARAMETER_TOUCHSCREEN, String.valueOf(touchscreen)); } @Override public void uiMode(int uiMode) { parameters.put(QUERY_PARAMETER_UI_MODE, String.valueOf(uiMode)); } @Override public void densityDpi(int densityDpi) { parameters.put(QUERY_PARAMETER_DENSITY_DPI, String.valueOf(densityDpi)); } @Override public void screenWidthDp(int screenWidthDp) { parameters.put(QUERY_PARAMETER_SCREEN_WIDTH_DP, String.valueOf(screenWidthDp)); } @Override public void screenHeightDp(int screenHeightDp) { parameters.put(QUERY_PARAMETER_SCREEN_HEIGHT_DP, String.valueOf(screenHeightDp)); } @Override public void smallestScreenWidthDp(int smallestScreenWidthDp) { parameters.put(QUERY_PARAMETER_SMALLEST_SCREEN_WIDTH_DP, String.valueOf(smallestScreenWidthDp)); } @Override public String build() { Uri.Builder builder = Uri.parse(baseURL).buildUpon(); for (Map.Entry<String, String> entry : parameters.entrySet()) { builder.appendQueryParameter(entry.getKey(), entry.getValue()); } return builder.build().toString(); } }