Analytics improvement (#9)
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
Co-authored-by: Quentin Bandera <q.bandera@openium.fr> Reviewed-on: #9 Co-authored-by: Loris Perret <l.perret@openium.fr> Co-committed-by: Loris Perret <l.perret@openium.fr>
This commit is contained in:
@ -67,25 +67,58 @@ class AnalyticsFileParser {
|
||||
}
|
||||
}
|
||||
|
||||
private func getParameters(from parameters: [AnalyticsParameterDTO]) -> [AnalyticsParameter] {
|
||||
parameters.map { dtoParameter in
|
||||
private static func getParameters(from parameters: [AnalyticsParameterDTO]) -> [AnalyticsParameter] {
|
||||
func verify(value: String?, for type: ParameterType) {
|
||||
guard let value, value.isEmpty == false else { return }
|
||||
|
||||
switch type {
|
||||
case .int:
|
||||
if Int(value) == nil {
|
||||
let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)")
|
||||
print(error.description)
|
||||
Analytics.exit(withError: error)
|
||||
}
|
||||
case .bool:
|
||||
if Bool(value.lowercased()) == nil {
|
||||
let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)")
|
||||
print(error.description)
|
||||
Analytics.exit(withError: error)
|
||||
}
|
||||
case .double:
|
||||
if Double(value) == nil {
|
||||
let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)")
|
||||
print(error.description)
|
||||
Analytics.exit(withError: error)
|
||||
}
|
||||
case .string:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return parameters.map { dtoParameter in
|
||||
// Type
|
||||
let type = dtoParameter.type.uppercasedFirst()
|
||||
|
||||
guard
|
||||
type == "String" ||
|
||||
type == "Int" ||
|
||||
type == "Double" ||
|
||||
type == "Bool"
|
||||
else {
|
||||
guard let typeEnum = ParameterType(rawValue: type) else {
|
||||
let error = AnalyticsError.invalidParameter("type of \(dtoParameter.name)")
|
||||
print(error.description)
|
||||
Analytics.exit(withError: error)
|
||||
}
|
||||
|
||||
if dtoParameter.value != nil, dtoParameter.replaceIn != nil {
|
||||
let error = AnalyticsError.invalidParameter("you can't set 'value' and 'replaceIn' for \(dtoParameter.name)")
|
||||
print(error.description)
|
||||
Analytics.exit(withError: error)
|
||||
}
|
||||
|
||||
verify(value: dtoParameter.value, for: typeEnum)
|
||||
verify(value: dtoParameter.defaultValue, for: typeEnum)
|
||||
|
||||
let parameter = AnalyticsParameter(
|
||||
name: dtoParameter.name,
|
||||
type: type
|
||||
type: typeEnum,
|
||||
value: dtoParameter.value ?? "",
|
||||
defaultValue: dtoParameter.defaultValue ?? ""
|
||||
)
|
||||
|
||||
if let replaceIn = dtoParameter.replaceIn {
|
||||
@ -114,7 +147,7 @@ class AnalyticsFileParser {
|
||||
}
|
||||
|
||||
if let parameters {
|
||||
definition.parameters = getParameters(from: parameters)
|
||||
definition.parameters = AnalyticsFileParser.getParameters(from: parameters)
|
||||
}
|
||||
|
||||
return definition
|
||||
@ -140,6 +173,8 @@ class AnalyticsFileParser {
|
||||
Analytics.exit(withError: error)
|
||||
}
|
||||
|
||||
definition.path = path
|
||||
} else if let path = screen.path {
|
||||
definition.path = path
|
||||
}
|
||||
|
||||
@ -176,6 +211,14 @@ class AnalyticsFileParser {
|
||||
}
|
||||
|
||||
definition.action = action
|
||||
} else {
|
||||
if let category = event.category {
|
||||
definition.category = category
|
||||
}
|
||||
|
||||
if let action = event.action {
|
||||
definition.action = action
|
||||
}
|
||||
}
|
||||
|
||||
return definition
|
||||
|
Reference in New Issue
Block a user