Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .gitignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -80,5 +80,5 @@ Gemfile
#config file
Tests/config.json

snyk_output.json
talisman_output.json
snyk_output.log
talisman_output.log
3 changes: 3 additions & 0 deletions .talismanrc
Original file line numberDiff line numberDiff line change
Expand Up@@ -28,6 +28,9 @@ fileignoreconfig:
checksum: dfabf06aeff3576c9347e52b3c494635477d81c7d121d8f1435d79f28829f4d1
- filename: ContentstackSwift.xcodeproj/project.pbxproj
checksum: 8937f832171f26061a209adcd808683f7bdfb739e7fc49aecd853d5055466251
fileignoreconfig:
- filename: ContentstackSwift.xcodeproj/project.pbxproj
checksum: b743f609350e19c2a05a2081f3af3f723992b9610b3b3e6aa402792cad1de2c5
version: "1.0"


Expand Down
205 changes: 205 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
# CHANGELOG

## v2.2.0

### Date: 01-Sep-2025

- Async/await support added

## v2.1.0

### Date: 06-Jun-2025

- ✅ SSL pinning implementation
- 🔧 Added support for Global Fields
- 🔄 Workflow fixes
- ⚙️ Updated `.talismanrc` to version 1.0

---

## v2.0.1

### Date: 13-May-2025

- 🔧 Minor internal fixes
- ✅ Updated testing support
- ⚠️ Note: Versions `v1.6.2` and `v2.0.0` are not recommended due to stability concerns.
Please use `v2.0.1` or later.

---

## v2.0.0

### Date: 12-May-2025

- 🧹 Removed unused workspace configuration file
- 📦 DX Release

---

## v1.6.2

### Date: 07-Feb-2025

- 📦 Dependencies updated
- 🔄 Workflow fixes
- ✅ Updated test cases

---

## v1.6.1

### Date: 07-Oct-2024

- ✨ Added Early Access Header Support

---

## v1.6.0

### Date: 23-Aug-2024

- 🌿 Added support for taxonomy

---

## v1.5.3

### Date: 17-May-2024

- 🌐 Added GCP support
- 🛡️ Added privacy manifest file

---

## v1.5.2

### Date: 21-Mar-2024

- 🔧 Fixed issues while switching stacks

---

## v1.5.1

### Date: 02-Aug-2023

- 🐞 Resolved URLCache issue

---

## v1.5.0

### Date: 26-May-2023

- 🌍 Added Azure-EU region in `ContentstackRegion`
- ➕ Included metadata in:

- `AssetQuery` class
- `EntryQueriable` class
- 🧰 Fixed image transform initialization issue

---

## v1.4.0

### Date: 09-Mar-2023

- ➕ Added header support in:
- `Entry`
- `Asset`
- `Query`

---

## v1.3.1

### Date: 11-Nov-2022

- 🛠️ Resolved URL session default cache issue

---

## v1.3.0

### Date: 18-Aug-2022

- 🌐 Added Azure-NA region in `ContentstackRegion`
- 🔐 Security details added

---

## v1.2.6

### Date: 10-Aug-2021

- 📦 Updated Utils SDK package

---

## v1.2.5

### Date: 16-Jul-2021

- 📝 Added JSON RTE feature support
- 📦 Updated Util SDK version

---

## v1.2.4

### Date: 09-Apr-2021

- 📦 Added CocoaPods dependency

---

## v1.2.3

### Date: 09-Apr-2021

- ➕ Added Utils SDK function support

---

## v1.2.2

### Date: 06-Apr-2021

- 🛠️ Resolved CocoaPods issue
- ➖ Removed unnecessary dependency

---

## v1.2.1

### Date: 06-Apr-2021

- 📁 Project file updated

---

## v1.2.0

### Date: 06-Apr-2021

- ➕ Added embedded items feature:
-`includeEmbeddedItems` in Entry and Query modules
- 📦 Added Utils SDK support

---

## v1.1.0

### Date: 05-Dec-2020

- 🔄 Added content fallback support in:
- `Asset`, `AssetLibrary`, `Entry`, `Query` modules

---

## v1.0.0

### Date: 11-May-2020

- 🚀 Initial release
8 changes: 8 additions & 0 deletions ContentstackSwift.xcodeproj/project.pbxproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -265,6 +265,9 @@
47C6EFC52C0B5B9400F0D5CF /* Taxonomy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */; };
47D561512C9EF97D00DC085D /* ContentstackUtils in Frameworks */ = {isa = PBXBuildFile; productRef = 47D561502C9EF97D00DC085D /* ContentstackUtils */; };
47D561572C9EFA5900DC085D /* DVR in Frameworks */ = {isa = PBXBuildFile; productRef = 47D561562C9EFA5900DC085D /* DVR */; };
672F76992E55ADBE00C248D6 /* AsyncAwaitAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672F76982E55ADBE00C248D6 /* AsyncAwaitAPITest.swift */; };
672F769A2E55ADBE00C248D6 /* AsyncAwaitAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672F76982E55ADBE00C248D6 /* AsyncAwaitAPITest.swift */; };
672F769B2E55ADBE00C248D6 /* AsyncAwaitAPITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672F76982E55ADBE00C248D6 /* AsyncAwaitAPITest.swift */; };
6750778E2D3E256A0076A066 /* DVR in Frameworks */ = {isa = PBXBuildFile; productRef = 6750778D2D3E256A0076A066 /* DVR */; };
67EE21DF2DDB4013005AC119 /* CSURLSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67EE21DE2DDB3FFE005AC119 /* CSURLSessionDelegate.swift */; };
67EE21E02DDB4013005AC119 /* CSURLSessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67EE21DE2DDB3FFE005AC119 /* CSURLSessionDelegate.swift */; };
Expand DownExpand Up@@ -416,6 +419,7 @@
47B09C242CA952E400B8AB41 /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; };
47B4DC612C232A8200370CFC /* TaxonomyTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaxonomyTest.swift; sourceTree = "<group>"; };
47C6EFC12C0B5B9400F0D5CF /* Taxonomy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Taxonomy.swift; sourceTree = "<group>"; };
672F76982E55ADBE00C248D6 /* AsyncAwaitAPITest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncAwaitAPITest.swift; sourceTree = "<group>"; };
67EE21DE2DDB3FFE005AC119 /* CSURLSessionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CSURLSessionDelegate.swift; sourceTree = "<group>"; };
67EE222B2DE4868F005AC119 /* GlobalField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalField.swift; sourceTree = "<group>"; };
67EE22302DE58B51005AC119 /* GlobalFieldModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalFieldModel.swift; sourceTree = "<group>"; };
Expand DownExpand Up@@ -666,6 +670,7 @@
0FFA5D9D241F8F9B003B3AF5 /* APITests */ = {
isa = PBXGroup;
children = (
672F76982E55ADBE00C248D6 /* AsyncAwaitAPITest.swift */,
67EE22352DE5BAF2005AC119 /* GlobalFieldAPITest.swift */,
0F50EA1C244ED88C00E5D705 /* StackCacheAPITest.swift */,
470657532B5E785C00BBFF88 /* ContentTypeQueryAPITest.swift */,
Expand DownExpand Up@@ -1146,6 +1151,7 @@
47B4DC622C232A8200370CFC /* TaxonomyTest.swift in Sources */,
0F50EA1D244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */,
470657582B5E788400BBFF88 /* EntryAPITest.swift in Sources */,
672F76992E55ADBE00C248D6 /* AsyncAwaitAPITest.swift in Sources */,
0F096B14243610470094F042 /* ImageTransformTestAdditional.swift in Sources */,
0FD39D4A24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */,
0FFBB44C24470C43000D2795 /* ContentStackLogTest.swift in Sources */,
Expand DownExpand Up@@ -1228,6 +1234,7 @@
47B4DC632C232A8200370CFC /* TaxonomyTest.swift in Sources */,
0FFA5D90241F8126003B3AF5 /* ContentstackConfigTest.swift in Sources */,
0F50EA1E244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */,
672F769B2E55ADBE00C248D6 /* AsyncAwaitAPITest.swift in Sources */,
0F096B15243610470094F042 /* ImageTransformTestAdditional.swift in Sources */,
0FD39D4B24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */,
0FFBB44D24470C43000D2795 /* ContentStackLogTest.swift in Sources */,
Expand DownExpand Up@@ -1310,6 +1317,7 @@
47B4DC642C232A8200370CFC /* TaxonomyTest.swift in Sources */,
0FFA5D91241F8127003B3AF5 /* ContentstackConfigTest.swift in Sources */,
0F50EA1F244ED88C00E5D705 /* StackCacheAPITest.swift in Sources */,
672F769A2E55ADBE00C248D6 /* AsyncAwaitAPITest.swift in Sources */,
0F096B16243610470094F042 /* ImageTransformTestAdditional.swift in Sources */,
0FD39D4C24237A0400E34826 /* ContentTypeQueryTest.swift in Sources */,
0FFBB44E24470C43000D2795 /* ContentStackLogTest.swift in Sources */,
Expand Down
23 changes: 23 additions & 0 deletions Sources/Asset.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -246,4 +246,27 @@ extension Asset: ResourceQueryable {
}
})
}

// MARK: - Async/Await Implementation

/// Async version of fetch that returns the Asset directly
/// - Returns: The fetched Asset
/// - Throws: Network, decoding, or cache errors
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
public func fetch<ResourceType>() async throws -> ResourceType
where ResourceType: EndpointAccessible & Decodable {
guard let uid = self.uid else { fatalError("Please provide Asset uid") }
let response: ContentstackResponse<ResourceType> = try await self.stack.fetch(
endpoint: ResourceType.endpoint,
cachePolicy: self.cachePolicy,
parameters: parameters + [QueryParameter.uid: uid],
headers: headers
)

if let resource = response.items.first {
return resource
} else {
throw SDKError.invalidUID(string: uid)
}
}
}
23 changes: 23 additions & 0 deletions Sources/ContentType.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,4 +178,27 @@ extension ContentType: ResourceQueryable {
}
})
}

// MARK: - Async/Await Implementation

/// Async version of fetch that returns the ContentType directly
/// - Returns: The fetched ContentType
/// - Throws: Network, decoding, or cache errors
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
public func fetch<ResourceType>() async throws -> ResourceType
where ResourceType: EndpointAccessible & Decodable {
guard let uid = self.uid else { fatalError("Please provide ContentType uid") }
let response: ContentstackResponse<ResourceType> = try await self.stack.fetch(
endpoint: ResourceType.endpoint,
cachePolicy: self.cachePolicy,
parameters: parameters + [QueryParameter.uid: uid],
headers: headers
)

if let resource = response.items.first {
return resource
} else {
throw SDKError.invalidUID(string: uid)
}
}
}
24 changes: 24 additions & 0 deletions Sources/Entry.swift
Original file line numberDiff line numberDiff line change
Expand Up@@ -175,4 +175,28 @@ extension Entry: ResourceQueryable {
}
})
}

// MARK: - Async/Await Implementation

/// Async version of fetch that returns the Entry directly
/// - Returns: The fetched Entry
/// - Throws: Network, decoding, or cache errors
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *)
public func fetch<ResourceType>() async throws -> ResourceType
where ResourceType: EndpointAccessible & Decodable {
guard let uid = self.uid else { fatalError("Please provide Entry uid") }
let response: ContentstackResponse<ResourceType> = try await self.stack.fetch(
endpoint: ResourceType.endpoint,
cachePolicy: self.cachePolicy,
parameters: parameters + [QueryParameter.uid: uid,
QueryParameter.contentType: self.contentType.uid!],
headers: headers
)

if let resource = response.items.first {
return resource
} else {
throw SDKError.invalidUID(string: uid)
}
}
}
Loading
Loading