url添加Timestamp逻辑修改
This commit is contained in:
@ -1,8 +1,10 @@
|
||||
package com.gh.common.util;
|
||||
|
||||
import android.support.v4.util.ArrayMap;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.gh.common.constant.Config;
|
||||
import com.gh.common.constant.Constants;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@ -11,57 +13,21 @@ public class TimestampUtils {
|
||||
// 基准时间
|
||||
private static final long BASE = 1426608000000L;
|
||||
|
||||
private static ArrayMap<String, Integer> map;
|
||||
private static ArrayMap<String, Integer> intervalMap; // 间隔
|
||||
private static ArrayMap<String, Integer> cdMap; // cd
|
||||
|
||||
/*
|
||||
* 根据CD获取时间戳
|
||||
*/
|
||||
public static long getTimestamp(String url, int cd) {
|
||||
if (map == null){
|
||||
map = new ArrayMap<>();
|
||||
map.put("^" + Config.HOST + "v2/version" + "$", 5);
|
||||
map.put("^" + Config.HOST + "v2/disclaimer" + "$", 10);
|
||||
map.put("^" + Config.HOST + "v2/stat/download" + "$", 15);
|
||||
map.put("^" + Config.HOST + "v2/version\\?version_name=.+\\&channel=.+" + "$", 20);
|
||||
map.put("^" + Config.HOST + "v1d45/news\\?type_group=.+\\&offset=.+\\&limit=20" + "$", 25);
|
||||
map.put("^" + Config.HOST + "v1d45/news/.+/digest" + "$", 30);
|
||||
map.put("^" + Config.HOST + "v1d45/news/.+/detail" + "$", 35);
|
||||
map.put("^" + Config.HOST + "v1d45/news/.+/suggestion" + "$", 40);
|
||||
map.put("^" + Config.HOST + "v1d45/game/remenkapai" + "$", 45);
|
||||
map.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=3" + "$", 50);
|
||||
map.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=20\\&offset=.+" + "$", 55);
|
||||
map.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=20\\&offset=.+\\&type=.+" + "$", 60);
|
||||
map.put("^" + Config.HOST + "v1d45/search/game/default" + "$", 65);
|
||||
map.put("^" + Config.HOST + "v1d45/search/game\\?keyword=.+" + "$", 70);
|
||||
map.put("^" + Config.HOST + "v1d45/search/news\\?game_id=.+\\&keyword=.+\\&page=.+\\&limit=20" + "$", 75);
|
||||
map.put("^" + Config.HOST + "v1d45/support/setting/ui" + "$", 80);
|
||||
map.put("^" + Config.HOST + "v1d45/support/setting/platform" + "$", 85);
|
||||
map.put("^" + Config.HOST + "v1d45/support/package/.+/game/digest" + "$", 90);
|
||||
map.put("^" + Config.HOST + "v1d45/support/package/unused\\?skip=.+" + "$", 95);
|
||||
map.put("^" + Config.HOST + "v1d45/support/package/update\\?package=.+" + "$", 100);
|
||||
map.put("^" + Config.HOST + "v1d45/support/package/latest\\?package=.+" + "$", 105);
|
||||
map.put("^" + Config.HOST + "v1d45/support/setting/download/.+/switch2\\?version=.+" + "$", 110);
|
||||
map.put("^" + Config.HOST + "v1d46/support/suggestion" + "$", 115);
|
||||
map.put("^" + Config.HOST + "v1d50/index/slides" + "$", 120);
|
||||
map.put("^" + Config.HOST + "v1d50/game/chajian" + "$", 125);
|
||||
map.put("^" + Config.HOST + "v1d50/game/tuijian" + "$", 130);
|
||||
map.put("^" + Config.HOST + "v1d50/game/column/.+\\?page=.+" + "$", 135);
|
||||
map.put("^" + Config.HOST + "v1d50/game/danjiyouxi\\?limit=20\\&offset=.+" + "$", 140);
|
||||
map.put("^" + Config.HOST + "v1d50/news/zixun\\?limit=10\\&offset=.+" + "$", 145);
|
||||
map.put("^" + Config.HOST + "v1d50/news/yuanchuang\\?limit=10\\&offset=.+" + "$", 150);
|
||||
map.put("^" + Config.HOST + "v2d0/game/.+/digest" + "$", 155);
|
||||
map.put("^" + Config.HOST + "v2d0/game/.+/detail" + "$", 160);
|
||||
map.put("^" + Config.HOST + "v2d0/game/.+/news_digest" + "$", 165);
|
||||
map.put("^" + Config.HOST + "v2d0/zixun/guanzhu\\?key=.+\\&limit=10\\&offset=.+" + "$", 170);
|
||||
map.put("^" + Config.HOST + "v2d0/zixun/guanzhu\\?game_id=.+\\&limit=10\\&offset=.+" + "$", 175);
|
||||
map.put("^" + Config.HOST + "v2d0/device/.+/concern" + "$", 180);
|
||||
map.put("^" + Config.HOST + "v2d0/device/.+/concern/.+" + "$", 185);
|
||||
if (intervalMap == null) {
|
||||
initIntervalMap();
|
||||
}
|
||||
long base = BASE;
|
||||
for (String key : map.keySet()){
|
||||
for (String key : intervalMap.keySet()){
|
||||
if (Pattern.matches(key, url)) {
|
||||
Utils.log("url add base = " + url);
|
||||
base += map.get(key);
|
||||
base += intervalMap.get(key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -70,10 +36,96 @@ public class TimestampUtils {
|
||||
return (long) (Math.ceil((now - base) / cd) * cd + base);
|
||||
}
|
||||
|
||||
private static void initCDMap() {
|
||||
cdMap = new ArrayMap<>();
|
||||
cdMap.put("^" + Config.HOST + "v1d50/index/slides" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d50/game/chajian" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d50/game/tuijian" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/game/.+/detail" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/game/.+/digest" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/game/remenkapai" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/game/.+/news_digest" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d50/game/column/.+\\?page=.+" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/support/package/.+/game/digest" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d50/game/danjiyouxi\\?limit=20\\&offset=.+" + "$", Constants.GAME_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/news/.+/digest" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/news/.+/detail" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/news/.+/suggestion" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=3" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d50/news/zixun\\?limit=10\\&offset=.+" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=20\\&offset=.+" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d50/news/yuanchuang\\?limit=10\\&offset=.+" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/news\\?type_group=.+\\&offset=.+\\&limit=20" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/zixun/guanzhu\\?key=.+\\&limit=10\\&offset=.+" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=20\\&offset=.+\\&type=.+" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/zixun/guanzhu\\?game_id=.+\\&limit=10\\&offset=.+" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/search/news\\?game_id=.+\\&keyword=.+\\&page=.+\\&limit=20" + "$", Constants.NEWS_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/search/game\\?keyword=.+" + "$", Constants.SEARCH_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/support/setting/platform" + "$", Constants.PLATFORM_CD);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/support/package/update\\?package=.+" + "$", Constants.UPDATE_CD);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/device/.+/concern" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/device/.+/concern/.+" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2/stat/download" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2/disclaimer" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/search/game/default" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/support/upgrade\\?version=.+\\&channel=.+" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/support/time/current" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/support/setting/ui" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2d0/support/download_status\\?version=.+\\&channel=.+" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v1d46/support/suggestion" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v2/game/.+/serverInfo" + "$", 0);
|
||||
cdMap.put("^" + Config.HOST + "v1d45/support/package/unused\\?skip=.+" + "$", 0);
|
||||
}
|
||||
|
||||
private static void initIntervalMap() {
|
||||
intervalMap = new ArrayMap<>();
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/index/slides" + "$", 5);
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/game/chajian" + "$", 10);
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/game/tuijian" + "$", 15);
|
||||
intervalMap.put("^" + Config.HOST + "v2d0/game/.+/detail" + "$", 20);
|
||||
intervalMap.put("^" + Config.HOST + "v2d0/game/.+/digest" + "$", 25);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/game/remenkapai" + "$", 30);
|
||||
intervalMap.put("^" + Config.HOST + "v2d0/game/.+/news_digest" + "$", 35);
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/game/column/.+\\?page=.+" + "$", 40);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/support/package/.+/game/digest" + "$", 45);
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/game/danjiyouxi\\?limit=20\\&offset=.+" + "$", 50);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/news/.+/digest" + "$", 55);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/news/.+/detail" + "$", 60);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/news/.+/suggestion" + "$", 65);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=3" + "$", 70);
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/news/zixun\\?limit=10\\&offset=.+" + "$", 75);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=20\\&offset=.+" + "$", 80);
|
||||
intervalMap.put("^" + Config.HOST + "v1d50/news/yuanchuang\\?limit=10\\&offset=.+" + "$", 85);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/news\\?type_group=.+\\&offset=.+\\&limit=20" + "$", 90);
|
||||
intervalMap.put("^" + Config.HOST + "v2d0/zixun/guanzhu\\?key=.+\\&limit=10\\&offset=.+" + "$", 95);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/game/.+/news\\?limit=20\\&offset=.+\\&type=.+" + "$", 100);
|
||||
intervalMap.put("^" + Config.HOST + "v2d0/zixun/guanzhu\\?game_id=.+\\&limit=10\\&offset=.+" + "$", 105);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/search/news\\?game_id=.+\\&keyword=.+\\&page=.+\\&limit=20" + "$", 110);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/search/game\\?keyword=.+" + "$", 115);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/support/setting/platform" + "$", 120);
|
||||
intervalMap.put("^" + Config.HOST + "v1d45/support/package/update\\?package=.+" + "$", 125);
|
||||
}
|
||||
|
||||
/*
|
||||
* 为url添加timestamp
|
||||
*/
|
||||
public static String addTimestamp(String url, int cd) {
|
||||
public static String addTimestamp(String url) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
return url;
|
||||
}
|
||||
if (cdMap == null) {
|
||||
initCDMap();
|
||||
}
|
||||
int cd = 0;
|
||||
for (String key : cdMap.keySet()){
|
||||
if (Pattern.matches(key, url)) {
|
||||
cd = cdMap.get(key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (cd == 0) {
|
||||
return url;
|
||||
}
|
||||
if (url.contains("?")) {
|
||||
String u = url + "×tamp=" + getTimestamp(url, cd);
|
||||
Utils.log("url = " + u);
|
||||
@ -84,7 +136,7 @@ public class TimestampUtils {
|
||||
return u;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 去除url中的timestamp
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user