diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index aca07d2..a916aba 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -12,6 +12,8 @@
name: "CodeQL"
on:
+ push:
+ branches: '*'
pull_request:
# The branches below must be a subset of the branches above
branches: '*'
@@ -19,7 +21,7 @@ on:
jobs:
analyze:
name: Analyze
- runs-on: ubuntu-latest
+ runs-on: macos-latest
permissions:
actions: read
contents: read
@@ -28,17 +30,17 @@ jobs:
strategy:
fail-fast: false
matrix:
- language: [ 'ruby' ]
+ language: [ 'swift' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -48,11 +50,15 @@ jobs:
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
-
+ - name: Install dependencies
+ run: |
+ sudo gem install cocoapods
+ pod install
+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@v2
+ uses: github/codeql-action/autobuild@v3
# âšī¸ Command-line programs to run using the OS shell.
# đ See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -65,4 +71,4 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v3
diff --git a/.talismanrc b/.talismanrc
index 345ca2f..396e370 100644
--- a/.talismanrc
+++ b/.talismanrc
@@ -1,5 +1,17 @@
fileignoreconfig:
- filename: .github/workflows/secrets-scan.yml
+- filename: README.md
+ checksum: e725ff07d9c1bc643171e63e63e8de446017be17e9164909ec3a1b2585fe45a3
+- filename: Podfile.lock
+ checksum: 1e736dd1291867ab01f6557552c7fa275cce09f83fe85d91530a8848dee1e991
+- filename: csnews.xcodeproj/project.pbxproj
+ checksum: 4d045dea691bb025be52852918b463a973e3a3a9feea258782be9680b3fe44a0
+- filename: csnews.xcodeproj/xcshareddata/xcschemes/csnews.xcscheme
+ checksum: d3b2a9aaeb2194c3688178a88fed42399c2ce11967141267da2fa4ca352274ae
+- filename: Podfile.lock
+ checksum: 8092cb6bb4ccbf7b384dfacdae70eb97651522d41ccf1bb95cd2a4f3f3133907
+- filename: csnews.xcodeproj/project.pbxproj
+ checksum: aac67b934c7066328ee9b6d00d45e53fcf8f1ce8b2b950aa99f18ae5f2752673
ignore_detectors:
- filecontent
version: "1.0"
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d78b6bc
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2012 - 2025 Contentstack
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Podfile b/Podfile
index 516102c..97baf6d 100644
--- a/Podfile
+++ b/Podfile
@@ -1,9 +1,23 @@
source 'https://github.com/CocoaPods/Specs.git'
-platform :ios, '8.0'
+platform :ios, '15.6'
use_frameworks!
target 'csnews' do
- pod 'NVActivityIndicatorView', '~> 4.4.0'
- pod 'Kingfisher', '~> 4.10.0'
- pod 'Contentstack'
+ pod 'NVActivityIndicatorView', '~> 5.2.0'
+ pod 'Kingfisher', '~> 8.5.0'
+ pod 'Contentstack', '~> 3.15.0'
end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ target.build_configurations.each do |config|
+ config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.6'
+ end
+ end
+
+ # Remove _CodeSignature from all frameworks (fixes rsync sandbox error)
+ Dir.glob('Pods/**/*.framework/_CodeSignature').each do |code_signature|
+ FileUtils.rm_rf(code_signature)
+ end
+ end
diff --git a/Podfile.lock b/Podfile.lock
index 0aa2fe8..0af36ec 100644
--- a/Podfile.lock
+++ b/Podfile.lock
@@ -1,26 +1,26 @@
PODS:
- - Contentstack (3.3.0)
- - Kingfisher (4.10.1)
- - NVActivityIndicatorView (4.4.1):
- - NVActivityIndicatorView/Presenter (= 4.4.1)
- - NVActivityIndicatorView/Presenter (4.4.1)
+ - Contentstack (3.15.0)
+ - Kingfisher (8.5.0)
+ - NVActivityIndicatorView (5.2.0):
+ - NVActivityIndicatorView/Base (= 5.2.0)
+ - NVActivityIndicatorView/Base (5.2.0)
DEPENDENCIES:
- - Contentstack
- - Kingfisher (~> 4.10.0)
- - NVActivityIndicatorView (~> 4.4.0)
+ - Contentstack (~> 3.15.0)
+ - Kingfisher (~> 8.5.0)
+ - NVActivityIndicatorView (~> 5.2.0)
SPEC REPOS:
- https://github.com/cocoapods/specs.git:
+ https://github.com/CocoaPods/Specs.git:
- Contentstack
- Kingfisher
- NVActivityIndicatorView
SPEC CHECKSUMS:
- Contentstack: 297c5cfd221d0463b8f86093682dcfb04fe14f79
- Kingfisher: c148cd7b47ebde9989f6bc7c27dcaa79d81279a0
- NVActivityIndicatorView: f0a6b0ed2973d9544da268f4eb76696f0a9577b0
+ Contentstack: 2f82e64408036f33d9b561e65cd5c359943362fa
+ Kingfisher: ff0d31a1f07bdff6a1ebb3ba08b8e6e567b6500c
+ NVActivityIndicatorView: fe52a6a68664c2df8991d7d9e3d86d8d19453c53
-PODFILE CHECKSUM: 841fe30c08174e6ed20c8ce8df27fb8bfe0ce183
+PODFILE CHECKSUM: b2454119c050e263e2a299a5738b04b422663bf7
-COCOAPODS: 1.6.0.rc.2
+COCOAPODS: 1.16.2
diff --git a/README.md b/README.md
index d1f5e97..6e2e3fd 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
**About this project**: Create an iOS news app using Contentstack iOS SDK.
-
+
## Tutorial
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..88da02e
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,27 @@
+# Security
+
+Contentstack takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations.
+
+If you believe you have found a security vulnerability in any Contentstack-owned repository, please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Send email to [security@contentstack.com](mailto:security@contentstack.com).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message.
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+- Full paths of source file(s) related to the manifestation of the issue
+- The location of the affected source code (tag/branch/commit or direct URL)
+- Any special configuration required to reproduce the issue
+- Step-by-step instructions to reproduce the issue
+- Proof-of-concept or exploit code (if possible)
+- Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+[https://www.contentstack.com/trust/](https://www.contentstack.com/trust/)
diff --git a/csnews.xcodeproj/project.pbxproj b/csnews.xcodeproj/project.pbxproj
index 0ebbfa3..cf361df 100644
--- a/csnews.xcodeproj/project.pbxproj
+++ b/csnews.xcodeproj/project.pbxproj
@@ -3,11 +3,10 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
- 020B4AF04BE8344AFEDFC850 /* Pods_csnews.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBD98A043B84E4C74322D7B2 /* Pods_csnews.framework */; };
230405CC1BA2FA2300CEE159 /* EmptySegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 230405CB1BA2FA2300CEE159 /* EmptySegue.swift */; };
230405CE1BA2FCF700CEE159 /* CategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 230405CD1BA2FCF700CEE159 /* CategoryController.swift */; };
231443E91BA321960040250B /* MSSlidingPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 231443E61BA321960040250B /* MSSlidingPanelController.m */; };
@@ -25,9 +24,11 @@
23CDAA2F1BCFA7380066A61A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 23CDAA311BCFA7380066A61A /* Localizable.strings */; };
23EB41DA1BA3448200600155 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EB41D91BA3448200600155 /* Extensions.swift */; };
23EB41DC1BA34BEA00600155 /* TopNewsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23EB41DB1BA34BEA00600155 /* TopNewsController.swift */; };
+ 9318C7FA2EE89CCDB2776A9E /* Pods_csnews.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 358C8114D43735C91EFCCC6C /* Pods_csnews.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
+ 176B4C7FB6C99113856AC22E /* Pods-csnews.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-csnews.debug.xcconfig"; path = "Target Support Files/Pods-csnews/Pods-csnews.debug.xcconfig"; sourceTree = ""; };
230405CB1BA2FA2300CEE159 /* EmptySegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmptySegue.swift; sourceTree = ""; };
230405CD1BA2FCF700CEE159 /* CategoryController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryController.swift; sourceTree = ""; };
231443E51BA321960040250B /* MSSlidingPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSSlidingPanelController.h; sourceTree = ""; };
@@ -54,11 +55,10 @@
23CDAA361BCFB96A0066A61A /* hi-IN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "hi-IN"; path = "hi-IN.lproj/Localizable.strings"; sourceTree = ""; };
23EB41D91BA3448200600155 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; };
23EB41DB1BA34BEA00600155 /* TopNewsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TopNewsController.swift; sourceTree = ""; };
+ 358C8114D43735C91EFCCC6C /* Pods_csnews.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_csnews.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3752A72C1C3ABB102F61B165 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 46F3CBEBAF0574A168CDA14B /* Pods-csnews.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-csnews.debug.xcconfig"; path = "Pods/Target Support Files/Pods-csnews/Pods-csnews.debug.xcconfig"; sourceTree = ""; };
- 90B379CA8D1D1CC158A49183 /* Pods-csnews.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-csnews.release.xcconfig"; path = "Pods/Target Support Files/Pods-csnews/Pods-csnews.release.xcconfig"; sourceTree = ""; };
+ 49AFDC7F1D59B26EE1E8E3DB /* Pods-csnews.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-csnews.release.xcconfig"; path = "Target Support Files/Pods-csnews/Pods-csnews.release.xcconfig"; sourceTree = ""; };
BB1B2DFCFB656C3EEFF758AF /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- DBD98A043B84E4C74322D7B2 /* Pods_csnews.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_csnews.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -69,7 +69,7 @@
236683671B94252300E22B59 /* MobileCoreServices.framework in Frameworks */,
236683651B94251C00E22B59 /* Security.framework in Frameworks */,
236683631B94250700E22B59 /* SystemConfiguration.framework in Frameworks */,
- 020B4AF04BE8344AFEDFC850 /* Pods_csnews.framework in Frameworks */,
+ 9318C7FA2EE89CCDB2776A9E /* Pods_csnews.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -121,7 +121,7 @@
2366833D1B94236000E22B59 /* csnews */,
2366833C1B94236000E22B59 /* Products */,
5C4D2E668126DE6FCF256AE9 /* Frameworks */,
- 26FC58103C60EEA0CF547E1E /* Pods */,
+ A42B63567521BA07A80D72A0 /* Pods */,
);
sourceTree = "";
};
@@ -185,26 +185,26 @@
236683661B94252300E22B59 /* MobileCoreServices.framework */,
236683641B94251C00E22B59 /* Security.framework */,
3752A72C1C3ABB102F61B165 /* Pods.framework */,
- DBD98A043B84E4C74322D7B2 /* Pods_csnews.framework */,
+ 358C8114D43735C91EFCCC6C /* Pods_csnews.framework */,
);
name = Frameworks;
sourceTree = "";
};
- 26FC58103C60EEA0CF547E1E /* Pods */ = {
+ 5C4D2E668126DE6FCF256AE9 /* Frameworks */ = {
isa = PBXGroup;
children = (
- 46F3CBEBAF0574A168CDA14B /* Pods-csnews.debug.xcconfig */,
- 90B379CA8D1D1CC158A49183 /* Pods-csnews.release.xcconfig */,
+ BB1B2DFCFB656C3EEFF758AF /* Pods.framework */,
);
- name = Pods;
+ name = Frameworks;
sourceTree = "";
};
- 5C4D2E668126DE6FCF256AE9 /* Frameworks */ = {
+ A42B63567521BA07A80D72A0 /* Pods */ = {
isa = PBXGroup;
children = (
- BB1B2DFCFB656C3EEFF758AF /* Pods.framework */,
+ 176B4C7FB6C99113856AC22E /* Pods-csnews.debug.xcconfig */,
+ 49AFDC7F1D59B26EE1E8E3DB /* Pods-csnews.release.xcconfig */,
);
- name = Frameworks;
+ path = Pods;
sourceTree = "";
};
/* End PBXGroup section */
@@ -214,11 +214,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 2366835A1B94236000E22B59 /* Build configuration list for PBXNativeTarget "csnews" */;
buildPhases = (
- 0CE87252EC002323889E502B /* [CP] Check Pods Manifest.lock */,
+ A6F573DBA6DEB45FA190CD5F /* [CP] Check Pods Manifest.lock */,
236683371B94235F00E22B59 /* Sources */,
236683381B94235F00E22B59 /* Frameworks */,
236683391B94235F00E22B59 /* Resources */,
- C68A18BA31E6D9E48A326BA0 /* [CP] Embed Pods Frameworks */,
+ 607FD467A9923BFDE1AA371F /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -235,9 +235,10 @@
236683331B94235F00E22B59 /* Project object */ = {
isa = PBXProject;
attributes = {
+ BuildIndependentTargetsInParallel = YES;
LastSwiftMigration = 0700;
LastSwiftUpdateCheck = 0700;
- LastUpgradeCheck = 0630;
+ LastUpgradeCheck = 1640;
ORGANIZATIONNAME = Reefaq;
TargetAttributes = {
2366833A1B94235F00E22B59 = {
@@ -248,7 +249,7 @@
};
buildConfigurationList = 236683361B94235F00E22B59 /* Build configuration list for PBXProject "csnews" */;
compatibilityVersion = "Xcode 3.2";
- developmentRegion = English;
+ developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
@@ -280,42 +281,48 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 0CE87252EC002323889E502B /* [CP] Check Pods Manifest.lock */ = {
+ 607FD467A9923BFDE1AA371F /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
+ "${PODS_ROOT}/Target Support Files/Pods-csnews/Pods-csnews-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/Contentstack/Contentstack.framework",
+ "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework",
+ "${BUILT_PRODUCTS_DIR}/NVActivityIndicatorView/NVActivityIndicatorView.framework",
);
- name = "[CP] Check Pods Manifest.lock";
+ name = "[CP] Embed Pods Frameworks";
outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-csnews-checkManifestLockResult.txt",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Contentstack.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NVActivityIndicatorView.framework",
);
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";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-csnews/Pods-csnews-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
- C68A18BA31E6D9E48A326BA0 /* [CP] Embed Pods Frameworks */ = {
+ A6F573DBA6DEB45FA190CD5F /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
+ inputFileListPaths = (
+ );
inputPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-csnews/Pods-csnews-frameworks.sh",
- "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework",
- "${BUILT_PRODUCTS_DIR}/NVActivityIndicatorView/NVActivityIndicatorView.framework",
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
);
- name = "[CP] Embed Pods Frameworks";
outputPaths = (
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework",
- "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NVActivityIndicatorView.framework",
+ "$(DERIVED_FILE_DIR)/Pods-csnews-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-csnews/Pods-csnews-frameworks.sh\"\n";
+ 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;
};
/* End PBXShellScriptBuildPhase section */
@@ -376,23 +383,37 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = 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_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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -408,7 +429,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.6;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "$(inherited)";
@@ -421,17 +442,29 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = 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_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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist";
@@ -439,6 +472,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -447,33 +481,35 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 8.3;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.6;
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = "$(inherited)";
SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
2366835B1B94236000E22B59 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 46F3CBEBAF0574A168CDA14B /* Pods-csnews.debug.xcconfig */;
+ baseConfigurationReference = 176B4C7FB6C99113856AC22E /* Pods-csnews.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist";
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ "FRAMEWORK_SEARCH_PATHS[arch=*]" = "$(inherited)";
+ INFOPLIST_FILE = csnews/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.6;
+ LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
- "$(PROJECT_DIR)/csnews",
+ "@executable_path/Frameworks",
);
- "FRAMEWORK_SEARCH_PATHS[arch=*]" = "$(inherited) $(PROJECT_DIR)/csnews";
- INFOPLIST_FILE = csnews/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 8.4;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
+ PRODUCT_BUNDLE_IDENTIFIER = "com.raweng.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = ./csnews/BridgeHeader.h;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
@@ -483,22 +519,23 @@
};
2366835C1B94236000E22B59 /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 90B379CA8D1D1CC158A49183 /* Pods-csnews.release.xcconfig */;
+ baseConfigurationReference = 49AFDC7F1D59B26EE1E8E3DB /* Pods-csnews.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_RESOURCE_RULES_PATH = "$(SDKROOT)/ResourceRules.plist";
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = csnews/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.6;
+ LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
- "$(PROJECT_DIR)/csnews",
+ "@executable_path/Frameworks",
);
- INFOPLIST_FILE = csnews/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 8.4;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
+ PRODUCT_BUNDLE_IDENTIFIER = "com.raweng.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = ./csnews/BridgeHeader.h;
SWIFT_SWIFT3_OBJC_INFERENCE = On;
diff --git a/csnews.xcodeproj/xcshareddata/xcschemes/csnews.xcscheme b/csnews.xcodeproj/xcshareddata/xcschemes/csnews.xcscheme
index 8ff5abc..b9b59d4 100644
--- a/csnews.xcodeproj/xcshareddata/xcschemes/csnews.xcscheme
+++ b/csnews.xcodeproj/xcshareddata/xcschemes/csnews.xcscheme
@@ -1,6 +1,6 @@
+ shouldUseLaunchSchemeArgsEnv = "YES">
+
+
+
+
@@ -53,24 +62,16 @@
-
-
-
-
@@ -82,14 +83,12 @@
ReferencedContainer = "container:csnews.xcodeproj">
-
-
diff --git a/csnews/Info.plist b/csnews/Info.plist
index 9a74002..0ac2893 100644
--- a/csnews/Info.plist
+++ b/csnews/Info.plist
@@ -9,7 +9,7 @@
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
- com.raweng.$(PRODUCT_NAME:rfc1034identifier)
+ $(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
CFBundleName
diff --git a/csnews/NewsCell.swift b/csnews/NewsCell.swift
index d09f6fc..a6a6a88 100644
--- a/csnews/NewsCell.swift
+++ b/csnews/NewsCell.swift
@@ -58,12 +58,15 @@ class NewsCell: UITableViewCell {
]
self.bannerImageView.contentMode = UIView.ContentMode.scaleAspectFill
self.bannerImageView.clipsToBounds = true
- let url = URL(string: AppDelegate.sharedSite().imageTransform(withUrl: imageURLString, andParams: param))!
- self.bannerImageView.kf.setImage(with: url,
- placeholder: nil,
- options: [.transition(.fade(1))],
- progressBlock: nil,
- completionHandler: nil)
+ if let stringParam = param as? [String: Any]{
+ let url = URL(string: AppDelegate.sharedSite().imageTransform(withUrl: imageURLString, andParams: stringParam))!
+ self.bannerImageView.kf.setImage(with: url,
+ placeholder: nil,
+ options: [.transition(.fade(1))],
+ progressBlock: nil,
+ completionHandler: nil)} else{
+ print("Error: param dictionary keys are not all Strings. Cannot generate image URL.")
+ }
}else{
self.bannerImageView.image = UIImage(named: "thumbImage");
}
diff --git a/csnews/NewsDetailController.swift b/csnews/NewsDetailController.swift
index ff2a05f..9738699 100644
--- a/csnews/NewsDetailController.swift
+++ b/csnews/NewsDetailController.swift
@@ -44,13 +44,17 @@ class NewsDetailController: UIViewController, UIWebViewDelegate {
AnyHashable("height"): self.bannerImageView.frame.size.height,
AnyHashable("fit"): "crop"
]
- let url = URL(string: AppDelegate.sharedSite().imageTransform(withUrl: imageURLString, andParams: param))!
-// let url = URL(string: imageURLString)!
- self.bannerImageView.kf.setImage(with: url,
- placeholder: nil,
- options: [.transition(.fade(1))],
- progressBlock: nil,
- completionHandler: nil)
+ if let stringParam = param as? [String: Any]{
+ let url = URL(string: AppDelegate.sharedSite().imageTransform(withUrl: imageURLString, andParams: stringParam))!
+ // let url = URL(string: imageURLString)!
+ self.bannerImageView.kf.setImage(with: url,
+ placeholder: nil,
+ options: [.transition(.fade(1))],
+ progressBlock: nil,
+ completionHandler: nil)}
+ else{
+ print("Error: param dictionary keys are not all Strings. Cannot generate image URL.")
+ }
}else{
self.bannerImageView.image = UIImage(named: "thumbImage");
}
diff --git a/csnews/TopNewsController.swift b/csnews/TopNewsController.swift
index 5a032d1..6de4c74 100644
--- a/csnews/TopNewsController.swift
+++ b/csnews/TopNewsController.swift
@@ -242,7 +242,7 @@ class TopNewsController: UIViewController, UITableViewDataSource, UITableViewDel
categories.enumerateObjects({ (obj, index, stop) -> Void in
var categoryUID:String = ""
let category:Entry = AppDelegate.sharedSite().contentType(withName: "category").entry(withUID: categoryUID)
- category.configure(with: obj as! [AnyHashable: Any])
+ category.configure(with: obj as! [String: Any])
categoryUID = category.uid
if(categoryUID == self.selectedCategoryUId){
retVal = true
@@ -294,13 +294,18 @@ class TopNewsController: UIViewController, UITableViewDataSource, UITableViewDel
AnyHashable("height"): self.bannerImage.frame.size.height,
AnyHashable("fit"): "crop"
]
- let url = URL(string: AppDelegate.sharedSite().imageTransform(withUrl: imageURLString, andParams: param))!
- self.bannerImage.kf.setImage(with: url,
- placeholder: nil,
- options: [.transition(.fade(1))],
- progressBlock: nil,
- completionHandler: nil)
- }else{
+ if let stringParam = param as? [String: Any] {
+ let url = URL(string: AppDelegate.sharedSite().imageTransform(withUrl: imageURLString, andParams: stringParam))!
+ self.bannerImage.kf.setImage(with: url,
+ placeholder: nil,
+ options: [.transition(.fade(1))],
+ progressBlock: nil,
+ completionHandler: nil)
+ } else{
+ print("Error: param dictionary keys are not all Strings. Cannot generate image URL.")
+ }
+
+ } else {
self.bannerImage.image = UIImage(named: "thumbImage");
}
}else {