renaming to mixonomer, adding jwt
@ -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 */,
|
@ -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>
|
@ -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>
|
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 273 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
@ -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>
|
88
Mixonomer/Network/AuthApi.swift
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -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/"
|
@ -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
|