renaming to mixonomer, adding jwt

This commit is contained in:
andy 2022-08-08 20:40:38 +01:00
parent d5b619a66d
commit dc6b03dd3c
53 changed files with 208 additions and 74 deletions

View File

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
A10C8D29281302050018AE12 /* ToastUI in Frameworks */ = {isa = PBXBuildFile; productRef = A10C8D28281302050018AE12 /* ToastUI */; }; A10C8D29281302050018AE12 /* ToastUI in Frameworks */ = {isa = PBXBuildFile; productRef = A10C8D28281302050018AE12 /* ToastUI */; };
A11AC70628A188AE00645043 /* AuthApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = A11AC70528A188AE00645043 /* AuthApi.swift */; };
E906F7F42414019C004E1E31 /* NetworkPersister.swift in Sources */ = {isa = PBXBuildFile; fileRef = E906F7F32414019C004E1E31 /* NetworkPersister.swift */; }; E906F7F42414019C004E1E31 /* NetworkPersister.swift in Sources */ = {isa = PBXBuildFile; fileRef = E906F7F32414019C004E1E31 /* NetworkPersister.swift */; };
E906F7F724143AA7004E1E31 /* SwiftUICharts in Frameworks */ = {isa = PBXBuildFile; productRef = E906F7F624143AA7004E1E31 /* SwiftUICharts */; }; E906F7F724143AA7004E1E31 /* SwiftUICharts in Frameworks */ = {isa = PBXBuildFile; productRef = E906F7F624143AA7004E1E31 /* SwiftUICharts */; };
E934AC99240DD0E4009869F4 /* AddTagSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = E934AC98240DD0E4009869F4 /* AddTagSheet.swift */; }; E934AC99240DD0E4009869F4 /* AddTagSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = E934AC98240DD0E4009869F4 /* AddTagSheet.swift */; };
@ -40,8 +41,8 @@
E9EA691123F9A54A0012C3E8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E9EA691023F9A54A0012C3E8 /* Assets.xcassets */; }; E9EA691123F9A54A0012C3E8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E9EA691023F9A54A0012C3E8 /* Assets.xcassets */; };
E9EA691423F9A54B0012C3E8 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E9EA691323F9A54B0012C3E8 /* Preview Assets.xcassets */; }; E9EA691423F9A54B0012C3E8 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E9EA691323F9A54B0012C3E8 /* Preview Assets.xcassets */; };
E9EA691723F9A54B0012C3E8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E9EA691523F9A54B0012C3E8 /* LaunchScreen.storyboard */; }; E9EA691723F9A54B0012C3E8 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E9EA691523F9A54B0012C3E8 /* LaunchScreen.storyboard */; };
E9EA692223F9A54B0012C3E8 /* Music_ToolsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA692123F9A54B0012C3E8 /* Music_ToolsTests.swift */; }; E9EA692223F9A54B0012C3E8 /* MixonomerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA692123F9A54B0012C3E8 /* MixonomerTests.swift */; };
E9EA692D23F9A54B0012C3E8 /* Music_ToolsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA692C23F9A54B0012C3E8 /* Music_ToolsUITests.swift */; }; E9EA692D23F9A54B0012C3E8 /* MixonomerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA692C23F9A54B0012C3E8 /* MixonomerUITests.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@ -62,7 +63,8 @@
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
A146915A28118F940052999D /* Music Tools.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Music Tools.entitlements"; sourceTree = "<group>"; }; A11AC70528A188AE00645043 /* AuthApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthApi.swift; sourceTree = "<group>"; };
A146915A28118F940052999D /* Mixonomer.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Mixonomer.entitlements; sourceTree = "<group>"; };
E906F7F32414019C004E1E31 /* NetworkPersister.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkPersister.swift; sourceTree = "<group>"; }; E906F7F32414019C004E1E31 /* NetworkPersister.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkPersister.swift; sourceTree = "<group>"; };
E934AC98240DD0E4009869F4 /* AddTagSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddTagSheet.swift; sourceTree = "<group>"; }; E934AC98240DD0E4009869F4 /* AddTagSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddTagSheet.swift; sourceTree = "<group>"; };
E971F8B8245462D500B543B6 /* Router.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Router.swift; sourceTree = "<group>"; }; E971F8B8245462D500B543B6 /* Router.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Router.swift; sourceTree = "<group>"; };
@ -85,7 +87,7 @@
E9E30C2C23FEAB0200574EEF /* TagView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagView.swift; sourceTree = "<group>"; }; E9E30C2C23FEAB0200574EEF /* TagView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagView.swift; sourceTree = "<group>"; };
E9E30C3023FEAF2B00574EEF /* TagObjList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagObjList.swift; sourceTree = "<group>"; }; E9E30C3023FEAF2B00574EEF /* TagObjList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagObjList.swift; sourceTree = "<group>"; };
E9E30C3223FF255C00574EEF /* SettingsList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsList.swift; sourceTree = "<group>"; }; E9E30C3223FF255C00574EEF /* SettingsList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsList.swift; sourceTree = "<group>"; };
E9EA690723F9A5430012C3E8 /* Music Tools.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Music Tools.app"; sourceTree = BUILT_PRODUCTS_DIR; }; E9EA690723F9A5430012C3E8 /* Mixonomer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mixonomer.app; sourceTree = BUILT_PRODUCTS_DIR; };
E9EA690A23F9A5430012C3E8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; E9EA690A23F9A5430012C3E8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
E9EA690C23F9A5430012C3E8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; E9EA690C23F9A5430012C3E8 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
E9EA690E23F9A5430012C3E8 /* AppSkeleton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSkeleton.swift; sourceTree = "<group>"; }; E9EA690E23F9A5430012C3E8 /* AppSkeleton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSkeleton.swift; sourceTree = "<group>"; };
@ -93,11 +95,11 @@
E9EA691323F9A54B0012C3E8 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; }; E9EA691323F9A54B0012C3E8 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
E9EA691623F9A54B0012C3E8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; E9EA691623F9A54B0012C3E8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
E9EA691823F9A54B0012C3E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; E9EA691823F9A54B0012C3E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
E9EA691D23F9A54B0012C3E8 /* Music ToolsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Music ToolsTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; E9EA691D23F9A54B0012C3E8 /* MixonomerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MixonomerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
E9EA692123F9A54B0012C3E8 /* Music_ToolsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Music_ToolsTests.swift; sourceTree = "<group>"; }; E9EA692123F9A54B0012C3E8 /* MixonomerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MixonomerTests.swift; sourceTree = "<group>"; };
E9EA692323F9A54B0012C3E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; E9EA692323F9A54B0012C3E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
E9EA692823F9A54B0012C3E8 /* Music ToolsUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Music ToolsUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; E9EA692823F9A54B0012C3E8 /* MixonomerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MixonomerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
E9EA692C23F9A54B0012C3E8 /* Music_ToolsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Music_ToolsUITests.swift; sourceTree = "<group>"; }; E9EA692C23F9A54B0012C3E8 /* MixonomerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MixonomerUITests.swift; sourceTree = "<group>"; };
E9EA692E23F9A54B0012C3E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; E9EA692E23F9A54B0012C3E8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@ -150,6 +152,7 @@
E97AF45A23FC748D00635494 /* UserApi.swift */, E97AF45A23FC748D00635494 /* UserApi.swift */,
E9E30C2523FEA4EF00574EEF /* TagApi.swift */, E9E30C2523FEA4EF00574EEF /* TagApi.swift */,
E906F7F32414019C004E1E31 /* NetworkPersister.swift */, E906F7F32414019C004E1E31 /* NetworkPersister.swift */,
A11AC70528A188AE00645043 /* AuthApi.swift */,
); );
path = Network; path = Network;
sourceTree = "<group>"; sourceTree = "<group>";
@ -211,9 +214,9 @@
E9EA68FE23F9A5430012C3E8 = { E9EA68FE23F9A5430012C3E8 = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E9EA690923F9A5430012C3E8 /* Music Tools */, E9EA690923F9A5430012C3E8 /* Mixonomer */,
E9EA692023F9A54B0012C3E8 /* Music ToolsTests */, E9EA692023F9A54B0012C3E8 /* MixonomerTests */,
E9EA692B23F9A54B0012C3E8 /* Music ToolsUITests */, E9EA692B23F9A54B0012C3E8 /* MixonomerUITests */,
E9EA690823F9A5430012C3E8 /* Products */, E9EA690823F9A5430012C3E8 /* Products */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
@ -221,17 +224,17 @@
E9EA690823F9A5430012C3E8 /* Products */ = { E9EA690823F9A5430012C3E8 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E9EA690723F9A5430012C3E8 /* Music Tools.app */, E9EA690723F9A5430012C3E8 /* Mixonomer.app */,
E9EA691D23F9A54B0012C3E8 /* Music ToolsTests.xctest */, E9EA691D23F9A54B0012C3E8 /* MixonomerTests.xctest */,
E9EA692823F9A54B0012C3E8 /* Music ToolsUITests.xctest */, E9EA692823F9A54B0012C3E8 /* MixonomerUITests.xctest */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
E9EA690923F9A5430012C3E8 /* Music Tools */ = { E9EA690923F9A5430012C3E8 /* Mixonomer */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A146915A28118F940052999D /* Music Tools.entitlements */, A146915A28118F940052999D /* Mixonomer.entitlements */,
E98254C623FA25280056D9D3 /* Application */, E98254C623FA25280056D9D3 /* Application */,
E9EA691023F9A54A0012C3E8 /* Assets.xcassets */, E9EA691023F9A54A0012C3E8 /* Assets.xcassets */,
E9EA691823F9A54B0012C3E8 /* Info.plist */, E9EA691823F9A54B0012C3E8 /* Info.plist */,
@ -241,7 +244,7 @@
E98254C023F9FFDD0056D9D3 /* Views */, E98254C023F9FFDD0056D9D3 /* Views */,
E971F8B8245462D500B543B6 /* Router.swift */, E971F8B8245462D500B543B6 /* Router.swift */,
); );
path = "Music Tools"; path = Mixonomer;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
E9EA691223F9A54B0012C3E8 /* Preview Content */ = { E9EA691223F9A54B0012C3E8 /* Preview Content */ = {
@ -252,30 +255,30 @@
path = "Preview Content"; path = "Preview Content";
sourceTree = "<group>"; sourceTree = "<group>";
}; };
E9EA692023F9A54B0012C3E8 /* Music ToolsTests */ = { E9EA692023F9A54B0012C3E8 /* MixonomerTests */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E9EA692123F9A54B0012C3E8 /* Music_ToolsTests.swift */, E9EA692123F9A54B0012C3E8 /* MixonomerTests.swift */,
E9EA692323F9A54B0012C3E8 /* Info.plist */, E9EA692323F9A54B0012C3E8 /* Info.plist */,
); );
path = "Music ToolsTests"; path = MixonomerTests;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
E9EA692B23F9A54B0012C3E8 /* Music ToolsUITests */ = { E9EA692B23F9A54B0012C3E8 /* MixonomerUITests */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E9EA692C23F9A54B0012C3E8 /* Music_ToolsUITests.swift */, E9EA692C23F9A54B0012C3E8 /* MixonomerUITests.swift */,
E9EA692E23F9A54B0012C3E8 /* Info.plist */, E9EA692E23F9A54B0012C3E8 /* Info.plist */,
); );
path = "Music ToolsUITests"; path = MixonomerUITests;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
E9EA690623F9A5430012C3E8 /* Music Tools */ = { E9EA690623F9A5430012C3E8 /* Mixonomer */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = E9EA693123F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Music Tools" */; buildConfigurationList = E9EA693123F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Mixonomer" */;
buildPhases = ( buildPhases = (
E9EA690323F9A5430012C3E8 /* Sources */, E9EA690323F9A5430012C3E8 /* Sources */,
E9EA690423F9A5430012C3E8 /* Frameworks */, E9EA690423F9A5430012C3E8 /* Frameworks */,
@ -285,7 +288,7 @@
); );
dependencies = ( dependencies = (
); );
name = "Music Tools"; name = Mixonomer;
packageProductDependencies = ( packageProductDependencies = (
E98254D823FB53780056D9D3 /* Alamofire */, E98254D823FB53780056D9D3 /* Alamofire */,
E97AF45823FC50EC00635494 /* SwiftyJSON */, E97AF45823FC50EC00635494 /* SwiftyJSON */,
@ -294,12 +297,12 @@
A10C8D28281302050018AE12 /* ToastUI */, A10C8D28281302050018AE12 /* ToastUI */,
); );
productName = "Music Tools"; productName = "Music Tools";
productReference = E9EA690723F9A5430012C3E8 /* Music Tools.app */; productReference = E9EA690723F9A5430012C3E8 /* Mixonomer.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
E9EA691C23F9A54B0012C3E8 /* Music ToolsTests */ = { E9EA691C23F9A54B0012C3E8 /* MixonomerTests */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = E9EA693423F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Music ToolsTests" */; buildConfigurationList = E9EA693423F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "MixonomerTests" */;
buildPhases = ( buildPhases = (
E9EA691923F9A54B0012C3E8 /* Sources */, E9EA691923F9A54B0012C3E8 /* Sources */,
E9EA691A23F9A54B0012C3E8 /* Frameworks */, E9EA691A23F9A54B0012C3E8 /* Frameworks */,
@ -310,14 +313,14 @@
dependencies = ( dependencies = (
E9EA691F23F9A54B0012C3E8 /* PBXTargetDependency */, E9EA691F23F9A54B0012C3E8 /* PBXTargetDependency */,
); );
name = "Music ToolsTests"; name = MixonomerTests;
productName = "Music ToolsTests"; productName = "Music ToolsTests";
productReference = E9EA691D23F9A54B0012C3E8 /* Music ToolsTests.xctest */; productReference = E9EA691D23F9A54B0012C3E8 /* MixonomerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test"; productType = "com.apple.product-type.bundle.unit-test";
}; };
E9EA692723F9A54B0012C3E8 /* Music ToolsUITests */ = { E9EA692723F9A54B0012C3E8 /* MixonomerUITests */ = {
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = E9EA693723F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Music ToolsUITests" */; buildConfigurationList = E9EA693723F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "MixonomerUITests" */;
buildPhases = ( buildPhases = (
E9EA692423F9A54B0012C3E8 /* Sources */, E9EA692423F9A54B0012C3E8 /* Sources */,
E9EA692523F9A54B0012C3E8 /* Frameworks */, E9EA692523F9A54B0012C3E8 /* Frameworks */,
@ -328,9 +331,9 @@
dependencies = ( dependencies = (
E9EA692A23F9A54B0012C3E8 /* PBXTargetDependency */, E9EA692A23F9A54B0012C3E8 /* PBXTargetDependency */,
); );
name = "Music ToolsUITests"; name = MixonomerUITests;
productName = "Music ToolsUITests"; productName = "Music ToolsUITests";
productReference = E9EA692823F9A54B0012C3E8 /* Music ToolsUITests.xctest */; productReference = E9EA692823F9A54B0012C3E8 /* MixonomerUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing"; productType = "com.apple.product-type.bundle.ui-testing";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@ -356,7 +359,7 @@
}; };
}; };
}; };
buildConfigurationList = E9EA690223F9A5430012C3E8 /* Build configuration list for PBXProject "Music Tools" */; buildConfigurationList = E9EA690223F9A5430012C3E8 /* Build configuration list for PBXProject "Mixonomer" */;
compatibilityVersion = "Xcode 9.3"; compatibilityVersion = "Xcode 9.3";
developmentRegion = en; developmentRegion = en;
hasScannedForEncodings = 0; hasScannedForEncodings = 0;
@ -376,9 +379,9 @@
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
targets = ( targets = (
E9EA690623F9A5430012C3E8 /* Music Tools */, E9EA690623F9A5430012C3E8 /* Mixonomer */,
E9EA691C23F9A54B0012C3E8 /* Music ToolsTests */, E9EA691C23F9A54B0012C3E8 /* MixonomerTests */,
E9EA692723F9A54B0012C3E8 /* Music ToolsUITests */, E9EA692723F9A54B0012C3E8 /* MixonomerUITests */,
); );
}; };
/* End PBXProject section */ /* End PBXProject section */
@ -429,6 +432,7 @@
E9E30C2A23FEAA3A00574EEF /* TagRow.swift in Sources */, E9E30C2A23FEAA3A00574EEF /* TagRow.swift in Sources */,
E9CCD5BB2454C57300B5CD6C /* PlaylistList.swift in Sources */, E9CCD5BB2454C57300B5CD6C /* PlaylistList.swift in Sources */,
E97AF46023FC85D600635494 /* PlaylistApi.swift in Sources */, E97AF46023FC85D600635494 /* PlaylistApi.swift in Sources */,
A11AC70628A188AE00645043 /* AuthApi.swift in Sources */,
E9EA690F23F9A5430012C3E8 /* AppSkeleton.swift in Sources */, E9EA690F23F9A5430012C3E8 /* AppSkeleton.swift in Sources */,
E98254BD23F9B7A90056D9D3 /* Playlist.swift in Sources */, E98254BD23F9B7A90056D9D3 /* Playlist.swift in Sources */,
E97AF46723FD650800635494 /* AddPlaylistSheet.swift in Sources */, E97AF46723FD650800635494 /* AddPlaylistSheet.swift in Sources */,
@ -447,7 +451,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E9EA692223F9A54B0012C3E8 /* Music_ToolsTests.swift in Sources */, E9EA692223F9A54B0012C3E8 /* MixonomerTests.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -455,7 +459,7 @@
isa = PBXSourcesBuildPhase; isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E9EA692D23F9A54B0012C3E8 /* Music_ToolsUITests.swift in Sources */, E9EA692D23F9A54B0012C3E8 /* MixonomerUITests.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -464,12 +468,12 @@
/* Begin PBXTargetDependency section */ /* Begin PBXTargetDependency section */
E9EA691F23F9A54B0012C3E8 /* PBXTargetDependency */ = { E9EA691F23F9A54B0012C3E8 /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = E9EA690623F9A5430012C3E8 /* Music Tools */; target = E9EA690623F9A5430012C3E8 /* Mixonomer */;
targetProxy = E9EA691E23F9A54B0012C3E8 /* PBXContainerItemProxy */; targetProxy = E9EA691E23F9A54B0012C3E8 /* PBXContainerItemProxy */;
}; };
E9EA692A23F9A54B0012C3E8 /* PBXTargetDependency */ = { E9EA692A23F9A54B0012C3E8 /* PBXTargetDependency */ = {
isa = PBXTargetDependency; isa = PBXTargetDependency;
target = E9EA690623F9A5430012C3E8 /* Music Tools */; target = E9EA690623F9A5430012C3E8 /* Mixonomer */;
targetProxy = E9EA692923F9A54B0012C3E8 /* PBXContainerItemProxy */; targetProxy = E9EA692923F9A54B0012C3E8 /* PBXContainerItemProxy */;
}; };
/* End PBXTargetDependency section */ /* End PBXTargetDependency section */
@ -606,17 +610,17 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "Music Tools/Music Tools.entitlements"; CODE_SIGN_ENTITLEMENTS = Mixonomer/Mixonomer.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "Music\\ Tools/Preview\\ Content"; DEVELOPMENT_ASSET_PATHS = "Mixonomer/Preview\\ Content";
DEVELOPMENT_TEAM = 8UZ2659FDY; DEVELOPMENT_TEAM = 8UZ2659FDY;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = "Music Tools/Info.plist"; INFOPLIST_FILE = Mixonomer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = "xyz.sarsoo.Music-Tools"; PRODUCT_BUNDLE_IDENTIFIER = xyz.sarsoo.Mixonomer;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = NO; SUPPORTS_MACCATALYST = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -628,17 +632,17 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "Music Tools/Music Tools.entitlements"; CODE_SIGN_ENTITLEMENTS = Mixonomer/Mixonomer.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "Music\\ Tools/Preview\\ Content"; DEVELOPMENT_ASSET_PATHS = "Mixonomer/Preview\\ Content";
DEVELOPMENT_TEAM = 8UZ2659FDY; DEVELOPMENT_TEAM = 8UZ2659FDY;
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = "Music Tools/Info.plist"; INFOPLIST_FILE = Mixonomer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
PRODUCT_BUNDLE_IDENTIFIER = "xyz.sarsoo.Music-Tools"; PRODUCT_BUNDLE_IDENTIFIER = xyz.sarsoo.Mixonomer;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = NO; SUPPORTS_MACCATALYST = NO;
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
@ -654,7 +658,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 8UZ2659FDY; DEVELOPMENT_TEAM = 8UZ2659FDY;
INFOPLIST_FILE = "Music ToolsTests/Info.plist"; INFOPLIST_FILE = "Music ToolsTests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.2; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -664,7 +668,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Music Tools.app/Music Tools"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mixonomer.app/Mixonomer";
}; };
name = Debug; name = Debug;
}; };
@ -676,7 +680,7 @@
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 8UZ2659FDY; DEVELOPMENT_TEAM = 8UZ2659FDY;
INFOPLIST_FILE = "Music ToolsTests/Info.plist"; INFOPLIST_FILE = "Music ToolsTests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.2; IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -686,7 +690,7 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Music Tools.app/Music Tools"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mixonomer.app/Mixonomer";
}; };
name = Release; name = Release;
}; };
@ -733,7 +737,7 @@
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
E9EA690223F9A5430012C3E8 /* Build configuration list for PBXProject "Music Tools" */ = { E9EA690223F9A5430012C3E8 /* Build configuration list for PBXProject "Mixonomer" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
E9EA692F23F9A54B0012C3E8 /* Debug */, E9EA692F23F9A54B0012C3E8 /* Debug */,
@ -742,7 +746,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
E9EA693123F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Music Tools" */ = { E9EA693123F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Mixonomer" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
E9EA693223F9A54B0012C3E8 /* Debug */, E9EA693223F9A54B0012C3E8 /* Debug */,
@ -751,7 +755,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
E9EA693423F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Music ToolsTests" */ = { E9EA693423F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "MixonomerTests" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
E9EA693523F9A54B0012C3E8 /* Debug */, E9EA693523F9A54B0012C3E8 /* Debug */,
@ -760,7 +764,7 @@
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release; defaultConfigurationName = Release;
}; };
E9EA693723F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "Music ToolsUITests" */ = { E9EA693723F9A54B0012C3E8 /* Build configuration list for PBXNativeTarget "MixonomerUITests" */ = {
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
E9EA693823F9A54B0012C3E8 /* Debug */, E9EA693823F9A54B0012C3E8 /* Debug */,

View File

@ -2,6 +2,6 @@
<Workspace <Workspace
version = "1.0"> version = "1.0">
<FileRef <FileRef
location = "self:"> location = "self:/Users/andy/dev/swift/Music-Tools-iOS/Mixonomer.xcodeproj">
</FileRef> </FileRef>
</Workspace> </Workspace>

View File

@ -16,8 +16,8 @@
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "E9EA690623F9A5430012C3E8" BlueprintIdentifier = "E9EA690623F9A5430012C3E8"
BuildableName = "Music Tools.app" BuildableName = "Music Tools.app"
BlueprintName = "Music Tools" BlueprintName = "Mixonomer"
ReferencedContainer = "container:Music Tools.xcodeproj"> ReferencedContainer = "container:Mixonomer.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
</BuildActionEntries> </BuildActionEntries>
@ -34,8 +34,8 @@
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "E9EA691C23F9A54B0012C3E8" BlueprintIdentifier = "E9EA691C23F9A54B0012C3E8"
BuildableName = "Music ToolsTests.xctest" BuildableName = "Music ToolsTests.xctest"
BlueprintName = "Music ToolsTests" BlueprintName = "MixonomerTests"
ReferencedContainer = "container:Music Tools.xcodeproj"> ReferencedContainer = "container:Mixonomer.xcodeproj">
</BuildableReference> </BuildableReference>
</TestableReference> </TestableReference>
<TestableReference <TestableReference
@ -44,8 +44,8 @@
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "E9EA692723F9A54B0012C3E8" BlueprintIdentifier = "E9EA692723F9A54B0012C3E8"
BuildableName = "Music ToolsUITests.xctest" BuildableName = "Music ToolsUITests.xctest"
BlueprintName = "Music ToolsUITests" BlueprintName = "MixonomerUITests"
ReferencedContainer = "container:Music Tools.xcodeproj"> ReferencedContainer = "container:Mixonomer.xcodeproj">
</BuildableReference> </BuildableReference>
</TestableReference> </TestableReference>
</Testables> </Testables>
@ -66,15 +66,15 @@
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "E9EA690623F9A5430012C3E8" BlueprintIdentifier = "E9EA690623F9A5430012C3E8"
BuildableName = "Music Tools.app" BuildableName = "Music Tools.app"
BlueprintName = "Music Tools" BlueprintName = "Mixonomer"
ReferencedContainer = "container:Music Tools.xcodeproj"> ReferencedContainer = "container:Mixonomer.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
<EnvironmentVariables> <EnvironmentVariables>
<EnvironmentVariable <EnvironmentVariable
key = "MTOOLS_SERVER" key = "MTOOLS_SERVER"
value = "http://127.0.0.1:5000/" value = "http://127.0.0.1:5000/"
isEnabled = "NO"> isEnabled = "YES">
</EnvironmentVariable> </EnvironmentVariable>
</EnvironmentVariables> </EnvironmentVariables>
</LaunchAction> </LaunchAction>
@ -90,8 +90,8 @@
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "E9EA690623F9A5430012C3E8" BlueprintIdentifier = "E9EA690623F9A5430012C3E8"
BuildableName = "Music Tools.app" BuildableName = "Music Tools.app"
BlueprintName = "Music Tools" BlueprintName = "Mixonomer"
ReferencedContainer = "container:Music Tools.xcodeproj"> ReferencedContainer = "container:Mixonomer.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
</ProfileAction> </ProfileAction>

View File

Before

Width:  |  Height:  |  Size: 273 KiB

After

Width:  |  Height:  |  Size: 273 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -4,6 +4,8 @@
<dict> <dict>
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Mixonomer</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>

View File

@ -0,0 +1,88 @@
//
// AuthApi.swift
// Mixonomer
//
// Created by Andy Pack on 08/08/2022.
// Copyright © 2022 Sarsoo. All rights reserved.
//
import Foundation
import Alamofire
import SwiftyJSON
public enum AuthApi {
case token(username: String, password: String)
}
extension AuthApi: ApiRequest {
var domain: String {
return ApiRequestDefaults.domain
}
var path: String {
switch self {
case .token:
return "auth/token"
}
}
var httpMethod: HTTPMethod {
switch self {
case .token:
return .post
}
}
var parameters: JSON? {
switch self {
case .token(let username, let password):
return JSON(["username": username, "password": password])
}
}
var parameterType: ParameterEncoder? {
switch self {
case .token:
return JSONParameterEncoder.default
}
}
var headers: HTTPHeaders? {
return nil
}
var authMethod: AuthMethod? {
return AuthMethod.none
}
static func fromJSON(playlist: Data) -> Playlist? {
let decoder = JSONDecoder()
do {
let playlist = try decoder.decode(Playlist.self, from: playlist)
return playlist
} catch {
print(error)
}
return nil
}
static func fromJSON(playlist: JSON) -> Playlist? {
let _json = playlist.rawString()?.data(using: .utf8)
if let data = _json {
let decoder = JSONDecoder()
do {
let playlist = try decoder.decode(Playlist.self, from: data)
return playlist
} catch {
print(error)
}
}
print(playlist)
return nil
}
}

View File

@ -13,6 +13,8 @@ import KeychainAccess
public enum AuthMethod { public enum AuthMethod {
case basic case basic
case jwt
case none
func auth(headers: Alamofire.HTTPHeaders?) -> Alamofire.HTTPHeaders { func auth(headers: Alamofire.HTTPHeaders?) -> Alamofire.HTTPHeaders {
switch self { switch self {
@ -22,6 +24,18 @@ public enum AuthMethod {
let keychain = Keychain(service: "xyz.sarsoo.music.login") let keychain = Keychain(service: "xyz.sarsoo.music.login")
txHeaders.add(.authorization(username: keychain["username"] ?? "", password: keychain["password"] ?? "")) txHeaders.add(.authorization(username: keychain["username"] ?? "", password: keychain["password"] ?? ""))
return txHeaders return txHeaders
case .jwt:
var txHeaders = headers ?? HTTPHeaders()
let keychain = Keychain(service: "xyz.sarsoo.music.login")
txHeaders.add(.authorization(bearerToken: keychain["jwt"] ?? ""))
return txHeaders
case .none:
let txHeaders = headers ?? HTTPHeaders()
return txHeaders
} }
} }
} }
@ -29,8 +43,16 @@ public enum AuthMethod {
struct RequestBuilder { struct RequestBuilder {
static func buildRequest(apiRequest: ApiRequest) -> Alamofire.DataRequest { static func buildRequest(apiRequest: ApiRequest) -> Alamofire.DataRequest {
print(apiRequest.authMethod)
print(apiRequest.headers)
print(apiRequest.httpMethod)
let txHeaders = apiRequest.authMethod?.auth(headers: apiRequest.headers) let txHeaders = apiRequest.authMethod?.auth(headers: apiRequest.headers)
print(txHeaders)
print(apiRequest.parameters)
print(apiRequest.domain + apiRequest.path)
if apiRequest.parameters != nil { if apiRequest.parameters != nil {
if apiRequest.parameterType != nil { if apiRequest.parameterType != nil {
@ -55,7 +77,7 @@ struct RequestBuilder {
} }
struct ApiRequestDefaults { struct ApiRequestDefaults {
static let authMethod: AuthMethod = .basic static let authMethod: AuthMethod = .jwt
static var domain: String { get { static var domain: String { get {
let default_url = "https://mixonomer.sarsoo.xyz/" let default_url = "https://mixonomer.sarsoo.xyz/"

View File

@ -9,6 +9,7 @@
import SwiftUI import SwiftUI
import ToastUI import ToastUI
import KeychainAccess import KeychainAccess
import SwiftyJSON
struct LoginScreen: View { struct LoginScreen: View {
@ -40,18 +41,35 @@ struct LoginScreen: View {
keychain["username"] = username keychain["username"] = username
keychain["password"] = password keychain["password"] = password
let api = UserApi.getUser print(username)
print(password)
let api = AuthApi.token(username: username, password: password)
RequestBuilder.buildRequest(apiRequest: api) RequestBuilder.buildRequest(apiRequest: api)
.validate() .validate()
.responseData { response in .responseJSON { response in
switch response.result { switch response.result {
case .success: case .success:
guard let data = response.data else {
fatalError("error getting token")
}
guard let json = try? JSON(data: data) else {
fatalError("error parsing reponse")
}
let token = json["token"].stringValue
keychain["jwt"] = token
self.liveUser.loggedIn = true self.liveUser.loggedIn = true
case .failure: case .failure:
keychain["username"] = nil keychain["username"] = nil
keychain["password"] = nil keychain["password"] = nil
keychain["jwt"] = nil
toastText = "Login Failed" toastText = "Login Failed"
showingToast = true showingToast = true