From 94692447dbd38cbaaaa4f4da04099bae0fd7728a Mon Sep 17 00:00:00 2001 From: Alexey Danilov Date: Tue, 6 Dec 2016 09:50:57 +0300 Subject: [PATCH] add example for providing own FileNameGenerator --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index bd94b78..a9dafc0 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ - [Recipes](#recipes) - [Disk cache limit](#disk-cache-limit) - [Listen caching progress](#listen-caching-progress) + - [Providing names for cached files](#providing-names-for-cached-files) - [Sample](#sample) - [Known problems](#known-problems) - [Whats new](#whats-new) @@ -105,6 +106,26 @@ Use `HttpProxyCacheServer.isCached(String url)` method to check was url's conten See `sample` app for more details. +### Providing names for cached files +By default `AndroidVideoCache` uses MD5 of video url as file name. But in some cases url is not stable and it can contain some generated parts (e.g. session token). In this case caching mechanism will be broken. To fix it you have to provide own `FileNameGenerator`: +``` java +public class MyFileNameGenerator implements FileNameGenerator { + + // Urls contain mutable parts (parameter 'sessionToken') and stable video's id (parameter 'videoId'). + // e. g. http://example.com?videoId=abcqaz&sessionToken=xyz987 + public String generate(String url) { + Uri uri = Uri.parse(url); + String videoId = uri.getQueryParameter("videoId"); + return videoId + ".mp4"; + } +} + +... +HttpProxyCacheServer proxy = HttpProxyCacheServer.Builder(context) + .fileNameGenerator(new MyFileNameGenerator()) + .build() +``` + ### Sample See `sample` app.