diff --git a/lib/oto/commands/command.dart b/lib/oto/commands/command.dart index 238fa95..d087a78 100644 --- a/lib/oto/commands/command.dart +++ b/lib/oto/commands/command.dart @@ -78,6 +78,7 @@ enum CommandType { StringReplace, StringReplacePattern, StringIndex, + URLInfo, Jira, Zip, Shell, @@ -146,6 +147,7 @@ abstract class Command { CommandType.StringReplace: () => StringReplace(), CommandType.StringReplacePattern: () => StringReplacePattern(), CommandType.StringIndex: () => StringIndex(), + CommandType.URLInfo: ()=> URLInfo(), CommandType.Jira: () => Jira(), CommandType.Zip: () => Zip(), CommandType.Shell: () => Shell(), diff --git a/lib/oto/commands/util/string_util.dart b/lib/oto/commands/util/string_util.dart index 601a73a..138e0cd 100644 --- a/lib/oto/commands/util/string_util.dart +++ b/lib/oto/commands/util/string_util.dart @@ -84,3 +84,32 @@ class StringIndex extends Command { } } +class URLInfo extends Command { + @override + Future execute(DataCommand command) async { + var data = DataURLInfo.fromJson(getParam(command)); + var uri = Uri.parse(data.url); + + if(data.setScheme != null) { + await setProperty(data.setScheme!, uri.scheme, showPrint: data.showPrint); + } + if(data.setHost != null) { + await setProperty(data.setHost!, uri.host, showPrint: data.showPrint); + } + if(data.setPort != null) { + await setProperty(data.setPort!, uri.port, showPrint: data.showPrint); + } + if(data.setPath != null) { + await setProperty(data.setPath!, uri.path, showPrint: data.showPrint); + } + if(data.setQuery != null) { + await setProperty(data.setQuery!, uri.query, showPrint: data.showPrint); + } + if(data.setFragment != null) { + await setProperty(data.setFragment!, uri.fragment, showPrint: data.showPrint); + } + + return await complete(0, command); + } +} + diff --git a/lib/oto/data/command_data.dart b/lib/oto/data/command_data.dart index 1788d72..3216447 100644 --- a/lib/oto/data/command_data.dart +++ b/lib/oto/data/command_data.dart @@ -986,6 +986,25 @@ class DataStringIndex extends DataParam { Map toJson() => _$DataStringIndexToJson(this); } +//String Find Index +@JsonSerializable() +class DataURLInfo extends DataParam { + DataURLInfo(); + + late String url; + late String? setScheme; // https + late String? setHost; // example.com + late String? setPort; // 8080 + late String? setPath; // /path/to/resource + late String? setQuery; // query=123 + late String? setFragment; // #section + + factory DataURLInfo.fromJson(Map json) => + _$DataURLInfoFromJson(json); + @override + Map toJson() => _$DataURLInfoToJson(this); +} + //Web String Replace Item @JsonSerializable() diff --git a/lib/oto/data/command_data.g.dart b/lib/oto/data/command_data.g.dart index 8a47ea0..7372d2d 100644 --- a/lib/oto/data/command_data.g.dart +++ b/lib/oto/data/command_data.g.dart @@ -87,6 +87,7 @@ const _$CommandTypeEnumMap = { CommandType.StringReplace: 'StringReplace', CommandType.StringReplacePattern: 'StringReplacePattern', CommandType.StringIndex: 'StringIndex', + CommandType.URLInfo: 'URLInfo', CommandType.Jira: 'Jira', CommandType.Zip: 'Zip', CommandType.Shell: 'Shell', @@ -1668,6 +1669,38 @@ Map _$DataStringIndexToJson(DataStringIndex instance) => 'setValue': instance.setValue, }; +DataURLInfo _$DataURLInfoFromJson(Map json) => DataURLInfo() + ..workspace = json['workspace'] as String? + ..passExitCodes = (json['passExitCodes'] as List?) + ?.map((e) => (e as num).toInt()) + .toList() + ..setResult = json['setResult'] as String? + ..setExitCode = json['setExitCode'] as String? + ..showPrint = json['showPrint'] as bool? + ..url = json['url'] as String + ..setScheme = json['setScheme'] as String? + ..setHost = json['setHost'] as String? + ..setPort = json['setPort'] as String? + ..setPath = json['setPath'] as String? + ..setQuery = json['setQuery'] as String? + ..setFragment = json['setFragment'] as String?; + +Map _$DataURLInfoToJson(DataURLInfo instance) => + { + 'workspace': instance.workspace, + 'passExitCodes': instance.passExitCodes, + 'setResult': instance.setResult, + 'setExitCode': instance.setExitCode, + 'showPrint': instance.showPrint, + 'url': instance.url, + 'setScheme': instance.setScheme, + 'setHost': instance.setHost, + 'setPort': instance.setPort, + 'setPath': instance.setPath, + 'setQuery': instance.setQuery, + 'setFragment': instance.setFragment, + }; + DataStringReplacePair _$DataStringReplacePairFromJson( Map json) => DataStringReplacePair()