Initial commit

This commit is contained in:
2019-06-23 23:43:28 +03:00
commit ac52e154be
26 changed files with 1934 additions and 0 deletions
+734
View File
@@ -0,0 +1,734 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objects = {
/* Begin PBXBuildFile section */
8A73B7D207E658D8FEE69A63 /* Pods_Lemuria.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE638022123D6FF5FCA0498C /* Pods_Lemuria.framework */; };
DA871A6222BEC64E005E443E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA871A6122BEC64E005E443E /* AppDelegate.swift */; };
DA871A6422BEC64E005E443E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA871A6322BEC64E005E443E /* ViewController.swift */; };
DA871A6722BEC64E005E443E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA871A6522BEC64E005E443E /* Main.storyboard */; };
DA871A6922BEC650005E443E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA871A6822BEC650005E443E /* Assets.xcassets */; };
DA871A6C22BEC650005E443E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA871A6A22BEC650005E443E /* LaunchScreen.storyboard */; };
DAC5391222BED31E008938F2 /* ApplicationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5391122BED31E008938F2 /* ApplicationCoordinator.swift */; };
DAC5391622BED3E8008938F2 /* ApplicationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5391522BED3E8008938F2 /* ApplicationService.swift */; };
DAC5391D22BED74C008938F2 /* TargetType+GlobalParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5391C22BED74C008938F2 /* TargetType+GlobalParams.swift */; };
DAC5392522BEDDCE008938F2 /* LemuriaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5392422BEDDCE008938F2 /* LemuriaTests.swift */; };
DAC5392E22BEDDF8008938F2 /* Settings.response in Resources */ = {isa = PBXBuildFile; fileRef = DAC5392D22BEDDF8008938F2 /* Settings.response */; };
DAC5393022BFBF7C008938F2 /* LemuriaSettingsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5392F22BFBF7C008938F2 /* LemuriaSettingsTest.swift */; };
DAC5393222BFC0D0008938F2 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5393122BFC0D0008938F2 /* Settings.swift */; };
DAC5393422BFC190008938F2 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5393322BFC190008938F2 /* Client.swift */; };
DAC5393622BFC6F0008938F2 /* Departure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5393522BFC6F0008938F2 /* Departure.swift */; };
DAC5393722BFCDAF008938F2 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5393122BFC0D0008938F2 /* Settings.swift */; };
DAC5393822BFCDB1008938F2 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5393322BFC190008938F2 /* Client.swift */; };
DAC5393922BFCDB3008938F2 /* Departure.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC5393522BFC6F0008938F2 /* Departure.swift */; };
DAC5393E22C00F07008938F2 /* hot.response in Resources */ = {isa = PBXBuildFile; fileRef = DAC5393D22C00F07008938F2 /* hot.response */; };
DAC5394022C00F63008938F2 /* search.prepare.response in Resources */ = {isa = PBXBuildFile; fileRef = DAC5393F22C00F63008938F2 /* search.prepare.response */; };
DAC5394222C00F97008938F2 /* search.result.response in Resources */ = {isa = PBXBuildFile; fileRef = DAC5394122C00F97008938F2 /* search.result.response */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
DAC5392722BEDDCE008938F2 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DA871A5622BEC64E005E443E /* Project object */;
proxyType = 1;
remoteGlobalIDString = DA871A5D22BEC64E005E443E;
remoteInfo = Lemuria;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
091C742A1E583BD2A8F91358 /* Pods-Lemuria.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lemuria.release.xcconfig"; path = "Target Support Files/Pods-Lemuria/Pods-Lemuria.release.xcconfig"; sourceTree = "<group>"; };
893D0F12804796DA4F623C56 /* Pods-Lemuria.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Lemuria.debug.xcconfig"; path = "Target Support Files/Pods-Lemuria/Pods-Lemuria.debug.xcconfig"; sourceTree = "<group>"; };
CE638022123D6FF5FCA0498C /* Pods_Lemuria.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Lemuria.framework; sourceTree = BUILT_PRODUCTS_DIR; };
DA871A5E22BEC64E005E443E /* Lemuria.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Lemuria.app; sourceTree = BUILT_PRODUCTS_DIR; };
DA871A6122BEC64E005E443E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
DA871A6322BEC64E005E443E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
DA871A6622BEC64E005E443E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
DA871A6822BEC650005E443E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
DA871A6B22BEC650005E443E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
DA871A6D22BEC650005E443E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
DAC5391122BED31E008938F2 /* ApplicationCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationCoordinator.swift; sourceTree = "<group>"; };
DAC5391522BED3E8008938F2 /* ApplicationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationService.swift; sourceTree = "<group>"; };
DAC5391C22BED74C008938F2 /* TargetType+GlobalParams.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TargetType+GlobalParams.swift"; sourceTree = "<group>"; };
DAC5392222BEDDCE008938F2 /* LemuriaTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LemuriaTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
DAC5392422BEDDCE008938F2 /* LemuriaTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LemuriaTests.swift; sourceTree = "<group>"; };
DAC5392622BEDDCE008938F2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
DAC5392D22BEDDF8008938F2 /* Settings.response */ = {isa = PBXFileReference; lastKnownFileType = text; path = Settings.response; sourceTree = "<group>"; };
DAC5392F22BFBF7C008938F2 /* LemuriaSettingsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LemuriaSettingsTest.swift; sourceTree = "<group>"; };
DAC5393122BFC0D0008938F2 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
DAC5393322BFC190008938F2 /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = "<group>"; };
DAC5393522BFC6F0008938F2 /* Departure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Departure.swift; sourceTree = "<group>"; };
DAC5393D22C00F07008938F2 /* hot.response */ = {isa = PBXFileReference; lastKnownFileType = text; path = hot.response; sourceTree = "<group>"; };
DAC5393F22C00F63008938F2 /* search.prepare.response */ = {isa = PBXFileReference; lastKnownFileType = text; path = search.prepare.response; sourceTree = "<group>"; };
DAC5394122C00F97008938F2 /* search.result.response */ = {isa = PBXFileReference; lastKnownFileType = text; path = search.result.response; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
DA871A5B22BEC64E005E443E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8A73B7D207E658D8FEE69A63 /* Pods_Lemuria.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DAC5391F22BEDDCE008938F2 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
10C9E3C715D23742B95EC239 /* Frameworks */ = {
isa = PBXGroup;
children = (
CE638022123D6FF5FCA0498C /* Pods_Lemuria.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
3A791062796B7AC6C7552928 /* Pods */ = {
isa = PBXGroup;
children = (
893D0F12804796DA4F623C56 /* Pods-Lemuria.debug.xcconfig */,
091C742A1E583BD2A8F91358 /* Pods-Lemuria.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
DA871A5522BEC64E005E443E = {
isa = PBXGroup;
children = (
DA871A6022BEC64E005E443E /* Lemuria */,
DAC5392322BEDDCE008938F2 /* LemuriaTests */,
DA871A5F22BEC64E005E443E /* Products */,
3A791062796B7AC6C7552928 /* Pods */,
10C9E3C715D23742B95EC239 /* Frameworks */,
);
sourceTree = "<group>";
};
DA871A5F22BEC64E005E443E /* Products */ = {
isa = PBXGroup;
children = (
DA871A5E22BEC64E005E443E /* Lemuria.app */,
DAC5392222BEDDCE008938F2 /* LemuriaTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
DA871A6022BEC64E005E443E /* Lemuria */ = {
isa = PBXGroup;
children = (
DAC5390D22BECA87008938F2 /* Fundamental */,
DAC5390C22BECA7B008938F2 /* Common */,
DAC5390522BEC997008938F2 /* Flows */,
DA871A6322BEC64E005E443E /* ViewController.swift */,
DA871A6522BEC64E005E443E /* Main.storyboard */,
DA871A6822BEC650005E443E /* Assets.xcassets */,
DA871A6A22BEC650005E443E /* LaunchScreen.storyboard */,
DA871A6D22BEC650005E443E /* Info.plist */,
);
path = Lemuria;
sourceTree = "<group>";
};
DAC5390522BEC997008938F2 /* Flows */ = {
isa = PBXGroup;
children = (
DAC5393A22BFF785008938F2 /* HotTrips */,
DAC5390F22BECC9F008938F2 /* ApplicationLaunch */,
DAC5390622BEC9EF008938F2 /* Search */,
);
path = Flows;
sourceTree = "<group>";
};
DAC5390622BEC9EF008938F2 /* Search */ = {
isa = PBXGroup;
children = (
DAC5390B22BECA25008938F2 /* Builder */,
DAC5390A22BECA1F008938F2 /* Model */,
DAC5390922BECA09008938F2 /* Interactor */,
DAC5390822BECA02008938F2 /* Presenter */,
DAC5390722BEC9F8008938F2 /* View */,
);
path = Search;
sourceTree = "<group>";
};
DAC5390722BEC9F8008938F2 /* View */ = {
isa = PBXGroup;
children = (
);
path = View;
sourceTree = "<group>";
};
DAC5390822BECA02008938F2 /* Presenter */ = {
isa = PBXGroup;
children = (
);
path = Presenter;
sourceTree = "<group>";
};
DAC5390922BECA09008938F2 /* Interactor */ = {
isa = PBXGroup;
children = (
);
path = Interactor;
sourceTree = "<group>";
};
DAC5390A22BECA1F008938F2 /* Model */ = {
isa = PBXGroup;
children = (
);
path = Model;
sourceTree = "<group>";
};
DAC5390B22BECA25008938F2 /* Builder */ = {
isa = PBXGroup;
children = (
);
path = Builder;
sourceTree = "<group>";
};
DAC5390C22BECA7B008938F2 /* Common */ = {
isa = PBXGroup;
children = (
DAC5391822BED6C8008938F2 /* Extensions */,
DAC5391322BED36A008938F2 /* Models */,
);
path = Common;
sourceTree = "<group>";
};
DAC5390D22BECA87008938F2 /* Fundamental */ = {
isa = PBXGroup;
children = (
DAC5390E22BECA91008938F2 /* ApplicationDelegate */,
);
path = Fundamental;
sourceTree = "<group>";
};
DAC5390E22BECA91008938F2 /* ApplicationDelegate */ = {
isa = PBXGroup;
children = (
DA871A6122BEC64E005E443E /* AppDelegate.swift */,
);
path = ApplicationDelegate;
sourceTree = "<group>";
};
DAC5390F22BECC9F008938F2 /* ApplicationLaunch */ = {
isa = PBXGroup;
children = (
DAC5391422BED3A5008938F2 /* Interactor */,
DAC5391122BED31E008938F2 /* ApplicationCoordinator.swift */,
);
path = ApplicationLaunch;
sourceTree = "<group>";
};
DAC5391322BED36A008938F2 /* Models */ = {
isa = PBXGroup;
children = (
DAC5393122BFC0D0008938F2 /* Settings.swift */,
DAC5393322BFC190008938F2 /* Client.swift */,
DAC5393522BFC6F0008938F2 /* Departure.swift */,
);
path = Models;
sourceTree = "<group>";
};
DAC5391422BED3A5008938F2 /* Interactor */ = {
isa = PBXGroup;
children = (
DAC5391522BED3E8008938F2 /* ApplicationService.swift */,
);
path = Interactor;
sourceTree = "<group>";
};
DAC5391822BED6C8008938F2 /* Extensions */ = {
isa = PBXGroup;
children = (
DAC5391C22BED74C008938F2 /* TargetType+GlobalParams.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
DAC5392322BEDDCE008938F2 /* LemuriaTests */ = {
isa = PBXGroup;
children = (
DAC5392C22BEDDD7008938F2 /* assets */,
DAC5392422BEDDCE008938F2 /* LemuriaTests.swift */,
DAC5392622BEDDCE008938F2 /* Info.plist */,
DAC5392F22BFBF7C008938F2 /* LemuriaSettingsTest.swift */,
);
path = LemuriaTests;
sourceTree = "<group>";
};
DAC5392C22BEDDD7008938F2 /* assets */ = {
isa = PBXGroup;
children = (
DAC5392D22BEDDF8008938F2 /* Settings.response */,
DAC5393D22C00F07008938F2 /* hot.response */,
DAC5393F22C00F63008938F2 /* search.prepare.response */,
DAC5394122C00F97008938F2 /* search.result.response */,
);
path = assets;
sourceTree = "<group>";
};
DAC5393A22BFF785008938F2 /* HotTrips */ = {
isa = PBXGroup;
children = (
DAC5393C22BFF7A0008938F2 /* Interactor */,
DAC5393B22BFF79B008938F2 /* Model */,
);
path = HotTrips;
sourceTree = "<group>";
};
DAC5393B22BFF79B008938F2 /* Model */ = {
isa = PBXGroup;
children = (
);
path = Model;
sourceTree = "<group>";
};
DAC5393C22BFF7A0008938F2 /* Interactor */ = {
isa = PBXGroup;
children = (
);
path = Interactor;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
DA871A5D22BEC64E005E443E /* Lemuria */ = {
isa = PBXNativeTarget;
buildConfigurationList = DA871A7022BEC650005E443E /* Build configuration list for PBXNativeTarget "Lemuria" */;
buildPhases = (
6E85E1C5DE7B96D0D9BCF1B0 /* [CP] Check Pods Manifest.lock */,
DA871A5A22BEC64E005E443E /* Sources */,
DA871A5B22BEC64E005E443E /* Frameworks */,
DA871A5C22BEC64E005E443E /* Resources */,
AD789B616E9B030D9530B3F6 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Lemuria;
productName = Lemuria;
productReference = DA871A5E22BEC64E005E443E /* Lemuria.app */;
productType = "com.apple.product-type.application";
};
DAC5392122BEDDCE008938F2 /* LemuriaTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = DAC5392922BEDDCE008938F2 /* Build configuration list for PBXNativeTarget "LemuriaTests" */;
buildPhases = (
DAC5391E22BEDDCE008938F2 /* Sources */,
DAC5391F22BEDDCE008938F2 /* Frameworks */,
DAC5392022BEDDCE008938F2 /* Resources */,
);
buildRules = (
);
dependencies = (
DAC5392822BEDDCE008938F2 /* PBXTargetDependency */,
);
name = LemuriaTests;
productName = LemuriaTests;
productReference = DAC5392222BEDDCE008938F2 /* LemuriaTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
DA871A5622BEC64E005E443E /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1020;
LastUpgradeCheck = 1020;
ORGANIZATIONNAME = Juraldinio;
TargetAttributes = {
DA871A5D22BEC64E005E443E = {
CreatedOnToolsVersion = 10.2.1;
};
DAC5392122BEDDCE008938F2 = {
CreatedOnToolsVersion = 10.2.1;
TestTargetID = DA871A5D22BEC64E005E443E;
};
};
};
buildConfigurationList = DA871A5922BEC64E005E443E /* Build configuration list for PBXProject "Lemuria" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = DA871A5522BEC64E005E443E;
productRefGroup = DA871A5F22BEC64E005E443E /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
DA871A5D22BEC64E005E443E /* Lemuria */,
DAC5392122BEDDCE008938F2 /* LemuriaTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
DA871A5C22BEC64E005E443E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DA871A6C22BEC650005E443E /* LaunchScreen.storyboard in Resources */,
DA871A6922BEC650005E443E /* Assets.xcassets in Resources */,
DA871A6722BEC64E005E443E /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DAC5392022BEDDCE008938F2 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DAC5393E22C00F07008938F2 /* hot.response in Resources */,
DAC5394022C00F63008938F2 /* search.prepare.response in Resources */,
DAC5394222C00F97008938F2 /* search.result.response in Resources */,
DAC5392E22BEDDF8008938F2 /* Settings.response in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
6E85E1C5DE7B96D0D9BCF1B0 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Lemuria-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
AD789B616E9B030D9530B3F6 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Lemuria/Pods-Lemuria-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Lemuria/Pods-Lemuria-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Lemuria/Pods-Lemuria-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
DA871A5A22BEC64E005E443E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DAC5391622BED3E8008938F2 /* ApplicationService.swift in Sources */,
DA871A6422BEC64E005E443E /* ViewController.swift in Sources */,
DA871A6222BEC64E005E443E /* AppDelegate.swift in Sources */,
DAC5393222BFC0D0008938F2 /* Settings.swift in Sources */,
DAC5391222BED31E008938F2 /* ApplicationCoordinator.swift in Sources */,
DAC5393622BFC6F0008938F2 /* Departure.swift in Sources */,
DAC5393422BFC190008938F2 /* Client.swift in Sources */,
DAC5391D22BED74C008938F2 /* TargetType+GlobalParams.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DAC5391E22BEDDCE008938F2 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DAC5393722BFCDAF008938F2 /* Settings.swift in Sources */,
DAC5393022BFBF7C008938F2 /* LemuriaSettingsTest.swift in Sources */,
DAC5393822BFCDB1008938F2 /* Client.swift in Sources */,
DAC5392522BEDDCE008938F2 /* LemuriaTests.swift in Sources */,
DAC5393922BFCDB3008938F2 /* Departure.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
DAC5392822BEDDCE008938F2 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = DA871A5D22BEC64E005E443E /* Lemuria */;
targetProxy = DAC5392722BEDDCE008938F2 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
DA871A6522BEC64E005E443E /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
DA871A6622BEC64E005E443E /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
DA871A6A22BEC650005E443E /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
DA871A6B22BEC650005E443E /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
DA871A6E22BEC650005E443E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
DA871A6F22BEC650005E443E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
DA871A7122BEC650005E443E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 893D0F12804796DA4F623C56 /* Pods-Lemuria.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Lemuria/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.juraldinio.Lemuria;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
DA871A7222BEC650005E443E /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 091C742A1E583BD2A8F91358 /* Pods-Lemuria.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Lemuria/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.juraldinio.Lemuria;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
DAC5392A22BEDDCE008938F2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = LemuriaTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.juraldinio.LemuriaTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Lemuria.app/Lemuria";
};
name = Debug;
};
DAC5392B22BEDDCE008938F2 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
INFOPLIST_FILE = LemuriaTests/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.juraldinio.LemuriaTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Lemuria.app/Lemuria";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
DA871A5922BEC64E005E443E /* Build configuration list for PBXProject "Lemuria" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DA871A6E22BEC650005E443E /* Debug */,
DA871A6F22BEC650005E443E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DA871A7022BEC650005E443E /* Build configuration list for PBXNativeTarget "Lemuria" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DA871A7122BEC650005E443E /* Debug */,
DA871A7222BEC650005E443E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DAC5392922BEDDCE008938F2 /* Build configuration list for PBXNativeTarget "LemuriaTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DAC5392A22BEDDCE008938F2 /* Debug */,
DAC5392B22BEDDCE008938F2 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = DA871A5622BEC64E005E443E /* Project object */;
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:Lemuria.xcodeproj">
</FileRef>
</Workspace>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>Lemuria.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>6</integer>
</dict>
</dict>
</dict>
</plist>
@@ -0,0 +1,98 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
+6
View File
@@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
@@ -0,0 +1,20 @@
//
// TargetType+GlobalParams.swift
// Lemuria
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
import Moya
extension TargetType {
static func defaultHeaders() -> [String: String] {
return ["Referer": "http://lemuria-tur.ru/poisk-tourov/",
"Origin": "http://lemuria-tur.ru",
"X-Requested-With":"hot_tours.lemuria"]
}
}
+37
View File
@@ -0,0 +1,37 @@
//
// Client.swift
// Lemuria
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
struct Client: Decodable {
let clientID: Int
let isOperatorShowing: Int
let regularID: Int
let tourBasket: Bool
let flyFrom: Int
let searchLink: String
let useNational: Bool
let isMobile: Int
let reviews: Int
let topHotelsCode: String
let yandexMarket: String
enum CodingKeys: String, CodingKey {
case clientID = "id"
case isOperatorShowing = "showoperator"
case regularID = "regular"
case tourBasket = "tourbasket"
case flyFrom = "flyfrom"
case searchLink = "search_link"
case useNational = "usenational"
case isMobile = "mobile"
case reviews = "reviews"
case topHotelsCode = "tophotelsCode"
case yandexMarket = "ym"
}
}
+28
View File
@@ -0,0 +1,28 @@
//
// Departure.swift
// Lemuria
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
struct Departure: Decodable {
let id: Int
let name: String
let from: String
let national: Int
var isNational: Bool {
return self.national > 0
}
enum CodingKeys: String, CodingKey {
case id = "id"
case name = "departure_name"
case from = "from_name"
case national = "national"
}
}
+35
View File
@@ -0,0 +1,35 @@
//
// Settings.swift
// Lemuria
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
struct Settings: Decodable {
let client: Client
let catalogs: Catalogs
let external: [String: String]
}
struct Catalogs: Decodable {
let departures: [Departure]
let departuresSiblings: [DeparturesSibling]
enum CodingKeys: String, CodingKey {
case departures = "departures"
case departuresSiblings = "depsiblings"
}
}
struct DeparturesSibling: Decodable {
let id: Int
let departuresIDs: [Int]
enum CodingKeys: String, CodingKey {
case id = "id"
case departuresIDs = "departures"
}
}
@@ -0,0 +1,32 @@
//
// ApplicationCoordinator.swift
// Lemuria
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
import Moya
final class ApplicationCoordinator {
var provider: MoyaProvider<ApplicationService>?
func start() {
self.provider = MoyaProvider<ApplicationService>()
self.provider?.request(.settings) { result in
print("Yo")
switch result {
case let .success(response):
let str = String(data: response.data, encoding: .utf8)
print(str)
case let .failure(error):
print(error)
}
}
}
}
@@ -0,0 +1,55 @@
//
// ApplicationService.swift
// Lemuria
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
import Moya
enum ApplicationService {
case settings
case session(clientID: Int, userId: Int, referrer: String, screenWidth: Int, screenHeight: Int)
}
extension ApplicationService: TargetType {
var baseURL: URL {
return URL(string: "https://tourvisor.ru")!
}
var path: String {
switch self {
case .settings: return "/api/v1/settings"
case .session: return "/api/v1/sessions"
}
}
var method: Moya.Method {
switch self {
case .settings: return .get
case .session: return .post
}
}
var task: Task {
switch self {
case .settings: return .requestPlain
case .session:
return .requestPlain
//{"clientId":6398,"userId":0,"referrer":"","screenWidth":360,"screenHeight":640,"mobile":true}
//return .requestParameters(parameters: <#T##[String : Any]#>, encoding: JSONEncoding.default)
}
}
var headers: [String : String]? {
return ApplicationService.defaultHeaders()
}
var sampleData: Data {
return Data()
}
}
@@ -0,0 +1,50 @@
//
// AppDelegate.swift
// Lemuria
//
// Created by Jura on 6/22/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var coordinator: ApplicationCoordinator?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
self.coordinator = ApplicationCoordinator()
self.coordinator?.start()
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}
+45
View File
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
+19
View File
@@ -0,0 +1,19 @@
//
// ViewController.swift
// Lemuria
//
// Created by Jura on 6/22/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
+22
View File
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>
+30
View File
@@ -0,0 +1,30 @@
//
// LemuriaSettingsTest.swift
// LemuriaTests
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import Foundation
import XCTest
class LemuriaSettingsTest: XCTestCase {
func testSettingsModel() {
let bundle = Bundle.init(for: type(of: self))
guard let url = bundle.url(forResource: "Settings", withExtension: "response")
, let data = try? Data(contentsOf: url) else {
XCTFail()
return
}
let settings = try? JSONDecoder().decode(Settings.self, from: data)
XCTAssertNotNil(settings)
}
}
+33
View File
@@ -0,0 +1,33 @@
//
// LemuriaTests.swift
// LemuriaTests
//
// Created by Jura on 6/23/19.
// Copyright © 2019 Juraldinio. All rights reserved.
//
import XCTest
class LemuriaTests: XCTestCase {
override func setUp() {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}
+561
View File
@@ -0,0 +1,561 @@
{
"client": {
"id": 6398,
"showoperator": 0,
"regular": 2,
"tourbasket": true,
"flyfrom": 1,
"search_link": "http://lemuria-tur.ru/poisk-tourov/",
"usenational": false,
"mobile": 2,
"reviews": 0,
"tophotelsCode": "fe6516fdfa900cbb8771f6bd3e911563",
"ym": "38017780",
"ga": 1,
"css": "",
"crm": 0
},
"catalogs": {
"departures": [{
"id": 53,
"departure_name": "Абакан",
"from_name": "Абакана",
"national": 1
}, {
"id": 63,
"departure_name": "Анапа",
"from_name": "Анапы",
"national": 1
}, {
"id": 29,
"departure_name": "Архангельск",
"from_name": "Архангельска",
"national": 1
}, {
"id": 40,
"departure_name": "Астрахань",
"from_name": "Астрахани",
"national": 1
}, {
"id": 25,
"departure_name": "Барнаул",
"from_name": "Барнаула",
"national": 1
}, {
"id": 99,
"departure_name": "Без перелета",
"from_name": "Без перелета",
"national": 1
}, {
"id": 32,
"departure_name": "Белгород",
"from_name": "Белгорода",
"national": 1
}, {
"id": 36,
"departure_name": "Благовещенск",
"from_name": "Благовещенска",
"national": 1
}, {
"id": 45,
"departure_name": "Братск",
"from_name": "Братска",
"national": 1
}, {
"id": 38,
"departure_name": "Брянск",
"from_name": "Брянска",
"national": 1
}, {
"id": 23,
"departure_name": "Владивосток",
"from_name": "Владивостока",
"national": 1
}, {
"id": 46,
"departure_name": "Владикавказ",
"from_name": "Владикавказа",
"national": 1
}, {
"id": 27,
"departure_name": "Волгоград",
"from_name": "Волгограда",
"national": 1
}, {
"id": 26,
"departure_name": "Воронеж",
"from_name": "Воронежа",
"national": 1
}, {
"id": 96,
"departure_name": "Грозный",
"from_name": "Грозного",
"national": 1
}, {
"id": 3,
"departure_name": "Екатеринбург",
"from_name": "Екатеринбурга",
"national": 1
}, {
"id": 103,
"departure_name": "Иваново",
"from_name": "Иваново",
"national": 1
}, {
"id": 64,
"departure_name": "Ижевск",
"from_name": "Ижевска",
"national": 1
}, {
"id": 22,
"departure_name": "Иркутск",
"from_name": "Иркутска",
"national": 1
}, {
"id": 10,
"departure_name": "Казань",
"from_name": "Казани",
"national": 1
}, {
"id": 17,
"departure_name": "Калининград",
"from_name": "Калининграда",
"national": 1
}, {
"id": 95,
"departure_name": "Калуга",
"from_name": "Калуги",
"national": 1
}, {
"id": 15,
"departure_name": "Кемерово",
"from_name": "Кемерово",
"national": 1
}, {
"id": 104,
"departure_name": "Киров",
"from_name": "Кирова",
"national": 1
}, {
"id": 11,
"departure_name": "Краснодар",
"from_name": "Краснодара",
"national": 1
}, {
"id": 12,
"departure_name": "Красноярск",
"from_name": "Красноярска",
"national": 1
}, {
"id": 47,
"departure_name": "Курск",
"from_name": "Курска",
"national": 1
}, {
"id": 48,
"departure_name": "Магнитогорск",
"from_name": "Магнитогорска",
"national": 1
}, {
"id": 94,
"departure_name": "Махачкала",
"from_name": "Махачкалы",
"national": 1
}, {
"id": 39,
"departure_name": "Мин.Воды",
"from_name": "Мин.Вод",
"national": 1
}, {
"id": 1,
"departure_name": "Москва",
"from_name": "Москвы",
"national": 1
}, {
"id": 30,
"departure_name": "Мурманск",
"from_name": "Мурманска",
"national": 1
}, {
"id": 8,
"departure_name": "Н.Новгород",
"from_name": "Н.Новгорода",
"national": 1
}, {
"id": 61,
"departure_name": "Наб.Челны",
"from_name": "Наб.Челнов",
"national": 1
}, {
"id": 54,
"departure_name": "Нальчик",
"from_name": "Нальчика",
"national": 1
}, {
"id": 34,
"departure_name": "Нижневартовск",
"from_name": "Нижневартовска",
"national": 1
}, {
"id": 19,
"departure_name": "Нижнекамск",
"from_name": "Нижнекамска",
"national": 1
}, {
"id": 16,
"departure_name": "Новокузнецк",
"from_name": "Новокузнецка",
"national": 1
}, {
"id": 9,
"departure_name": "Новосибирск",
"from_name": "Новосибирска",
"national": 1
}, {
"id": 67,
"departure_name": "Новый Уренгой",
"from_name": "Нового Уренгоя",
"national": 1
}, {
"id": 21,
"departure_name": "Омск",
"from_name": "Омска",
"national": 1
}, {
"id": 28,
"departure_name": "Оренбург",
"from_name": "Оренбурга",
"national": 1
}, {
"id": 49,
"departure_name": "Орск",
"from_name": "Орска",
"national": 1
}, {
"id": 43,
"departure_name": "П.Камчатский",
"from_name": "П.Камчатского",
"national": 1
}, {
"id": 65,
"departure_name": "Пенза",
"from_name": "Пензы",
"national": 1
}, {
"id": 2,
"departure_name": "Пермь",
"from_name": "Перми",
"national": 1
}, {
"id": 18,
"departure_name": "Ростов-на-Дону",
"from_name": "Ростова-на-Дону",
"national": 1
}, {
"id": 5,
"departure_name": "С.Петербург",
"from_name": "Санкт-Петербурга",
"national": 1
}, {
"id": 7,
"departure_name": "Самара",
"from_name": "Самары",
"national": 1
}, {
"id": 101,
"departure_name": "Саранск",
"from_name": "Саранска",
"national": 1
}, {
"id": 31,
"departure_name": "Саратов",
"from_name": "Саратова",
"national": 1
}, {
"id": 62,
"departure_name": "Симферополь",
"from_name": "Симферополя",
"national": 1
}, {
"id": 56,
"departure_name": "Сочи",
"from_name": "Сочи",
"national": 1
}, {
"id": 55,
"departure_name": "Ставрополь",
"from_name": "Ставрополя",
"national": 1
}, {
"id": 13,
"departure_name": "Сургут",
"from_name": "Сургута",
"national": 1
}, {
"id": 41,
"departure_name": "Сыктывкар",
"from_name": "Сыктывкара",
"national": 1
}, {
"id": 52,
"departure_name": "Томск",
"from_name": "Томска",
"national": 1
}, {
"id": 14,
"departure_name": "Тюмень",
"from_name": "Тюмени",
"national": 1
}, {
"id": 42,
"departure_name": "Улан-Удэ",
"from_name": "Улан-Удэ",
"national": 1
}, {
"id": 50,
"departure_name": "Ульяновск",
"from_name": "Ульяновска",
"national": 1
}, {
"id": 4,
"departure_name": "Уфа",
"from_name": "Уфы",
"national": 1
}, {
"id": 20,
"departure_name": "Хабаровск",
"from_name": "Хабаровска",
"national": 1
}, {
"id": 35,
"departure_name": "Ханты-Мансийск",
"from_name": "Ханты-Мансийска",
"national": 1
}, {
"id": 51,
"departure_name": "Чебоксары",
"from_name": "Чебоксар",
"national": 1
}, {
"id": 6,
"departure_name": "Челябинск",
"from_name": "Челябинска",
"national": 1
}, {
"id": 102,
"departure_name": "Череповец",
"from_name": "Череповца",
"national": 1
}, {
"id": 44,
"departure_name": "Чита",
"from_name": "Читы",
"national": 1
}, {
"id": 24,
"departure_name": "Ю.Сахалинск",
"from_name": "Ю.Сахалинска",
"national": 1
}, {
"id": 37,
"departure_name": "Якутск",
"from_name": "Якутска",
"national": 1
}, {
"id": 85,
"departure_name": "Ярославль",
"from_name": "Ярославля",
"national": 1
}],
"depsiblings": [{
"id": 1,
"departures": [99, 5]
}, {
"id": 2,
"departures": [99, 1, 3, 4, 6, 10]
}, {
"id": 3,
"departures": [99, 1, 2, 4, 6, 14]
}, {
"id": 4,
"departures": [99, 1, 3, 6, 28, 7]
}, {
"id": 5,
"departures": [99, 1]
}, {
"id": 6,
"departures": [99, 1, 3, 4, 2]
}, {
"id": 7,
"departures": [99, 1, 50, 10, 4, 31, 28]
}, {
"id": 8,
"departures": [99, 1, 51, 10]
}, {
"id": 9,
"departures": [99, 1, 15, 52, 25, 21, 3]
}, {
"id": 10,
"departures": [99, 1, 51, 50, 8, 7]
}, {
"id": 11,
"departures": [99, 1, 18, 55, 56, 27]
}, {
"id": 12,
"departures": [99, 1, 53, 15, 10, 52, 22]
}, {
"id": 13,
"departures": [99, 1, 35, 34, 3]
}, {
"id": 14,
"departures": [99, 1, 3, 6, 21]
}, {
"id": 15,
"departures": [99, 1, 9, 16, 52, 53, 25, 12, 21]
}, {
"id": 16,
"departures": [99, 1, 9, 52, 53, 25, 12, 21]
}, {
"id": 17,
"departures": [99, 1, 5]
}, {
"id": 18,
"departures": [99, 1, 11, 55, 27]
}, {
"id": 19,
"departures": [99, 1, 10, 61, 4, 50]
}, {
"id": 20,
"departures": [99, 1, 36, 23, 24]
}, {
"id": 21,
"departures": [99, 1, 9, 3, 14, 6]
}, {
"id": 22,
"departures": [99, 1, 42, 44, 12, 45]
}, {
"id": 23,
"departures": [99, 1, 36, 20, 24]
}, {
"id": 24,
"departures": [99, 1, 20, 23, 36]
}, {
"id": 25,
"departures": [99, 1, 9, 15, 52, 21, 3]
}, {
"id": 26,
"departures": [99, 1, 32, 31, 47, 38]
}, {
"id": 27,
"departures": [99, 1, 18, 40, 31, 26]
}, {
"id": 28,
"departures": [99, 1, 4, 7]
}, {
"id": 29,
"departures": [99, 1, 5]
}, {
"id": 30,
"departures": [99, 1, 5]
}, {
"id": 31,
"departures": [99, 1, 7, 27]
}, {
"id": 32,
"departures": [99, 1, 26, 47, 18, 38, 33]
}, {
"id": 33,
"departures": [99, 1, 58, 32, 26, 47]
}, {
"id": 34,
"departures": [99, 1, 13, 35, 14, 3]
}, {
"id": 35,
"departures": [99, 1, 13, 34, 14, 3]
}, {
"id": 36,
"departures": [99, 1, 20, 23, 24]
}, {
"id": 37,
"departures": [99, 1]
}, {
"id": 38,
"departures": [99, 1, 47, 26, 32]
}, {
"id": 39,
"departures": [99, 1, 55, 11, 18, 40, 27]
}, {
"id": 40,
"departures": [99, 1, 39, 27, 18]
}, {
"id": 41,
"departures": [99, 1]
}, {
"id": 42,
"departures": [99, 1, 22, 44]
}, {
"id": 43,
"departures": [99, 1, 24, 23, 20]
}, {
"id": 44,
"departures": [99, 1, 22, 42]
}, {
"id": 45,
"departures": [99, 1, 22]
}, {
"id": 46,
"departures": [99, 1, 54, 56, 39, 40, 11, 55]
}, {
"id": 47,
"departures": [99, 1, 26, 32, 38]
}, {
"id": 48,
"departures": [99, 1, 6, 3, 49, 4, 28]
}, {
"id": 49,
"departures": [99, 1, 6, 3, 48, 4, 28]
}, {
"id": 50,
"departures": [99, 1, 10, 7, 51, 31, 8, 4]
}, {
"id": 51,
"departures": [99, 1, 10, 50, 8, 7]
}, {
"id": 52,
"departures": [99, 1, 15, 9, 25, 21, 3]
}, {
"id": 53,
"departures": [99, 1, 16, 12, 15, 9]
}, {
"id": 54,
"departures": [99, 1, 39, 55, 11, 46]
}, {
"id": 55,
"departures": [99, 1, 39, 56, 54, 11, 46, 18]
}, {
"id": 56,
"departures": [99, 1, 39, 54, 11, 46, 18]
}, {
"id": 57,
"departures": [99, 1]
}, {
"id": 58,
"departures": [99, 1]
}, {
"id": 59,
"departures": [99, 1]
}, {
"id": 60,
"departures": [99, 1]
}, {
"id": 61,
"departures": [99, 1, 10, 4, 2, 50, 7, 51]
}, {
"id": 99,
"departures": [1]
}]
},
"external": {
"mapKey": "AIzaSyArUFFsS9WLf3k22y20koqQBBUITNhUfLE"
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
curl -H 'Host: tourvisor.ru' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'User-Agent: Mozilla/5.0 (Linux; Android 9; Mi A1 Build/PKQ1.180917.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.101 Mobile Safari/537.36' -H 'Accept: */*' -H 'X-Requested-With: hot_tours.lemuria' -H 'Referer: http://lemuria-tur.ru/poisk-tourov/hot-tour.html' -H 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' --compressed 'http://tourvisor.ru/xml/modsearch.php?datefrom=14.07.2019&dateto=14.07.2019&nightsfrom=7&nightsto=10&adults=2&child=0&country=31&departure=1&currency=0&showoperator=0&pricetype=0&gettemp=mobile&callback=callback006233083391571448'
{"result":{"requestid":1671465446,"operators":[{"id":"13","status":1,"name":"Anex","minprice":0},{"id":"15","status":1,"name":"TezTour","minprice":0},{"id":"18","status":1,"name":"Biblioglobus","minprice":0},{"id":"23","status":1,"name":"\u0420\u0443\u0441.\u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441","minprice":0},{"id":"25","status":1,"name":"TUI","minprice":0},{"id":"26","status":1,"name":"\u0414\u0412\u041c-\u0422\u0443\u0440","minprice":0},{"id":"27","status":1,"name":"Paks","minprice":0},{"id":"28","status":1,"name":"\u0410\u043c\u0438\u0433\u043e","minprice":0},{"id":"33","status":1,"name":"Amigo-S","minprice":0},{"id":"36","status":1,"name":"PAC","minprice":0},{"id":"40","status":1,"name":"ICS Travel Group","minprice":0},{"id":"43","status":1,"name":"\u0418\u043d\u0442\u0443\u0440\u0438\u0441\u0442","minprice":0},{"id":"51","status":1,"name":"\u0414\u0436\u0435\u0442 \u0422\u0440\u0435\u0432\u0435\u043b","minprice":0},{"id":"58","status":1,"name":"Evroport","minprice":0},{"id":"59","status":1,"name":"Spectrum","minprice":0},{"id":"65","status":1,"name":"De Visu","minprice":0},{"id":"121","status":1,"name":"\u0412\u043e\u044f\u0436-\u0421\u0435\u0440\u0432\u0438\u0441","minprice":0}],"currency":"RUB","showtrack":1,"showcart":2,"links":{"hotelsmall":"\/\/static.tourvisor.ru\/hotel_pics\/small\/","hotelmedium":"\/\/static.tourvisor.ru\/hotel_pics\/medium\/","regionsmall":"\/\/static.tourvisor.ru\/hotel_pics\/reg-small\/","regionmedium":"\/\/static.tourvisor.ru\/hotel_pics\/reg-medium\/","countrysmall":"\/\/static.tourvisor.ru\/hotel_pics\/small\/hotel_country_","countrymedium":"\/\/static.tourvisor.ru\/hotel_pics\/medium\/hotel_country_","hotellink":"http:\/\/manyhotels.ru\/#!\/hotel=","searchlink":"http:\/\/lemuria-tur.ru\/poisk-tourov\/","receditnistr":"http:\/\/support.tourvisor.ru\/nachalo-raboty-s-tourvisor\/61-nastrojka-otobrazheniya-otelej.html"},"client":{"multioffice":"0"}}}
File diff suppressed because one or more lines are too long
+12
View File
@@ -0,0 +1,12 @@
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'Lemuria' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Lemuria
pod 'Moya', '~> 13.0'
pod 'RealmSwift'
end
+36
View File
@@ -0,0 +1,36 @@
PODS:
- Alamofire (4.8.2)
- Moya (13.0.1):
- Moya/Core (= 13.0.1)
- Moya/Core (13.0.1):
- Alamofire (~> 4.1)
- Result (~> 4.1)
- Realm (3.15.0):
- Realm/Headers (= 3.15.0)
- Realm/Headers (3.15.0)
- RealmSwift (3.15.0):
- Realm (= 3.15.0)
- Result (4.1.0)
DEPENDENCIES:
- Moya (~> 13.0)
- RealmSwift
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- Alamofire
- Moya
- Realm
- RealmSwift
- Result
SPEC CHECKSUMS:
Alamofire: ae5c501addb7afdbb13687d7f2f722c78734c2d3
Moya: f4a4b80ff2f8a4ffc208dfb31cd91636622fee6e
Realm: 9b834e1be6062f544805252c812348872dc5d4ed
RealmSwift: 8a41886f8ab6efef9eb8df97de2f2bb911561a79
Result: bd966fac789cc6c1563440b348ab2598cc24d5c7
PODFILE CHECKSUM: 403ba1df7aa33586cc3292b3639e67577caed4df
COCOAPODS: 1.7.0