You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
4.3 KiB
201 lines
4.3 KiB
package model |
|
|
|
import ( |
|
"fmt" |
|
"strings" |
|
|
|
"go-common/app/interface/main/app-resource/model/tab" |
|
) |
|
|
|
const ( |
|
// PlatAndroid is int8 for android. |
|
PlatAndroid = int8(0) |
|
// PlatIPhone is int8 for iphone. |
|
PlatIPhone = int8(1) |
|
// PlatIPad is int8 for ipad. |
|
PlatIPad = int8(2) |
|
// PlatWPhone is int8 for wphone. |
|
PlatWPhone = int8(3) |
|
// PlatAndroidG is int8 for Android Global. |
|
PlatAndroidG = int8(4) |
|
// PlatIPhoneI is int8 for Iphone Global. |
|
PlatIPhoneI = int8(5) |
|
// PlatIPadI is int8 for IPAD Global. |
|
PlatIPadI = int8(6) |
|
// PlatAndroidTV is int8 for AndroidTV Global. |
|
PlatAndroidTV = int8(7) |
|
// PlatAndroidI is int8 for Android Global. |
|
PlatAndroidI = int8(8) |
|
// PlatAndroidB is int8 for Android Blue. |
|
PlatAndroidB = int8(9) |
|
// PlatIPhoneB is int8 for Ios Blue |
|
PlatIPhoneB = int8(10) |
|
// PlatBilistudio is int8 for bilistudio |
|
PlatBilistudio = int8(11) |
|
// PlatAndroidTVYST is int8 for AndroidTV_YST Global. |
|
PlatAndroidTVYST = int8(12) |
|
|
|
GotoAv = "av" |
|
GotoWeb = "web" |
|
GotoBangumi = "bangumi" |
|
GotoSp = "sp" |
|
GotoLive = "live" |
|
GotoGame = "game" |
|
GotoPegasusTab = "pegasus" |
|
) |
|
|
|
var ( |
|
PegasusHandler = func(m *tab.Menu) func(uri string) string { |
|
return func(uri string) string { |
|
if m == nil { |
|
return uri |
|
} |
|
if m.Name != "" { |
|
return fmt.Sprintf("%s?name=%s", uri, m.Name) |
|
} |
|
return uri |
|
} |
|
} |
|
) |
|
|
|
// Plat return plat by platStr or mobiApp |
|
func Plat(mobiApp, device string) int8 { |
|
switch mobiApp { |
|
case "iphone": |
|
if device == "pad" { |
|
return PlatIPad |
|
} |
|
return PlatIPhone |
|
case "white": |
|
return PlatIPhone |
|
case "ipad": |
|
return PlatIPad |
|
case "android": |
|
return PlatAndroid |
|
case "win": |
|
return PlatWPhone |
|
case "android_G": |
|
return PlatAndroidG |
|
case "android_i": |
|
return PlatAndroidI |
|
case "android_b": |
|
return PlatAndroidB |
|
case "iphone_i": |
|
if device == "pad" { |
|
return PlatIPadI |
|
} |
|
return PlatIPhoneI |
|
case "ipad_i": |
|
return PlatIPadI |
|
case "iphone_b": |
|
return PlatIPhoneB |
|
case "android_tv": |
|
return PlatAndroidTV |
|
case "android_tv_yst": |
|
return PlatAndroidTVYST |
|
case "bilistudio": |
|
return PlatBilistudio |
|
case "biliLink": |
|
return PlatIPhone |
|
} |
|
return PlatIPhone |
|
} |
|
|
|
// InvalidBuild check source build is not allow by config build and condition. |
|
// eg: when condition is gt, means srcBuild must gt cfgBuild, otherwise is invalid srcBuild. |
|
func InvalidBuild(srcBuild, cfgBuild int, cfgCond string) bool { |
|
if cfgBuild != 0 && cfgCond != "" { |
|
switch cfgCond { |
|
case "gt": |
|
if cfgBuild >= srcBuild { |
|
return true |
|
} |
|
case "lt": |
|
if cfgBuild <= srcBuild { |
|
return true |
|
} |
|
case "eq": |
|
if cfgBuild != srcBuild { |
|
return true |
|
} |
|
case "ne": |
|
if cfgBuild == srcBuild { |
|
return true |
|
} |
|
} |
|
} |
|
return false |
|
} |
|
|
|
// IsAndroid check plat is android or ipad. |
|
func IsAndroid(plat int8) bool { |
|
return plat == PlatAndroid || plat == PlatAndroidG || plat == PlatAndroidB || plat == PlatAndroidI || |
|
plat == PlatBilistudio || plat == PlatAndroidTV || plat == PlatAndroidTVYST |
|
} |
|
|
|
// IsIOS check plat is iphone or ipad. |
|
func IsIOS(plat int8) bool { |
|
return plat == PlatIPad || plat == PlatIPhone || plat == PlatIPadI || plat == PlatIPhoneI || plat == PlatIPhoneB |
|
} |
|
|
|
// FillURI deal app schema. |
|
func FillURI(gt, param string, f func(uri string) string) (uri string) { |
|
if param == "" { |
|
return |
|
} |
|
switch gt { |
|
case GotoAv, "": |
|
uri = "bilibili://video/" + param |
|
case GotoLive: |
|
uri = "bilibili://live/" + param |
|
case GotoBangumi: |
|
uri = "bilibili://bangumi/season/" + param |
|
case GotoGame: |
|
uri = "bilibili://game/" + param |
|
case GotoSp: |
|
uri = "bilibili://splist/" + param |
|
case GotoWeb: |
|
uri = param |
|
case GotoPegasusTab: |
|
uri = "bilibili://pegasus/op/" + param |
|
} |
|
if f != nil { |
|
uri = f(uri) |
|
} |
|
return |
|
} |
|
|
|
// MobiAPPBuleChange |
|
func MobiAPPBuleChange(mobiApp string) string { |
|
switch mobiApp { |
|
case "android_b": |
|
return "android" |
|
case "iphone_b": |
|
return "iphone" |
|
} |
|
return mobiApp |
|
} |
|
|
|
func URLHTTPS(uri string) (url string) { |
|
if strings.HasPrefix(uri, "http://") { |
|
url = "https://" + uri[7:] |
|
} else { |
|
url = uri |
|
} |
|
return |
|
} |
|
|
|
// IsOverseas is overseas |
|
func IsOverseas(plat int8) bool { |
|
return plat == PlatAndroidI || plat == PlatIPhoneI || plat == PlatIPadI |
|
} |
|
|
|
func PlatAPPBuleChange(plat int8) int8 { |
|
switch plat { |
|
case PlatAndroidB: |
|
return PlatAndroid |
|
case PlatIPhoneB: |
|
return PlatIPhone |
|
} |
|
return plat |
|
}
|
|
|