All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.octo.android.robospice.persistence.keysanitation.DefaultKeySanitizer Maven / Gradle / Ivy

The newest version!
package com.octo.android.robospice.persistence.keysanitation;

import java.io.UnsupportedEncodingException;

import android.annotation.TargetApi;
import android.os.Build;
import android.util.Base64;

import com.octo.android.robospice.persistence.exception.KeySanitationExcepion;

/**
 * Uses base 64 to sanitize/de-sanitize keys. Only applies to cache keys that
 * are strings. Keys sanitized by this class can be safely used to create file
 * names (and urls).
 * @author SNI
 */
@TargetApi(Build.VERSION_CODES.FROYO)
public class DefaultKeySanitizer implements KeySanitizer {

    // ----------------------------------
    // CONSTANTS
    // ----------------------------------
    private static final int BASE64_FLAGS = Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING;
    private static final String UTF8_CHARSET_NAME = "UTF-8";

    // ----------------------------------
    // API
    // ----------------------------------

    @Override
    public Object sanitizeKey(Object cacheKey) throws KeySanitationExcepion {
        if (!(cacheKey instanceof String)) {
            throw new KeySanitationExcepion(DefaultKeySanitizer.class.getSimpleName() + " can only be used with Strings cache keys.");
        }
        try {
            return Base64.encodeToString(((String) cacheKey).getBytes(UTF8_CHARSET_NAME), BASE64_FLAGS);
        } catch (UnsupportedEncodingException e) {
            throw new KeySanitationExcepion(e);
        }
    }

    @Override
    public Object desanitizeKey(Object sanitzedCacheKey) throws KeySanitationExcepion {
        if (!(sanitzedCacheKey instanceof String)) {
            throw new KeySanitationExcepion(DefaultKeySanitizer.class.getSimpleName() + " can only be used with Strings cache keys.");
        }
        try {
            return new String(Base64.decode((String) sanitzedCacheKey, BASE64_FLAGS), UTF8_CHARSET_NAME);
        } catch (UnsupportedEncodingException e) {
            throw new KeySanitationExcepion(e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy