diff --git a/.gitignore b/.gitignore
index 2cf10f33..f849ab14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,7 +38,7 @@ playground.xcworkspace
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
# Package.pins
-# Package.resolved
+Package.resolved
.build/
.swiftpm/
diff --git a/AzureSDK.xcworkspace/xcshareddata/xcschemes/all.xcscheme b/AzureSDK.xcworkspace/xcshareddata/xcschemes/all.xcscheme
index dc302d40..c2bb956e 100644
--- a/AzureSDK.xcworkspace/xcshareddata/xcschemes/all.xcscheme
+++ b/AzureSDK.xcworkspace/xcshareddata/xcschemes/all.xcscheme
@@ -42,10 +42,10 @@
buildForAnalyzing = "YES">
+ BlueprintIdentifier = "0A3A5EB72316DB1E00473FDA"
+ BuildableName = "AzureCommunication.framework"
+ BlueprintName = "AzureCommunication"
+ ReferencedContainer = "container:sdk/communication/AzureCommunication/AzureCommunication.xcodeproj">
+ BlueprintIdentifier = "0A686488233E834D004B7E17"
+ BuildableName = "AzureStorageBlob.framework"
+ BlueprintName = "AzureStorageBlob"
+ ReferencedContainer = "container:sdk/storage/AzureStorageBlob/AzureStorageBlob.xcodeproj">
+
+
+
+
+
+
+
+
+
+
+
+
+ BlueprintIdentifier = "0A3A5EC02316DB1E00473FDA"
+ BuildableName = "AzureCommunicationTests.xctest"
+ BlueprintName = "AzureCommunicationTests"
+ ReferencedContainer = "container:sdk/communication/AzureCommunication/AzureCommunication.xcodeproj">
+ BlueprintIdentifier = "D1B7EAEC257F02FC004F384A"
+ BuildableName = "AzureCommunicationChatTests.xctest"
+ BlueprintName = "AzureCommunicationChatTests"
+ ReferencedContainer = "container:sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj">
+
+
+
+
+
+
+
+
diff --git a/AzureSDK.xcworkspace/xcshareddata/xcschemes/sdk.xcscheme b/AzureSDK.xcworkspace/xcshareddata/xcschemes/sdk.xcscheme
index dde77baf..4de420b4 100644
--- a/AzureSDK.xcworkspace/xcshareddata/xcschemes/sdk.xcscheme
+++ b/AzureSDK.xcworkspace/xcshareddata/xcschemes/sdk.xcscheme
@@ -157,6 +157,28 @@
ReferencedContainer = "container:sdk/communication/AzureCommunication/AzureCommunication.xcodeproj">
+
+
+
+
+
+
+
+
/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;
+ };
+ DED08D1BF86630CC5BACF415 /* [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-AzureCommunicationTests-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;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -305,9 +380,10 @@
1DE4DB7724C0FE8300631921 /* AutoRefreshTokenCredential.swift in Sources */,
F1540EBD25BF893C0056B087 /* CommunicationCloudEnvironment.swift in Sources */,
882F28D425A632CA009689E3 /* CommunicationTokenRefreshOptions.swift in Sources */,
- F183A5FC24AFEF1400F0E0D5 /* CommunicationTokenCredential.swift in Sources */,
- 7AAE2D17251444B600C9F897 /* CommunicationAuthenticationPolicy.swift in Sources */,
+ 7AAE2D17251444B600C9F897 /* CommunicationPolicyTokenCredential.swift in Sources */,
F183A5FE24AFF1B100F0E0D5 /* JwtTokenParser.swift in Sources */,
+ D112634825B7969B00F437C6 /* (null) in Sources */,
+ D1A42CF825CCA1C100408C0F /* CommunicationTokenCredential.swift in Sources */,
F183A5FA24AFB37900F0E0D5 /* StaticTokenCredential.swift in Sources */,
F1540E9625BF83D80056B087 /* Enumerations.swift in Sources */,
F1540E9725BF83D80056B087 /* CommunicationIdentifierModel.swift in Sources */,
@@ -324,6 +400,7 @@
F1540EC125BFD6910056B087 /* CommunicationIdentifierTest.swift in Sources */,
1D07222D24C8FB0F00C2EF4E /* CommunicationTokenCredentialTests.swift in Sources */,
88CC8C35254750260028977C /* ObjCCommunicationTokenCredentialAsyncTests.m in Sources */,
+ 883AEDB825AF623000E21497 /* CommunicationPolicyTokenCredentialTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -464,6 +541,7 @@
};
0A3A5ECD2316DB1E00473FDA /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 73DFF8D8D93685E64E46AD1B /* Pods-AzureCommunication.debug.xcconfig */;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = NO;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
@@ -493,6 +571,7 @@
};
0A3A5ECE2316DB1E00473FDA /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 316382976240347BE77E907F /* Pods-AzureCommunication.release.xcconfig */;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = NO;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
@@ -521,6 +600,7 @@
};
0A3A5ED02316DB1E00473FDA /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = C7FEC671B55120C7AFDF3B62 /* Pods-AzureCommunicationTests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ENABLE_MODULES = YES;
@@ -541,6 +621,7 @@
};
0A3A5ED12316DB1E00473FDA /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = E5E66C937B734ADA8532CFC3 /* Pods-AzureCommunicationTests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CLANG_ENABLE_MODULES = YES;
diff --git a/sdk/communication/AzureCommunication/README.md b/sdk/communication/AzureCommunication/README.md
index 5093b31c..cd65a913 100644
--- a/sdk/communication/AzureCommunication/README.md
+++ b/sdk/communication/AzureCommunication/README.md
@@ -101,14 +101,14 @@ $ pod install
## Key concepts
-### CommunicationUserCredential
-A `CommunicationUserCredential` authenticates a user with Communication Services, such as Chat or Calling. It optionally
+### CommunicationTokenCredential
+A `CommunicationTokenCredential` authenticates a user with Communication Services, such as Chat or Calling. It optionally
provides an auto-refresh mechanism to ensure a continuously stable authentication state during communications. User
tokens are created by the application developer using the Communication Administration SDK - once created, they are
-provided to the various Communication Services client libraries by way of a `CommunicationUserCredential` object.
+provided to the various Communication Services client libraries by way of a `CommunicationTokenCredential` object.
## Examples
-The following sections provide several code snippets showing different ways to use a `CommunicationUserCredential`:
+The following sections provide several code snippets showing different ways to use a `CommunicationTokenCredential`:
* [Creating a credential with a static token](#creating-a-credential-with-a-static-token)
* [Creating a credential that refreshes synchronously](#creating-a-credential-that-refreshes-synchronously)
@@ -117,7 +117,7 @@ The following sections provide several code snippets showing different ways to u
### Creating a credential with a static token
```swift
let sampleToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjMyNTAzNjgwMDAwfQ.9i7FNNHHJT8cOzo-yrAUJyBSfJ-tPPk2emcHavOEpWc"
-let userCredential = try CommunicationUserCredential(token: sampleToken)
+let credential = try CommunicationTokenCredential(token: sampleToken)
```
### Creating a credential that refreshes synchronously
@@ -130,12 +130,12 @@ func fetchTokenSync(completionHandler: TokenRefreshOnCompletion) {
completionHandler(newToken, nil)
}
-let userCredential = try CommunicationUserCredential(initialToken: sampleExpiredToken,
+let credential = try CommunicationTokenCredential(initialToken: sampleExpiredToken,
refreshProactively: false,
tokenRefresher: fetchTokenSync)
DispatchQueue.global(qos: .utility).async {
- userCredential.token { (accessToken: AccessToken?, error: Error?) in
+ credential.token { (accessToken: AccessToken?, error: Error?) in
...
}
}
@@ -156,12 +156,12 @@ func fetchTokenAsync(completionHandler: @escaping TokenRefreshOnCompletion) {
}
}
-let userCredential = try CommunicationUserCredential(initialToken: sampleExpiredToken,
+let credential = try CommunicationTokenCredential(initialToken: sampleExpiredToken,
refreshProactively: false,
tokenRefresher: fetchTokenAsync)
DispatchQueue.global(qos: .utility).async {
- userCredential.token { (accessToken: AccessToken?, error: Error?) in
+ credential.token { (accessToken: AccessToken?, error: Error?) in
...
}
}
diff --git a/sdk/communication/AzureCommunication/Source/Authentication/CommunicationAuthenticationPolicy.swift b/sdk/communication/AzureCommunication/Source/Authentication/CommunicationPolicyTokenCredential.swift
similarity index 52%
rename from sdk/communication/AzureCommunication/Source/Authentication/CommunicationAuthenticationPolicy.swift
rename to sdk/communication/AzureCommunication/Source/Authentication/CommunicationPolicyTokenCredential.swift
index 2b80ebe5..a51ec1f1 100644
--- a/sdk/communication/AzureCommunication/Source/Authentication/CommunicationAuthenticationPolicy.swift
+++ b/sdk/communication/AzureCommunication/Source/Authentication/CommunicationPolicyTokenCredential.swift
@@ -29,44 +29,47 @@ import AzureCore
#endif
import Foundation
/**
- The Azure Communication Services authentication policy.
+ The Azure Communication Services token credential used to authenticate pipeline requests.
*/
-public class CommunicationTokenCredentialPolicy: Authenticating {
- public var next: PipelineStage?
-
+public class CommunicationPolicyTokenCredential: TokenCredential {
private let credential: CommunicationTokenCredential
-
+ var error: AzureError? = nil
/**
- Creates a credential policy that authenticates requests using the provided `CommunicationTokenCredential`.
+ Creates a token credential that authenticates requests using the provided `CommunicationTokenCredential`.
- - Parameter credential: The `CommunicationTokenCredential` that will be used to authenticate requests.
-
- - SeeAlso: `CommunicationTokenCredential.init(...)`
+ - Parameter credential: The token credential to authenticate with.
*/
- public init(credential: CommunicationTokenCredential) {
+ public init(_ credential: CommunicationTokenCredential) {
self.credential = credential
}
-
/**
- Authenticates an HTTP `PipelineRequest` with a token retrieved from the credential.
+ Retrieve a token for the provided scope.
+
- Parameters:
- - request:A `PipelineRequest` object.
- - completionHandler: A completion handler that forwards the modified pipeline request.
+ - scopes: A list of a scope strings for which to retrieve the token.
+ - completionHandler: A completion handler which forwards the access token.
*/
- public func authenticate(request: PipelineRequest, completionHandler: @escaping OnRequestCompletionHandler) {
- credential.token { token, error in
- if let error = error {
- completionHandler(request, AzureError.client("Error while retrieving access token", error))
+ public func token(forScopes scopes: [String], completionHandler: @escaping TokenCompletionHandler) {
+ credential.token { (communicationAccessToken, error) in
+ guard let communicationAccessToken = communicationAccessToken else {
+ self.error = AzureError.client("Communication Token Failure", error)
+ completionHandler(nil, self.error)
return
}
-
- guard let token = token?.token else {
- completionHandler(request, AzureError.client("Token cannot be empty"))
- return
- }
-
- request.httpRequest.headers[.authorization] = "Bearer \(token)"
- completionHandler(request, nil)
+
+ let accessToken = AccessToken(token: communicationAccessToken.token,
+ expiresOn: communicationAccessToken.expiresOn)
+
+ completionHandler(accessToken, nil)
+ }
+ }
+ /**
+ Validates throws an error if token creating had any errors
+ - Throws: Azure error with the error from the get token call.
+ */
+ public func validate() throws {
+ if let error = error {
+ throw error
}
}
}
diff --git a/sdk/communication/AzureCommunication/Source/Authentication/CommunicationTokenRefreshOptions.swift b/sdk/communication/AzureCommunication/Source/Authentication/CommunicationTokenRefreshOptions.swift
index 64febb7f..2ccd15dc 100644
--- a/sdk/communication/AzureCommunication/Source/Authentication/CommunicationTokenRefreshOptions.swift
+++ b/sdk/communication/AzureCommunication/Source/Authentication/CommunicationTokenRefreshOptions.swift
@@ -28,8 +28,8 @@ import Foundation
public typealias TokenRefresherClosure = (@escaping TokenRefreshOnCompletion) -> Void
/**
- The Communication Token Refresh Options. Used to initialize a `CommunicationUserCredential`
- - SeeAlso: ` CommunicationUserCredential.init(...)`
+ The Communication Token Refresh Options. Used to initialize a `CommunicationTokenCredential`
+ - SeeAlso: ` CommunicationTokenCredential.token(...)`
*/
@objcMembers public class CommunicationTokenRefreshOptions: NSObject {
var initialToken: String?
diff --git a/sdk/communication/AzureCommunication/Tests/CommunicationPolicyTokenCredentialTests.swift b/sdk/communication/AzureCommunication/Tests/CommunicationPolicyTokenCredentialTests.swift
new file mode 100644
index 00000000..5e29a8ea
--- /dev/null
+++ b/sdk/communication/AzureCommunication/Tests/CommunicationPolicyTokenCredentialTests.swift
@@ -0,0 +1,148 @@
+// --------------------------------------------------------------------------
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// The MIT License (MIT)
+//
+// 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.
+//
+// --------------------------------------------------------------------------
+
+import XCTest
+
+#if canImport(AzureCommunication)
+@testable import AzureCommunication
+#endif
+#if canImport(AzureCore)
+@testable import AzureCore
+#endif
+
+class CommunicationPolicyTokenCredentialTests: XCTestCase {
+ let sampleToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjMyNTAzNjgwMDAwfQ.9i7FNNHHJT8cOzo-yrAUJyBSfJ-tPPk2emcHavOEpWc"
+ let aampleTokenExpiry = 32503680000
+ let expiredToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEwMH0.1h_scYkNp-G98-O4cW6KvfJZwiz54uJMyeDACE4nypg"
+
+ func fetchTokenSync(completionHandler: TokenRefreshOnCompletion) {
+ let newToken = sampleToken
+ completionHandler(newToken, nil)
+ }
+
+ func testCreateStaticToken() throws {
+ let expectation = self.expectation(description: "Create static token")
+
+ let token = expiredToken
+ let userCredential = try CommunicationTokenCredential(token: token)
+ let communicationTokenPolicy = CommunicationPolicyTokenCredential(userCredential)
+ communicationTokenPolicy.token(forScopes: [""]) { (accessToken, error) in
+ XCTAssertNil(error)
+ XCTAssertNotNil(accessToken)
+ expectation.fulfill()
+ }
+
+ waitForExpectations(timeout: 1000) { (error) in
+ if let error = error {
+ XCTFail("Create token timed out: \(error)")
+ }
+ }
+ }
+
+ func testCreateRefreshableWithoutInitialToken() throws {
+ let expectation = self.expectation(description: "Create refreshable without initial token")
+ let options = CommunicationTokenRefreshOptions(
+ refreshProactively: true,
+ tokenRefresher: fetchTokenSync
+ )
+ let userCredential = try CommunicationTokenCredential(with: options)
+ let communicationTokenPolicy = CommunicationPolicyTokenCredential(userCredential)
+
+ communicationTokenPolicy.token(forScopes: [""]) { (accessToken, error) in
+ XCTAssertNil(error)
+ XCTAssertNotNil(accessToken)
+ expectation.fulfill()
+ }
+
+ waitForExpectations(timeout: 1000) { (error) in
+ if let error = error {
+ XCTFail("Create token timed out: \(error)")
+ }
+ }
+ }
+
+ func testCreateRefreshableWithInitialToken() throws {
+ let expectation = self.expectation(description: "Create refreshable with initial token")
+ let token = expiredToken
+ let options = CommunicationTokenRefreshOptions(
+ initialToken: token,
+ refreshProactively: true,
+ tokenRefresher: fetchTokenSync
+ )
+ let userCredential = try CommunicationTokenCredential(with: options)
+ let communicationTokenPolicy = CommunicationPolicyTokenCredential(userCredential)
+
+ communicationTokenPolicy.token(forScopes: [""]) { (accessToken, error) in
+ XCTAssertNil(error)
+ XCTAssertNotNil(accessToken)
+ expectation.fulfill()
+ }
+
+ waitForExpectations(timeout: 1000) { (error) in
+ if let error = error {
+ XCTFail("Create token timed out: \(error)")
+ }
+ }
+ }
+
+ func testDecodesToken() throws {
+ let expectation = self.expectation(description: "Decode access token")
+ let initialToken = sampleToken
+ let userCredential = try CommunicationTokenCredential(token: initialToken)
+ let communicationTokenPolicy = CommunicationPolicyTokenCredential(userCredential)
+
+ communicationTokenPolicy.token(forScopes: [""]) { (accessToken, error) in
+ XCTAssertEqual(accessToken?.token, initialToken)
+ XCTAssertEqual(accessToken?.expiresOn, accessToken?.expiresOn)
+ expectation.fulfill()
+ }
+
+ waitForExpectations(timeout: 1000) { (error) in
+ if let error = error {
+ XCTFail("Create token timed out: \(error)")
+ }
+ }
+ }
+
+ func testStaticTokenReturnsExpiredToken() throws {
+ let expectation = self.expectation(description: "Static token is expired")
+ let initialToken = expiredToken
+ let userCredential = try CommunicationTokenCredential(token: initialToken)
+ let communicationTokenPolicy = CommunicationPolicyTokenCredential(userCredential)
+
+ communicationTokenPolicy.token(forScopes: [""]) { [weak self] (accessToken, error) in
+ guard let self = self else { return }
+ XCTAssertEqual(self.expiredToken, accessToken?.token)
+ expectation.fulfill()
+ }
+
+ waitForExpectations(timeout: 1000) { (error) in
+ if let error = error {
+ XCTFail("Create token timed out: \(error)")
+ }
+ }
+ }
+}
diff --git a/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/project.pbxproj b/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/project.pbxproj
index a3dd3916..24b179e3 100644
--- a/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/project.pbxproj
+++ b/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/project.pbxproj
@@ -3,276 +3,441 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 52;
objects = {
/* Begin PBXBuildFile section */
- 0A47454A2583FDF600CA86E5 /* AzureCommunicationChatClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47451D2583FDF600CA86E5 /* AzureCommunicationChatClient.swift */; };
- 0A47454B2583FDF600CA86E5 /* AzureCommunicationChatService+CreateChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47451F2583FDF600CA86E5 /* AzureCommunicationChatService+CreateChatThreadOptions.swift */; };
- 0A47454C2583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745202583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatMessageOptions.swift */; };
- 0A47454D2583FDF600CA86E5 /* AzureCommunicationChatClientOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745212583FDF600CA86E5 /* AzureCommunicationChatClientOptions.swift */; };
- 0A47454E2583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadsOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745222583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadsOptions.swift */; };
- 0A47454F2583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745232583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatThreadOptions.swift */; };
- 0A4745502583FDF600CA86E5 /* AzureCommunicationChatService+SendChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745242583FDF600CA86E5 /* AzureCommunicationChatService+SendChatMessageOptions.swift */; };
- 0A4745512583FDF600CA86E5 /* AzureCommunicationChatService+GetChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745252583FDF600CA86E5 /* AzureCommunicationChatService+GetChatThreadOptions.swift */; };
- 0A4745522583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745262583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatThreadOptions.swift */; };
- 0A4745532583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745272583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatMessageOptions.swift */; };
- 0A4745542583FDF600CA86E5 /* AzureCommunicationChatService+ListChatMessagesOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745282583FDF600CA86E5 /* AzureCommunicationChatService+ListChatMessagesOptions.swift */; };
- 0A4745552583FDF600CA86E5 /* AzureCommunicationChatService+ListChatReadReceiptsOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745292583FDF600CA86E5 /* AzureCommunicationChatService+ListChatReadReceiptsOptions.swift */; };
- 0A4745562583FDF600CA86E5 /* AzureCommunicationChatService+AddChatThreadMembersOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47452A2583FDF600CA86E5 /* AzureCommunicationChatService+AddChatThreadMembersOptions.swift */; };
- 0A4745572583FDF600CA86E5 /* AzureCommunicationChatService+GetChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47452B2583FDF600CA86E5 /* AzureCommunicationChatService+GetChatMessageOptions.swift */; };
- 0A4745582583FDF700CA86E5 /* AzureCommunicationChatService+ListChatThreadMembersOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47452C2583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadMembersOptions.swift */; };
- 0A4745592583FDF700CA86E5 /* AzureCommunicationChatService+SendChatReadReceiptOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47452D2583FDF600CA86E5 /* AzureCommunicationChatService+SendChatReadReceiptOptions.swift */; };
- 0A47455A2583FDF700CA86E5 /* AzureCommunicationChatService+SendTypingNotificationOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47452E2583FDF600CA86E5 /* AzureCommunicationChatService+SendTypingNotificationOptions.swift */; };
- 0A47455B2583FDF700CA86E5 /* AzureCommunicationChatService+RemoveChatThreadMemberOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47452F2583FDF600CA86E5 /* AzureCommunicationChatService+RemoveChatThreadMemberOptions.swift */; };
- 0A47455C2583FDF700CA86E5 /* PatchUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745312583FDF600CA86E5 /* PatchUtil.swift */; };
- 0A47455D2583FDF700CA86E5 /* SendChatMessageRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745332583FDF600CA86E5 /* SendChatMessageRequest.swift */; };
- 0A47455E2583FDF700CA86E5 /* MultiStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745342583FDF600CA86E5 /* MultiStatusResponse.swift */; };
- 0A47455F2583FDF700CA86E5 /* UpdateChatThreadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745352583FDF600CA86E5 /* UpdateChatThreadRequest.swift */; };
- 0A4745602583FDF700CA86E5 /* ChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745362583FDF600CA86E5 /* ChatMessage.swift */; };
- 0A4745612583FDF700CA86E5 /* ChatMessagesCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745372583FDF600CA86E5 /* ChatMessagesCollection.swift */; };
- 0A4745622583FDF700CA86E5 /* CreateChatThreadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745382583FDF600CA86E5 /* CreateChatThreadRequest.swift */; };
- 0A4745632583FDF700CA86E5 /* AddChatThreadMembersRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745392583FDF600CA86E5 /* AddChatThreadMembersRequest.swift */; };
- 0A4745642583FDF700CA86E5 /* ReadReceipt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47453A2583FDF600CA86E5 /* ReadReceipt.swift */; };
- 0A4745652583FDF700CA86E5 /* Enumerations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47453B2583FDF600CA86E5 /* Enumerations.swift */; };
- 0A4745662583FDF700CA86E5 /* IndividualStatusResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47453C2583FDF600CA86E5 /* IndividualStatusResponse.swift */; };
- 0A4745672583FDF700CA86E5 /* ChatThreadsInfoCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47453D2583FDF600CA86E5 /* ChatThreadsInfoCollection.swift */; };
- 0A4745682583FDF700CA86E5 /* ChatThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47453E2583FDF600CA86E5 /* ChatThread.swift */; };
- 0A4745692583FDF700CA86E5 /* UpdateChatMessageRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A47453F2583FDF600CA86E5 /* UpdateChatMessageRequest.swift */; };
- 0A47456A2583FDF700CA86E5 /* SendReadReceiptRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745402583FDF600CA86E5 /* SendReadReceiptRequest.swift */; };
- 0A47456B2583FDF700CA86E5 /* ChatThreadMember.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745412583FDF600CA86E5 /* ChatThreadMember.swift */; };
- 0A47456C2583FDF700CA86E5 /* ErrorType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745422583FDF600CA86E5 /* ErrorType.swift */; };
- 0A47456D2583FDF700CA86E5 /* ChatThreadInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745432583FDF600CA86E5 /* ChatThreadInfo.swift */; };
- 0A47456E2583FDF700CA86E5 /* SendChatMessageResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745442583FDF600CA86E5 /* SendChatMessageResult.swift */; };
- 0A47456F2583FDF700CA86E5 /* ReadReceiptsCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745452583FDF600CA86E5 /* ReadReceiptsCollection.swift */; };
- 0A4745702583FDF700CA86E5 /* ChatThreadMembersCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745462583FDF600CA86E5 /* ChatThreadMembersCollection.swift */; };
- 0A4745712583FDF700CA86E5 /* AzureCommunicationChatService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745472583FDF600CA86E5 /* AzureCommunicationChatService.swift */; };
- 0A4745722583FDF700CA86E5 /* AzureCommuncationChatClient+Convenience.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745482583FDF600CA86E5 /* AzureCommuncationChatClient+Convenience.swift */; };
- 0A4745732583FDF700CA86E5 /* Custom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A4745492583FDF600CA86E5 /* Custom.swift */; };
- 0A74765C2522918900819FC9 /* AzureCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A74765B2522918900819FC9 /* AzureCore.framework */; };
+ 9766BE9261FCB48436FA6682 /* Pods_AzureCommunicationChatTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1FE3013E797A134E8A6C3B5 /* Pods_AzureCommunicationChatTests.framework */; };
+ D10C3BCE25A63F7800A181E3 /* listParticipants.json in Resources */ = {isa = PBXBuildFile; fileRef = D10C3BCD25A63F7800A181E3 /* listParticipants.json */; };
+ D10C3BD425A660AF00A181E3 /* listMessages.json in Resources */ = {isa = PBXBuildFile; fileRef = D10C3BD325A660AF00A181E3 /* listMessages.json */; };
+ D10C3BDA25A66D4D00A181E3 /* listThreads.json in Resources */ = {isa = PBXBuildFile; fileRef = D10C3BD925A66D4D00A181E3 /* listThreads.json */; };
+ D110F507258D603F001FA3CD /* AzureCommunication.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D110F506258D603F001FA3CD /* AzureCommunication.framework */; };
+ D110F50A258D604B001FA3CD /* AzureCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D110F509258D604B001FA3CD /* AzureCore.framework */; };
+ D110F50C258D6053001FA3CD /* Pods_AzureCommunicationChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D110F50B258D6053001FA3CD /* Pods_AzureCommunicationChat.framework */; };
+ D13CE65125BFB6D700415467 /* listReadReceipts.json in Resources */ = {isa = PBXBuildFile; fileRef = D13CE64E25BFB69100415467 /* listReadReceipts.json */; };
+ D147E62D25CE242C001CFB5D /* AzureCommunicationChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "AzureCommunicationChat::AzureCommunicationChat::Product" /* AzureCommunicationChat.framework */; };
+ D147E63925CE244A001CFB5D /* ChatClientUnitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECA8CD1258181A5006760F7 /* ChatClientUnitTests.swift */; };
+ D147E64025CE244F001CFB5D /* ChatThreadClientUnitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECA8D08258432DC006760F7 /* ChatThreadClientUnitTests.swift */; };
+ D147E64725CE2459001CFB5D /* TestUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1CD93B2258D6C3D00409613 /* TestUtil.swift */; };
+ D147E65225CE246B001CFB5D /* ListReadReceiptResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D2E25889619006760F7 /* ListReadReceiptResponse.json */; };
+ D147E65925CE246E001CFB5D /* AddParticipantResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D28258892CD006760F7 /* AddParticipantResponse.json */; };
+ D147E66025CE2470001CFB5D /* ListParticipantsResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D2225888DD8006760F7 /* ListParticipantsResponse.json */; };
+ D147E66725CE2473001CFB5D /* ListMessagesResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D1C258887D3006760F7 /* ListMessagesResponse.json */; };
+ D147E66E25CE2476001CFB5D /* GetMessageResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D1625888667006760F7 /* GetMessageResponse.json */; };
+ D147E67525CE2478001CFB5D /* NoContent.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D0E25888515006760F7 /* NoContent.json */; };
+ D147E67C25CE247B001CFB5D /* SendMessageResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8D0F25888515006760F7 /* SendMessageResponse.json */; };
+ D147E68325CE247D001CFB5D /* ListThreadsResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8CF02582A633006760F7 /* ListThreadsResponse.json */; };
+ D147E68A25CE2480001CFB5D /* UnauthorizedError.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8CEA2582A52D006760F7 /* UnauthorizedError.json */; };
+ D147E69125CE2482001CFB5D /* GetThreadResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 0ECA8CDE258188D0006760F7 /* GetThreadResponse.json */; };
+ D147E69825CE2485001CFB5D /* CreateThreadResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = D1BA104525807B0B00CA7130 /* CreateThreadResponse.json */; };
+ D1565C71256DB74900AF45F8 /* ChatClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1565C70256DB74900AF45F8 /* ChatClient.swift */; };
+ D1565C74256DB76C00AF45F8 /* ChatThreadClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1565C73256DB76C00AF45F8 /* ChatThreadClient.swift */; };
+ D15E98FA25B7C80C00E63DB2 /* AzureCommunicationChatClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98CA25B7C80C00E63DB2 /* AzureCommunicationChatClient.swift */; };
+ D15E98FB25B7C80C00E63DB2 /* ChatThreadOperation+AddChatParticipantsOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98CC25B7C80C00E63DB2 /* ChatThreadOperation+AddChatParticipantsOptions.swift */; };
+ D15E98FC25B7C80C00E63DB2 /* ChatThreadOperation+ListChatReadReceiptsOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98CD25B7C80C00E63DB2 /* ChatThreadOperation+ListChatReadReceiptsOptions.swift */; };
+ D15E98FD25B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98CE25B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatMessageOptions.swift */; };
+ D15E98FE25B7C80C00E63DB2 /* Chat+ListChatThreadsOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98CF25B7C80C00E63DB2 /* Chat+ListChatThreadsOptions.swift */; };
+ D15E98FF25B7C80C00E63DB2 /* Chat+DeleteChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D025B7C80C00E63DB2 /* Chat+DeleteChatThreadOptions.swift */; };
+ D15E990025B7C80C00E63DB2 /* AzureCommunicationChatClientOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D125B7C80C00E63DB2 /* AzureCommunicationChatClientOptions.swift */; };
+ D15E990125B7C80C00E63DB2 /* ChatThreadOperation+SendChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D225B7C80C00E63DB2 /* ChatThreadOperation+SendChatMessageOptions.swift */; };
+ D15E990225B7C80C00E63DB2 /* ChatThreadOperation+SendChatReadReceiptOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D325B7C80C00E63DB2 /* ChatThreadOperation+SendChatReadReceiptOptions.swift */; };
+ D15E990325B7C80C00E63DB2 /* ChatThreadOperation+RemoveChatParticipantOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D425B7C80C00E63DB2 /* ChatThreadOperation+RemoveChatParticipantOptions.swift */; };
+ D15E990425B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D525B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatThreadOptions.swift */; };
+ D15E990525B7C80C00E63DB2 /* Chat+CreateChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D625B7C80C00E63DB2 /* Chat+CreateChatThreadOptions.swift */; };
+ D15E990625B7C80C00E63DB2 /* ChatThreadOperation+SendTypingNotificationOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D725B7C80C00E63DB2 /* ChatThreadOperation+SendTypingNotificationOptions.swift */; };
+ D15E990725B7C80C00E63DB2 /* ChatThreadOperation+DeleteChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D825B7C80C00E63DB2 /* ChatThreadOperation+DeleteChatMessageOptions.swift */; };
+ D15E990825B7C80C00E63DB2 /* ChatThreadOperation+ListChatMessagesOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98D925B7C80C00E63DB2 /* ChatThreadOperation+ListChatMessagesOptions.swift */; };
+ D15E990925B7C80C00E63DB2 /* ChatThreadOperation+GetChatMessageOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98DA25B7C80C00E63DB2 /* ChatThreadOperation+GetChatMessageOptions.swift */; };
+ D15E990A25B7C80C00E63DB2 /* Chat+GetChatThreadOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98DB25B7C80C00E63DB2 /* Chat+GetChatThreadOptions.swift */; };
+ D15E990B25B7C80C00E63DB2 /* ChatThreadOperation+ListChatParticipantsOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98DC25B7C80C00E63DB2 /* ChatThreadOperation+ListChatParticipantsOptions.swift */; };
+ D15E990C25B7C80C00E63DB2 /* PatchUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98DE25B7C80C00E63DB2 /* PatchUtil.swift */; };
+ D15E990D25B7C80C00E63DB2 /* Chat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98DF25B7C80C00E63DB2 /* Chat.swift */; };
+ D15E990E25B7C80C00E63DB2 /* AddChatParticipantsErrors.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E125B7C80C00E63DB2 /* AddChatParticipantsErrors.swift */; };
+ D15E990F25B7C80C00E63DB2 /* CommunicationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E225B7C80C00E63DB2 /* CommunicationError.swift */; };
+ D15E991025B7C80C00E63DB2 /* SendChatMessageRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E325B7C80C00E63DB2 /* SendChatMessageRequest.swift */; };
+ D15E991125B7C80C00E63DB2 /* ChatMessageContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E425B7C80C00E63DB2 /* ChatMessageContent.swift */; };
+ D15E991225B7C80C00E63DB2 /* UpdateChatThreadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E525B7C80C00E63DB2 /* UpdateChatThreadRequest.swift */; };
+ D15E991325B7C80C00E63DB2 /* ChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E625B7C80C00E63DB2 /* ChatMessage.swift */; };
+ D15E991425B7C80C00E63DB2 /* ChatMessagesCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E725B7C80C00E63DB2 /* ChatMessagesCollection.swift */; };
+ D15E991525B7C80C00E63DB2 /* CreateChatThreadErrors.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E825B7C80C00E63DB2 /* CreateChatThreadErrors.swift */; };
+ D15E991625B7C80C00E63DB2 /* ChatMessageReadReceipt.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98E925B7C80C00E63DB2 /* ChatMessageReadReceipt.swift */; };
+ D15E991725B7C80C00E63DB2 /* CreateChatThreadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98EA25B7C80C00E63DB2 /* CreateChatThreadRequest.swift */; };
+ D15E991825B7C80C00E63DB2 /* CommunicationErrorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98EB25B7C80C00E63DB2 /* CommunicationErrorResponse.swift */; };
+ D15E991925B7C80C00E63DB2 /* Enumerations.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98EC25B7C80C00E63DB2 /* Enumerations.swift */; };
+ D15E991A25B7C80C00E63DB2 /* AddChatParticipantsResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98ED25B7C80C00E63DB2 /* AddChatParticipantsResult.swift */; };
+ D15E991B25B7C80C00E63DB2 /* ChatMessageReadReceiptsCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98EE25B7C80C00E63DB2 /* ChatMessageReadReceiptsCollection.swift */; };
+ D15E991C25B7C80C00E63DB2 /* ChatThreadsInfoCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98EF25B7C80C00E63DB2 /* ChatThreadsInfoCollection.swift */; };
+ D15E991D25B7C80C00E63DB2 /* ChatThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F025B7C80C00E63DB2 /* ChatThread.swift */; };
+ D15E991E25B7C80C00E63DB2 /* UpdateChatMessageRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F125B7C80C00E63DB2 /* UpdateChatMessageRequest.swift */; };
+ D15E991F25B7C80C00E63DB2 /* CreateChatThreadResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F225B7C80C00E63DB2 /* CreateChatThreadResult.swift */; };
+ D15E992025B7C80C00E63DB2 /* SendReadReceiptRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F325B7C80C00E63DB2 /* SendReadReceiptRequest.swift */; };
+ D15E992125B7C80C00E63DB2 /* ChatThreadInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F425B7C80C00E63DB2 /* ChatThreadInfo.swift */; };
+ D15E992225B7C80C00E63DB2 /* SendChatMessageResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F525B7C80C00E63DB2 /* SendChatMessageResult.swift */; };
+ D15E992325B7C80C00E63DB2 /* AddChatParticipantsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F625B7C80C00E63DB2 /* AddChatParticipantsRequest.swift */; };
+ D15E992425B7C80C00E63DB2 /* ChatParticipant.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F725B7C80C00E63DB2 /* ChatParticipant.swift */; };
+ D15E992525B7C80C00E63DB2 /* ChatParticipantsCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F825B7C80C00E63DB2 /* ChatParticipantsCollection.swift */; };
+ D15E992625B7C80C00E63DB2 /* ChatThreadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E98F925B7C80C00E63DB2 /* ChatThreadOperation.swift */; };
+ D16C802D25BA0A2400C42803 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C802C25BA0A2400C42803 /* Message.swift */; };
+ D16C803325BA0AE400C42803 /* Thread.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C803225BA0AE400C42803 /* Thread.swift */; };
+ D16C803725BA0AFE00C42803 /* Participant.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C803625BA0AFE00C42803 /* Participant.swift */; };
+ D16C803B25BA0B0E00C42803 /* ReadReceipt.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C803A25BA0B0E00C42803 /* ReadReceipt.swift */; };
+ D16C803F25BA0B5200C42803 /* MessageContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C803E25BA0B5200C42803 /* MessageContent.swift */; };
+ D16C804325BA402100C42803 /* CreateThreadRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C804225BA402100C42803 /* CreateThreadRequest.swift */; };
+ D16C804725BA406D00C42803 /* CreateThreadResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16C804625BA406D00C42803 /* CreateThreadResult.swift */; };
+ D193C45B25CE258F006F769C /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = D193C45A25CE258F006F769C /* OHHTTPStubsSwift */; };
+ D1B7EB06257F0D20004F384A /* AzureCommunicationChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = "AzureCommunicationChat::AzureCommunicationChat::Product" /* AzureCommunicationChat.framework */; };
+ D1BA104D25807B7500CA7130 /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = D1BA104C25807B7500CA7130 /* OHHTTPStubsSwift */; };
+ D1CD93A2258D6BC700409613 /* ChatClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1CD93A1258D6BC700409613 /* ChatClientTests.swift */; };
+ D1CD93A8258D6BDC00409613 /* ChatThreadClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1CD93A7258D6BDC00409613 /* ChatThreadClientTests.swift */; };
+ D1CD93AD258D6C2500409613 /* RecordingUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1CD93AC258D6C2500409613 /* RecordingUtil.swift */; };
+ D1CD93B3258D6C3D00409613 /* TestUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1CD93B2258D6C3D00409613 /* TestUtil.swift */; };
+ D1CD93BE258D6E6200409613 /* addParticipants.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93BD258D6E6200409613 /* addParticipants.json */; };
+ D1CD93C4258D6E7300409613 /* createThread.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93C3258D6E7300409613 /* createThread.json */; };
+ D1CD93C8258D6E8F00409613 /* deleteMessage.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93C7258D6E8F00409613 /* deleteMessage.json */; };
+ D1CD93CC258D6E9E00409613 /* deleteThread.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93CB258D6E9E00409613 /* deleteThread.json */; };
+ D1CD93D0258D6EAB00409613 /* getThread.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93CF258D6EAB00409613 /* getThread.json */; };
+ D1CD93D8258D6ECD00409613 /* removeParticipant.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93D7258D6ECD00409613 /* removeParticipant.json */; };
+ D1CD93DC258D6EDA00409613 /* sendMessage.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93DB258D6EDA00409613 /* sendMessage.json */; };
+ D1CD93E0258D6EEA00409613 /* sendReadReceipt.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93DF258D6EEA00409613 /* sendReadReceipt.json */; };
+ D1CD93E4258D6EF700409613 /* sendTypingNotification.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93E3258D6EF700409613 /* sendTypingNotification.json */; };
+ D1CD93E8258D6F0600409613 /* updateMessage.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93E7258D6F0600409613 /* updateMessage.json */; };
+ D1CD93EC258D6F1300409613 /* updateTopic.json in Resources */ = {isa = PBXBuildFile; fileRef = D1CD93EB258D6F1300409613 /* updateTopic.json */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ D147E62E25CE242C001CFB5D /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = OBJ_1 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = "AzureCommunicationChat::AzureCommunicationChat";
+ remoteInfo = AzureCommunicationChat;
+ };
+ D1CD936C258D688D00409613 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = OBJ_1 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = "AzureCommunicationChat::AzureCommunicationChat";
+ remoteInfo = AzureCommunicationChat;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXFileReference section */
- 0A4745032583F47600CA86E5 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
- 0A47451D2583FDF600CA86E5 /* AzureCommunicationChatClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AzureCommunicationChatClient.swift; sourceTree = ""; };
- 0A47451F2583FDF600CA86E5 /* AzureCommunicationChatService+CreateChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+CreateChatThreadOptions.swift"; sourceTree = ""; };
- 0A4745202583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+UpdateChatMessageOptions.swift"; sourceTree = ""; };
- 0A4745212583FDF600CA86E5 /* AzureCommunicationChatClientOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AzureCommunicationChatClientOptions.swift; sourceTree = ""; };
- 0A4745222583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadsOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+ListChatThreadsOptions.swift"; sourceTree = ""; };
- 0A4745232583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+DeleteChatThreadOptions.swift"; sourceTree = ""; };
- 0A4745242583FDF600CA86E5 /* AzureCommunicationChatService+SendChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+SendChatMessageOptions.swift"; sourceTree = ""; };
- 0A4745252583FDF600CA86E5 /* AzureCommunicationChatService+GetChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+GetChatThreadOptions.swift"; sourceTree = ""; };
- 0A4745262583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+UpdateChatThreadOptions.swift"; sourceTree = ""; };
- 0A4745272583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+DeleteChatMessageOptions.swift"; sourceTree = ""; };
- 0A4745282583FDF600CA86E5 /* AzureCommunicationChatService+ListChatMessagesOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+ListChatMessagesOptions.swift"; sourceTree = ""; };
- 0A4745292583FDF600CA86E5 /* AzureCommunicationChatService+ListChatReadReceiptsOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+ListChatReadReceiptsOptions.swift"; sourceTree = ""; };
- 0A47452A2583FDF600CA86E5 /* AzureCommunicationChatService+AddChatThreadMembersOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+AddChatThreadMembersOptions.swift"; sourceTree = ""; };
- 0A47452B2583FDF600CA86E5 /* AzureCommunicationChatService+GetChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+GetChatMessageOptions.swift"; sourceTree = ""; };
- 0A47452C2583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadMembersOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+ListChatThreadMembersOptions.swift"; sourceTree = ""; };
- 0A47452D2583FDF600CA86E5 /* AzureCommunicationChatService+SendChatReadReceiptOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+SendChatReadReceiptOptions.swift"; sourceTree = ""; };
- 0A47452E2583FDF600CA86E5 /* AzureCommunicationChatService+SendTypingNotificationOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+SendTypingNotificationOptions.swift"; sourceTree = ""; };
- 0A47452F2583FDF600CA86E5 /* AzureCommunicationChatService+RemoveChatThreadMemberOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommunicationChatService+RemoveChatThreadMemberOptions.swift"; sourceTree = ""; };
- 0A4745312583FDF600CA86E5 /* PatchUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PatchUtil.swift; sourceTree = ""; };
- 0A4745332583FDF600CA86E5 /* SendChatMessageRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendChatMessageRequest.swift; sourceTree = ""; };
- 0A4745342583FDF600CA86E5 /* MultiStatusResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MultiStatusResponse.swift; sourceTree = ""; };
- 0A4745352583FDF600CA86E5 /* UpdateChatThreadRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateChatThreadRequest.swift; sourceTree = ""; };
- 0A4745362583FDF600CA86E5 /* ChatMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessage.swift; sourceTree = ""; };
- 0A4745372583FDF600CA86E5 /* ChatMessagesCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessagesCollection.swift; sourceTree = ""; };
- 0A4745382583FDF600CA86E5 /* CreateChatThreadRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChatThreadRequest.swift; sourceTree = ""; };
- 0A4745392583FDF600CA86E5 /* AddChatThreadMembersRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddChatThreadMembersRequest.swift; sourceTree = ""; };
- 0A47453A2583FDF600CA86E5 /* ReadReceipt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadReceipt.swift; sourceTree = ""; };
- 0A47453B2583FDF600CA86E5 /* Enumerations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Enumerations.swift; sourceTree = ""; };
- 0A47453C2583FDF600CA86E5 /* IndividualStatusResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IndividualStatusResponse.swift; sourceTree = ""; };
- 0A47453D2583FDF600CA86E5 /* ChatThreadsInfoCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadsInfoCollection.swift; sourceTree = ""; };
- 0A47453E2583FDF600CA86E5 /* ChatThread.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThread.swift; sourceTree = ""; };
- 0A47453F2583FDF600CA86E5 /* UpdateChatMessageRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateChatMessageRequest.swift; sourceTree = ""; };
- 0A4745402583FDF600CA86E5 /* SendReadReceiptRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendReadReceiptRequest.swift; sourceTree = ""; };
- 0A4745412583FDF600CA86E5 /* ChatThreadMember.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadMember.swift; sourceTree = ""; };
- 0A4745422583FDF600CA86E5 /* ErrorType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorType.swift; sourceTree = ""; };
- 0A4745432583FDF600CA86E5 /* ChatThreadInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadInfo.swift; sourceTree = ""; };
- 0A4745442583FDF600CA86E5 /* SendChatMessageResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendChatMessageResult.swift; sourceTree = ""; };
- 0A4745452583FDF600CA86E5 /* ReadReceiptsCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadReceiptsCollection.swift; sourceTree = ""; };
- 0A4745462583FDF600CA86E5 /* ChatThreadMembersCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadMembersCollection.swift; sourceTree = ""; };
- 0A4745472583FDF600CA86E5 /* AzureCommunicationChatService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AzureCommunicationChatService.swift; sourceTree = ""; };
- 0A4745482583FDF600CA86E5 /* AzureCommuncationChatClient+Convenience.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AzureCommuncationChatClient+Convenience.swift"; sourceTree = ""; };
- 0A4745492583FDF600CA86E5 /* Custom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Custom.swift; sourceTree = ""; };
- 0A74765B2522918900819FC9 /* AzureCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AzureCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 04B336EEF1E42CCE389E4935 /* Pods-AzureCommunicationChat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AzureCommunicationChat.release.xcconfig"; path = "Target Support Files/Pods-AzureCommunicationChat/Pods-AzureCommunicationChat.release.xcconfig"; sourceTree = ""; };
+ 0ECA8CD1258181A5006760F7 /* ChatClientUnitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatClientUnitTests.swift; sourceTree = ""; };
+ 0ECA8CDE258188D0006760F7 /* GetThreadResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = GetThreadResponse.json; sourceTree = ""; };
+ 0ECA8CEA2582A52D006760F7 /* UnauthorizedError.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = UnauthorizedError.json; sourceTree = ""; };
+ 0ECA8CF02582A633006760F7 /* ListThreadsResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ListThreadsResponse.json; sourceTree = ""; };
+ 0ECA8D08258432DC006760F7 /* ChatThreadClientUnitTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadClientUnitTests.swift; sourceTree = ""; };
+ 0ECA8D0E25888515006760F7 /* NoContent.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = NoContent.json; sourceTree = ""; };
+ 0ECA8D0F25888515006760F7 /* SendMessageResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = SendMessageResponse.json; sourceTree = ""; };
+ 0ECA8D1625888667006760F7 /* GetMessageResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = GetMessageResponse.json; sourceTree = ""; };
+ 0ECA8D1C258887D3006760F7 /* ListMessagesResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ListMessagesResponse.json; sourceTree = ""; };
+ 0ECA8D2225888DD8006760F7 /* ListParticipantsResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ListParticipantsResponse.json; sourceTree = ""; };
+ 0ECA8D28258892CD006760F7 /* AddParticipantResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AddParticipantResponse.json; sourceTree = ""; };
+ 0ECA8D2E25889619006760F7 /* ListReadReceiptResponse.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = ListReadReceiptResponse.json; sourceTree = ""; };
+ 2CB55B558C70B4045A54487D /* Pods-AzureCommunicationChatTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AzureCommunicationChatTests.debug.xcconfig"; path = "Target Support Files/Pods-AzureCommunicationChatTests/Pods-AzureCommunicationChatTests.debug.xcconfig"; sourceTree = ""; };
+ 8E5206D2E09378DA0F9FD0E4 /* Pods-AzureCommunicationChatTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AzureCommunicationChatTests.release.xcconfig"; path = "Target Support Files/Pods-AzureCommunicationChatTests/Pods-AzureCommunicationChatTests.release.xcconfig"; sourceTree = ""; };
+ 9FE998BEC9685C476F2AFD1C /* Pods-AzureCommunicationChat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AzureCommunicationChat.debug.xcconfig"; path = "Target Support Files/Pods-AzureCommunicationChat/Pods-AzureCommunicationChat.debug.xcconfig"; sourceTree = ""; };
"AzureCommunicationChat::AzureCommunicationChat::Product" /* AzureCommunicationChat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AzureCommunicationChat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- OBJ_101 /* ApplicationUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationUtil.swift; sourceTree = ""; };
- OBJ_102 /* AzureCodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AzureCodable.swift; sourceTree = ""; };
- OBJ_103 /* ConvertingInitializers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConvertingInitializers.swift; sourceTree = ""; };
- OBJ_104 /* Copyable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Copyable.swift; sourceTree = ""; };
- OBJ_105 /* CryptoUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CryptoUtil.swift; sourceTree = ""; };
- OBJ_106 /* KeychainUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainUtil.swift; sourceTree = ""; };
- OBJ_107 /* ReachabilityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReachabilityManager.swift; sourceTree = ""; };
- OBJ_108 /* ReachabilityManagerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReachabilityManagerType.swift; sourceTree = ""; };
- OBJ_109 /* RegexUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegexUtil.swift; sourceTree = ""; };
- OBJ_110 /* StringUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringUtil.swift; sourceTree = ""; };
- OBJ_111 /* URLUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLUtil.swift; sourceTree = ""; };
- OBJ_112 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; name = Package.swift; path = "/Users/travisprescott/Documents/generated/sdk/AzureCommunicationChat/.build/checkouts/azure-sdk-for-ios/Package.swift"; sourceTree = ""; };
- OBJ_57 /* AzureTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AzureTask.swift; sourceTree = ""; };
- OBJ_58 /* ClientLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientLogger.swift; sourceTree = ""; };
- OBJ_6 /* Package.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; };
- OBJ_60 /* CancellationToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancellationToken.swift; sourceTree = ""; };
- OBJ_61 /* Collections.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Collections.swift; sourceTree = ""; };
- OBJ_63 /* XMLMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XMLMap.swift; sourceTree = ""; };
- OBJ_64 /* XMLModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XMLModel.swift; sourceTree = ""; };
- OBJ_65 /* XMLTree.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XMLTree.swift; sourceTree = ""; };
- OBJ_66 /* Errors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; };
- OBJ_68 /* Pipeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pipeline.swift; sourceTree = ""; };
- OBJ_69 /* PipelineClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineClient.swift; sourceTree = ""; };
- OBJ_70 /* PipelineContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineContext.swift; sourceTree = ""; };
- OBJ_71 /* PipelineRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineRequest.swift; sourceTree = ""; };
- OBJ_72 /* PipelineResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineResponse.swift; sourceTree = ""; };
- OBJ_73 /* PipelineStage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PipelineStage.swift; sourceTree = ""; };
- OBJ_75 /* AddDatePolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddDatePolicy.swift; sourceTree = ""; };
- OBJ_76 /* AuthenticationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationPolicy.swift; sourceTree = ""; };
- OBJ_77 /* ContentDecodePolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentDecodePolicy.swift; sourceTree = ""; };
- OBJ_78 /* HeadersPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadersPolicy.swift; sourceTree = ""; };
- OBJ_79 /* HeadersValidationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadersValidationPolicy.swift; sourceTree = ""; };
- OBJ_80 /* LoggingPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggingPolicy.swift; sourceTree = ""; };
- OBJ_81 /* NormalizeETagPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NormalizeETagPolicy.swift; sourceTree = ""; };
- OBJ_82 /* RequestIdPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestIdPolicy.swift; sourceTree = ""; };
- OBJ_83 /* UserAgentPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAgentPolicy.swift; sourceTree = ""; };
- OBJ_85 /* DataStringConvertible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataStringConvertible.swift; sourceTree = ""; };
- OBJ_86 /* HTTPHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPHeader.swift; sourceTree = ""; };
- OBJ_87 /* HTTPMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPMethod.swift; sourceTree = ""; };
- OBJ_88 /* HTTPRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPRequest.swift; sourceTree = ""; };
- OBJ_89 /* HTTPResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPResponse.swift; sourceTree = ""; };
- OBJ_90 /* HTTPTransportStage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPTransportStage.swift; sourceTree = ""; };
- OBJ_91 /* TelemetryOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelemetryOptions.swift; sourceTree = ""; };
- OBJ_92 /* TransportOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransportOptions.swift; sourceTree = ""; };
- OBJ_93 /* URLHTTPResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLHTTPResponse.swift; sourceTree = ""; };
- OBJ_94 /* URLSessionTransport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLSessionTransport.swift; sourceTree = ""; };
- OBJ_96 /* BundleInfoProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundleInfoProvider.swift; sourceTree = ""; };
- OBJ_97 /* DeviceProviders.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceProviders.swift; sourceTree = ""; };
- OBJ_98 /* LocaleInfoProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocaleInfoProvider.swift; sourceTree = ""; };
- OBJ_99 /* PlatformInfoProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlatformInfoProvider.swift; sourceTree = ""; };
+ D10C3BCD25A63F7800A181E3 /* listParticipants.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = listParticipants.json; sourceTree = ""; };
+ D10C3BD325A660AF00A181E3 /* listMessages.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = listMessages.json; sourceTree = ""; };
+ D10C3BD925A66D4D00A181E3 /* listThreads.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = listThreads.json; sourceTree = ""; };
+ D110F506258D603F001FA3CD /* AzureCommunication.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AzureCommunication.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D110F509258D604B001FA3CD /* AzureCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AzureCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D110F50B258D6053001FA3CD /* Pods_AzureCommunicationChat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Pods_AzureCommunicationChat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D13CE64E25BFB69100415467 /* listReadReceipts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = listReadReceipts.json; sourceTree = ""; };
+ D147E62825CE242C001CFB5D /* AzureCommunicationChatUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AzureCommunicationChatUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ D1565C70256DB74900AF45F8 /* ChatClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatClient.swift; sourceTree = ""; };
+ D1565C73256DB76C00AF45F8 /* ChatThreadClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatThreadClient.swift; sourceTree = ""; };
+ D15E98CA25B7C80C00E63DB2 /* AzureCommunicationChatClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AzureCommunicationChatClient.swift; sourceTree = ""; };
+ D15E98CC25B7C80C00E63DB2 /* ChatThreadOperation+AddChatParticipantsOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+AddChatParticipantsOptions.swift"; sourceTree = ""; };
+ D15E98CD25B7C80C00E63DB2 /* ChatThreadOperation+ListChatReadReceiptsOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+ListChatReadReceiptsOptions.swift"; sourceTree = ""; };
+ D15E98CE25B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+UpdateChatMessageOptions.swift"; sourceTree = ""; };
+ D15E98CF25B7C80C00E63DB2 /* Chat+ListChatThreadsOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Chat+ListChatThreadsOptions.swift"; sourceTree = ""; };
+ D15E98D025B7C80C00E63DB2 /* Chat+DeleteChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Chat+DeleteChatThreadOptions.swift"; sourceTree = ""; };
+ D15E98D125B7C80C00E63DB2 /* AzureCommunicationChatClientOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AzureCommunicationChatClientOptions.swift; sourceTree = ""; };
+ D15E98D225B7C80C00E63DB2 /* ChatThreadOperation+SendChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+SendChatMessageOptions.swift"; sourceTree = ""; };
+ D15E98D325B7C80C00E63DB2 /* ChatThreadOperation+SendChatReadReceiptOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+SendChatReadReceiptOptions.swift"; sourceTree = ""; };
+ D15E98D425B7C80C00E63DB2 /* ChatThreadOperation+RemoveChatParticipantOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+RemoveChatParticipantOptions.swift"; sourceTree = ""; };
+ D15E98D525B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+UpdateChatThreadOptions.swift"; sourceTree = ""; };
+ D15E98D625B7C80C00E63DB2 /* Chat+CreateChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Chat+CreateChatThreadOptions.swift"; sourceTree = ""; };
+ D15E98D725B7C80C00E63DB2 /* ChatThreadOperation+SendTypingNotificationOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+SendTypingNotificationOptions.swift"; sourceTree = ""; };
+ D15E98D825B7C80C00E63DB2 /* ChatThreadOperation+DeleteChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+DeleteChatMessageOptions.swift"; sourceTree = ""; };
+ D15E98D925B7C80C00E63DB2 /* ChatThreadOperation+ListChatMessagesOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+ListChatMessagesOptions.swift"; sourceTree = ""; };
+ D15E98DA25B7C80C00E63DB2 /* ChatThreadOperation+GetChatMessageOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+GetChatMessageOptions.swift"; sourceTree = ""; };
+ D15E98DB25B7C80C00E63DB2 /* Chat+GetChatThreadOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Chat+GetChatThreadOptions.swift"; sourceTree = ""; };
+ D15E98DC25B7C80C00E63DB2 /* ChatThreadOperation+ListChatParticipantsOptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ChatThreadOperation+ListChatParticipantsOptions.swift"; sourceTree = ""; };
+ D15E98DE25B7C80C00E63DB2 /* PatchUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PatchUtil.swift; sourceTree = ""; };
+ D15E98DF25B7C80C00E63DB2 /* Chat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Chat.swift; sourceTree = ""; };
+ D15E98E125B7C80C00E63DB2 /* AddChatParticipantsErrors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddChatParticipantsErrors.swift; sourceTree = ""; };
+ D15E98E225B7C80C00E63DB2 /* CommunicationError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommunicationError.swift; sourceTree = ""; };
+ D15E98E325B7C80C00E63DB2 /* SendChatMessageRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendChatMessageRequest.swift; sourceTree = ""; };
+ D15E98E425B7C80C00E63DB2 /* ChatMessageContent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageContent.swift; sourceTree = ""; };
+ D15E98E525B7C80C00E63DB2 /* UpdateChatThreadRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateChatThreadRequest.swift; sourceTree = ""; };
+ D15E98E625B7C80C00E63DB2 /* ChatMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessage.swift; sourceTree = ""; };
+ D15E98E725B7C80C00E63DB2 /* ChatMessagesCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessagesCollection.swift; sourceTree = ""; };
+ D15E98E825B7C80C00E63DB2 /* CreateChatThreadErrors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChatThreadErrors.swift; sourceTree = ""; };
+ D15E98E925B7C80C00E63DB2 /* ChatMessageReadReceipt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageReadReceipt.swift; sourceTree = ""; };
+ D15E98EA25B7C80C00E63DB2 /* CreateChatThreadRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChatThreadRequest.swift; sourceTree = ""; };
+ D15E98EB25B7C80C00E63DB2 /* CommunicationErrorResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommunicationErrorResponse.swift; sourceTree = ""; };
+ D15E98EC25B7C80C00E63DB2 /* Enumerations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Enumerations.swift; sourceTree = ""; };
+ D15E98ED25B7C80C00E63DB2 /* AddChatParticipantsResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddChatParticipantsResult.swift; sourceTree = ""; };
+ D15E98EE25B7C80C00E63DB2 /* ChatMessageReadReceiptsCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageReadReceiptsCollection.swift; sourceTree = ""; };
+ D15E98EF25B7C80C00E63DB2 /* ChatThreadsInfoCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadsInfoCollection.swift; sourceTree = ""; };
+ D15E98F025B7C80C00E63DB2 /* ChatThread.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThread.swift; sourceTree = ""; };
+ D15E98F125B7C80C00E63DB2 /* UpdateChatMessageRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UpdateChatMessageRequest.swift; sourceTree = ""; };
+ D15E98F225B7C80C00E63DB2 /* CreateChatThreadResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChatThreadResult.swift; sourceTree = ""; };
+ D15E98F325B7C80C00E63DB2 /* SendReadReceiptRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendReadReceiptRequest.swift; sourceTree = ""; };
+ D15E98F425B7C80C00E63DB2 /* ChatThreadInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadInfo.swift; sourceTree = ""; };
+ D15E98F525B7C80C00E63DB2 /* SendChatMessageResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SendChatMessageResult.swift; sourceTree = ""; };
+ D15E98F625B7C80C00E63DB2 /* AddChatParticipantsRequest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddChatParticipantsRequest.swift; sourceTree = ""; };
+ D15E98F725B7C80C00E63DB2 /* ChatParticipant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatParticipant.swift; sourceTree = ""; };
+ D15E98F825B7C80C00E63DB2 /* ChatParticipantsCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatParticipantsCollection.swift; sourceTree = ""; };
+ D15E98F925B7C80C00E63DB2 /* ChatThreadOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatThreadOperation.swift; sourceTree = ""; };
+ D16C802C25BA0A2400C42803 /* Message.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = ""; };
+ D16C803225BA0AE400C42803 /* Thread.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Thread.swift; sourceTree = ""; };
+ D16C803625BA0AFE00C42803 /* Participant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Participant.swift; sourceTree = ""; };
+ D16C803A25BA0B0E00C42803 /* ReadReceipt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadReceipt.swift; sourceTree = ""; };
+ D16C803E25BA0B5200C42803 /* MessageContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageContent.swift; sourceTree = ""; };
+ D16C804225BA402100C42803 /* CreateThreadRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateThreadRequest.swift; sourceTree = ""; };
+ D16C804625BA406D00C42803 /* CreateThreadResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateThreadResult.swift; sourceTree = ""; };
+ D1B7EAED257F02FC004F384A /* AzureCommunicationChatTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AzureCommunicationChatTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ D1B7EAFC257F03A1004F384A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D1BA104525807B0B00CA7130 /* CreateThreadResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = CreateThreadResponse.json; sourceTree = ""; };
+ D1CD93A1258D6BC700409613 /* ChatClientTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatClientTests.swift; sourceTree = ""; };
+ D1CD93A7258D6BDC00409613 /* ChatThreadClientTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatThreadClientTests.swift; sourceTree = ""; };
+ D1CD93AC258D6C2500409613 /* RecordingUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordingUtil.swift; sourceTree = ""; };
+ D1CD93B2258D6C3D00409613 /* TestUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestUtil.swift; sourceTree = ""; };
+ D1CD93BD258D6E6200409613 /* addParticipants.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = addParticipants.json; sourceTree = ""; };
+ D1CD93C3258D6E7300409613 /* createThread.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = createThread.json; sourceTree = ""; };
+ D1CD93C7258D6E8F00409613 /* deleteMessage.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = deleteMessage.json; sourceTree = ""; };
+ D1CD93CB258D6E9E00409613 /* deleteThread.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = deleteThread.json; sourceTree = ""; };
+ D1CD93CF258D6EAB00409613 /* getThread.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = getThread.json; sourceTree = ""; };
+ D1CD93D7258D6ECD00409613 /* removeParticipant.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = removeParticipant.json; sourceTree = ""; };
+ D1CD93DB258D6EDA00409613 /* sendMessage.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = sendMessage.json; sourceTree = ""; };
+ D1CD93DF258D6EEA00409613 /* sendReadReceipt.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = sendReadReceipt.json; sourceTree = ""; };
+ D1CD93E3258D6EF700409613 /* sendTypingNotification.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = sendTypingNotification.json; sourceTree = ""; };
+ D1CD93E7258D6F0600409613 /* updateMessage.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = updateMessage.json; sourceTree = ""; };
+ D1CD93EB258D6F1300409613 /* updateTopic.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = updateTopic.json; sourceTree = ""; };
+ F1FE3013E797A134E8A6C3B5 /* Pods_AzureCommunicationChatTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AzureCommunicationChatTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ D147E62525CE242C001CFB5D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D147E62D25CE242C001CFB5D /* AzureCommunicationChat.framework in Frameworks */,
+ D193C45B25CE258F006F769C /* OHHTTPStubsSwift in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D1B7EAEA257F02FC004F384A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D1B7EB06257F0D20004F384A /* AzureCommunicationChat.framework in Frameworks */,
+ D1BA104D25807B7500CA7130 /* OHHTTPStubsSwift in Frameworks */,
+ 9766BE9261FCB48436FA6682 /* Pods_AzureCommunicationChatTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
OBJ_161 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 0;
files = (
- 0A74765C2522918900819FC9 /* AzureCore.framework in Frameworks */,
+ D110F50C258D6053001FA3CD /* Pods_AzureCommunicationChat.framework in Frameworks */,
+ D110F50A258D604B001FA3CD /* AzureCore.framework in Frameworks */,
+ D110F507258D603F001FA3CD /* AzureCommunication.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 0A47451B2583FDF600CA86E5 /* Source */ = {
- isa = PBXGroup;
- children = (
- 0A47451C2583FDF600CA86E5 /* Generated */,
- 0A4745482583FDF600CA86E5 /* AzureCommuncationChatClient+Convenience.swift */,
- 0A4745492583FDF600CA86E5 /* Custom.swift */,
- );
- path = Source;
- sourceTree = "";
- };
- 0A47451C2583FDF600CA86E5 /* Generated */ = {
- isa = PBXGroup;
- children = (
- 0A47451D2583FDF600CA86E5 /* AzureCommunicationChatClient.swift */,
- 0A47451E2583FDF600CA86E5 /* Options */,
- 0A4745302583FDF600CA86E5 /* Util */,
- 0A4745322583FDF600CA86E5 /* Models */,
- 0A4745472583FDF600CA86E5 /* AzureCommunicationChatService.swift */,
- );
- path = Generated;
- sourceTree = "";
- };
- 0A47451E2583FDF600CA86E5 /* Options */ = {
- isa = PBXGroup;
- children = (
- 0A47451F2583FDF600CA86E5 /* AzureCommunicationChatService+CreateChatThreadOptions.swift */,
- 0A4745202583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatMessageOptions.swift */,
- 0A4745212583FDF600CA86E5 /* AzureCommunicationChatClientOptions.swift */,
- 0A4745222583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadsOptions.swift */,
- 0A4745232583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatThreadOptions.swift */,
- 0A4745242583FDF600CA86E5 /* AzureCommunicationChatService+SendChatMessageOptions.swift */,
- 0A4745252583FDF600CA86E5 /* AzureCommunicationChatService+GetChatThreadOptions.swift */,
- 0A4745262583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatThreadOptions.swift */,
- 0A4745272583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatMessageOptions.swift */,
- 0A4745282583FDF600CA86E5 /* AzureCommunicationChatService+ListChatMessagesOptions.swift */,
- 0A4745292583FDF600CA86E5 /* AzureCommunicationChatService+ListChatReadReceiptsOptions.swift */,
- 0A47452A2583FDF600CA86E5 /* AzureCommunicationChatService+AddChatThreadMembersOptions.swift */,
- 0A47452B2583FDF600CA86E5 /* AzureCommunicationChatService+GetChatMessageOptions.swift */,
- 0A47452C2583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadMembersOptions.swift */,
- 0A47452D2583FDF600CA86E5 /* AzureCommunicationChatService+SendChatReadReceiptOptions.swift */,
- 0A47452E2583FDF600CA86E5 /* AzureCommunicationChatService+SendTypingNotificationOptions.swift */,
- 0A47452F2583FDF600CA86E5 /* AzureCommunicationChatService+RemoveChatThreadMemberOptions.swift */,
- );
- path = Options;
- sourceTree = "";
- };
- 0A4745302583FDF600CA86E5 /* Util */ = {
- isa = PBXGroup;
- children = (
- 0A4745312583FDF600CA86E5 /* PatchUtil.swift */,
- );
- path = Util;
- sourceTree = "";
- };
- 0A4745322583FDF600CA86E5 /* Models */ = {
- isa = PBXGroup;
- children = (
- 0A4745332583FDF600CA86E5 /* SendChatMessageRequest.swift */,
- 0A4745342583FDF600CA86E5 /* MultiStatusResponse.swift */,
- 0A4745352583FDF600CA86E5 /* UpdateChatThreadRequest.swift */,
- 0A4745362583FDF600CA86E5 /* ChatMessage.swift */,
- 0A4745372583FDF600CA86E5 /* ChatMessagesCollection.swift */,
- 0A4745382583FDF600CA86E5 /* CreateChatThreadRequest.swift */,
- 0A4745392583FDF600CA86E5 /* AddChatThreadMembersRequest.swift */,
- 0A47453A2583FDF600CA86E5 /* ReadReceipt.swift */,
- 0A47453B2583FDF600CA86E5 /* Enumerations.swift */,
- 0A47453C2583FDF600CA86E5 /* IndividualStatusResponse.swift */,
- 0A47453D2583FDF600CA86E5 /* ChatThreadsInfoCollection.swift */,
- 0A47453E2583FDF600CA86E5 /* ChatThread.swift */,
- 0A47453F2583FDF600CA86E5 /* UpdateChatMessageRequest.swift */,
- 0A4745402583FDF600CA86E5 /* SendReadReceiptRequest.swift */,
- 0A4745412583FDF600CA86E5 /* ChatThreadMember.swift */,
- 0A4745422583FDF600CA86E5 /* ErrorType.swift */,
- 0A4745432583FDF600CA86E5 /* ChatThreadInfo.swift */,
- 0A4745442583FDF600CA86E5 /* SendChatMessageResult.swift */,
- 0A4745452583FDF600CA86E5 /* ReadReceiptsCollection.swift */,
- 0A4745462583FDF600CA86E5 /* ChatThreadMembersCollection.swift */,
- );
- path = Models;
- sourceTree = "";
- };
0A74765A2522918800819FC9 /* Frameworks */ = {
isa = PBXGroup;
children = (
- 0A74765B2522918900819FC9 /* AzureCore.framework */,
+ D110F50B258D6053001FA3CD /* Pods_AzureCommunicationChat.framework */,
+ D110F509258D604B001FA3CD /* AzureCore.framework */,
+ D110F506258D603F001FA3CD /* AzureCommunication.framework */,
+ F1FE3013E797A134E8A6C3B5 /* Pods_AzureCommunicationChatTests.framework */,
);
name = Frameworks;
sourceTree = "";
};
- OBJ_100 /* Util */ = {
+ 0ECA8CD52581838E006760F7 /* Mocks */ = {
isa = PBXGroup;
children = (
- OBJ_101 /* ApplicationUtil.swift */,
- OBJ_102 /* AzureCodable.swift */,
- OBJ_103 /* ConvertingInitializers.swift */,
- OBJ_104 /* Copyable.swift */,
- OBJ_105 /* CryptoUtil.swift */,
- OBJ_106 /* KeychainUtil.swift */,
- OBJ_107 /* ReachabilityManager.swift */,
- OBJ_108 /* ReachabilityManagerType.swift */,
- OBJ_109 /* RegexUtil.swift */,
- OBJ_110 /* StringUtil.swift */,
- OBJ_111 /* URLUtil.swift */,
+ 0ECA8D2E25889619006760F7 /* ListReadReceiptResponse.json */,
+ 0ECA8D28258892CD006760F7 /* AddParticipantResponse.json */,
+ 0ECA8D2225888DD8006760F7 /* ListParticipantsResponse.json */,
+ 0ECA8D1C258887D3006760F7 /* ListMessagesResponse.json */,
+ 0ECA8D1625888667006760F7 /* GetMessageResponse.json */,
+ 0ECA8D0E25888515006760F7 /* NoContent.json */,
+ 0ECA8D0F25888515006760F7 /* SendMessageResponse.json */,
+ 0ECA8CF02582A633006760F7 /* ListThreadsResponse.json */,
+ 0ECA8CEA2582A52D006760F7 /* UnauthorizedError.json */,
+ 0ECA8CDE258188D0006760F7 /* GetThreadResponse.json */,
+ D1BA104525807B0B00CA7130 /* CreateThreadResponse.json */,
+ );
+ path = Mocks;
+ sourceTree = "";
+ };
+ A4D0748296D3AEEA8C0DAB94 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 9FE998BEC9685C476F2AFD1C /* Pods-AzureCommunicationChat.debug.xcconfig */,
+ 04B336EEF1E42CCE389E4935 /* Pods-AzureCommunicationChat.release.xcconfig */,
+ 2CB55B558C70B4045A54487D /* Pods-AzureCommunicationChatTests.debug.xcconfig */,
+ 8E5206D2E09378DA0F9FD0E4 /* Pods-AzureCommunicationChatTests.release.xcconfig */,
+ );
+ name = Pods;
+ path = ../../../Pods;
+ sourceTree = "";
+ };
+ D15E98C925B7C80C00E63DB2 /* Generated */ = {
+ isa = PBXGroup;
+ children = (
+ D15E98CA25B7C80C00E63DB2 /* AzureCommunicationChatClient.swift */,
+ D15E98CB25B7C80C00E63DB2 /* Options */,
+ D15E98DD25B7C80C00E63DB2 /* Util */,
+ D15E98DF25B7C80C00E63DB2 /* Chat.swift */,
+ D15E98E025B7C80C00E63DB2 /* Models */,
+ D15E98F925B7C80C00E63DB2 /* ChatThreadOperation.swift */,
+ );
+ path = Generated;
+ sourceTree = "";
+ };
+ D15E98CB25B7C80C00E63DB2 /* Options */ = {
+ isa = PBXGroup;
+ children = (
+ D15E98CC25B7C80C00E63DB2 /* ChatThreadOperation+AddChatParticipantsOptions.swift */,
+ D15E98CD25B7C80C00E63DB2 /* ChatThreadOperation+ListChatReadReceiptsOptions.swift */,
+ D15E98CE25B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatMessageOptions.swift */,
+ D15E98CF25B7C80C00E63DB2 /* Chat+ListChatThreadsOptions.swift */,
+ D15E98D025B7C80C00E63DB2 /* Chat+DeleteChatThreadOptions.swift */,
+ D15E98D125B7C80C00E63DB2 /* AzureCommunicationChatClientOptions.swift */,
+ D15E98D225B7C80C00E63DB2 /* ChatThreadOperation+SendChatMessageOptions.swift */,
+ D15E98D325B7C80C00E63DB2 /* ChatThreadOperation+SendChatReadReceiptOptions.swift */,
+ D15E98D425B7C80C00E63DB2 /* ChatThreadOperation+RemoveChatParticipantOptions.swift */,
+ D15E98D525B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatThreadOptions.swift */,
+ D15E98D625B7C80C00E63DB2 /* Chat+CreateChatThreadOptions.swift */,
+ D15E98D725B7C80C00E63DB2 /* ChatThreadOperation+SendTypingNotificationOptions.swift */,
+ D15E98D825B7C80C00E63DB2 /* ChatThreadOperation+DeleteChatMessageOptions.swift */,
+ D15E98D925B7C80C00E63DB2 /* ChatThreadOperation+ListChatMessagesOptions.swift */,
+ D15E98DA25B7C80C00E63DB2 /* ChatThreadOperation+GetChatMessageOptions.swift */,
+ D15E98DB25B7C80C00E63DB2 /* Chat+GetChatThreadOptions.swift */,
+ D15E98DC25B7C80C00E63DB2 /* ChatThreadOperation+ListChatParticipantsOptions.swift */,
+ );
+ path = Options;
+ sourceTree = "";
+ };
+ D15E98DD25B7C80C00E63DB2 /* Util */ = {
+ isa = PBXGroup;
+ children = (
+ D15E98DE25B7C80C00E63DB2 /* PatchUtil.swift */,
);
path = Util;
sourceTree = "";
};
+ D15E98E025B7C80C00E63DB2 /* Models */ = {
+ isa = PBXGroup;
+ children = (
+ D15E98E125B7C80C00E63DB2 /* AddChatParticipantsErrors.swift */,
+ D15E98E225B7C80C00E63DB2 /* CommunicationError.swift */,
+ D15E98E325B7C80C00E63DB2 /* SendChatMessageRequest.swift */,
+ D15E98E425B7C80C00E63DB2 /* ChatMessageContent.swift */,
+ D15E98E525B7C80C00E63DB2 /* UpdateChatThreadRequest.swift */,
+ D15E98E625B7C80C00E63DB2 /* ChatMessage.swift */,
+ D15E98E725B7C80C00E63DB2 /* ChatMessagesCollection.swift */,
+ D15E98E825B7C80C00E63DB2 /* CreateChatThreadErrors.swift */,
+ D15E98E925B7C80C00E63DB2 /* ChatMessageReadReceipt.swift */,
+ D15E98EA25B7C80C00E63DB2 /* CreateChatThreadRequest.swift */,
+ D15E98EB25B7C80C00E63DB2 /* CommunicationErrorResponse.swift */,
+ D15E98EC25B7C80C00E63DB2 /* Enumerations.swift */,
+ D15E98ED25B7C80C00E63DB2 /* AddChatParticipantsResult.swift */,
+ D15E98EE25B7C80C00E63DB2 /* ChatMessageReadReceiptsCollection.swift */,
+ D15E98EF25B7C80C00E63DB2 /* ChatThreadsInfoCollection.swift */,
+ D15E98F025B7C80C00E63DB2 /* ChatThread.swift */,
+ D15E98F125B7C80C00E63DB2 /* UpdateChatMessageRequest.swift */,
+ D15E98F225B7C80C00E63DB2 /* CreateChatThreadResult.swift */,
+ D15E98F325B7C80C00E63DB2 /* SendReadReceiptRequest.swift */,
+ D15E98F425B7C80C00E63DB2 /* ChatThreadInfo.swift */,
+ D15E98F525B7C80C00E63DB2 /* SendChatMessageResult.swift */,
+ D15E98F625B7C80C00E63DB2 /* AddChatParticipantsRequest.swift */,
+ D15E98F725B7C80C00E63DB2 /* ChatParticipant.swift */,
+ D15E98F825B7C80C00E63DB2 /* ChatParticipantsCollection.swift */,
+ );
+ path = Models;
+ sourceTree = "";
+ };
+ D16C802B25BA0A0F00C42803 /* Models */ = {
+ isa = PBXGroup;
+ children = (
+ D16C802C25BA0A2400C42803 /* Message.swift */,
+ D16C803225BA0AE400C42803 /* Thread.swift */,
+ D16C803625BA0AFE00C42803 /* Participant.swift */,
+ D16C803A25BA0B0E00C42803 /* ReadReceipt.swift */,
+ D16C803E25BA0B5200C42803 /* MessageContent.swift */,
+ D16C804225BA402100C42803 /* CreateThreadRequest.swift */,
+ D16C804625BA406D00C42803 /* CreateThreadResult.swift */,
+ );
+ path = Models;
+ sourceTree = "";
+ };
+ D1B7EAFA257F03A1004F384A /* Tests */ = {
+ isa = PBXGroup;
+ children = (
+ D1CD93AB258D6C0300409613 /* Util */,
+ D1B7EAFC257F03A1004F384A /* Info.plist */,
+ 0ECA8CD1258181A5006760F7 /* ChatClientUnitTests.swift */,
+ 0ECA8D08258432DC006760F7 /* ChatThreadClientUnitTests.swift */,
+ D1CD93A1258D6BC700409613 /* ChatClientTests.swift */,
+ D1CD93A7258D6BDC00409613 /* ChatThreadClientTests.swift */,
+ );
+ path = Tests;
+ sourceTree = "";
+ };
+ D1CD93AB258D6C0300409613 /* Util */ = {
+ isa = PBXGroup;
+ children = (
+ D1CD93BC258D6E3500409613 /* Recordings */,
+ 0ECA8CD52581838E006760F7 /* Mocks */,
+ D1CD93AC258D6C2500409613 /* RecordingUtil.swift */,
+ D1CD93B2258D6C3D00409613 /* TestUtil.swift */,
+ );
+ path = Util;
+ sourceTree = "";
+ };
+ D1CD93BC258D6E3500409613 /* Recordings */ = {
+ isa = PBXGroup;
+ children = (
+ D13CE64E25BFB69100415467 /* listReadReceipts.json */,
+ D10C3BD925A66D4D00A181E3 /* listThreads.json */,
+ D10C3BD325A660AF00A181E3 /* listMessages.json */,
+ D10C3BCD25A63F7800A181E3 /* listParticipants.json */,
+ D1CD93BD258D6E6200409613 /* addParticipants.json */,
+ D1CD93C3258D6E7300409613 /* createThread.json */,
+ D1CD93C7258D6E8F00409613 /* deleteMessage.json */,
+ D1CD93CB258D6E9E00409613 /* deleteThread.json */,
+ D1CD93CF258D6EAB00409613 /* getThread.json */,
+ D1CD93D7258D6ECD00409613 /* removeParticipant.json */,
+ D1CD93DB258D6EDA00409613 /* sendMessage.json */,
+ D1CD93DF258D6EEA00409613 /* sendReadReceipt.json */,
+ D1CD93E3258D6EF700409613 /* sendTypingNotification.json */,
+ D1CD93E7258D6F0600409613 /* updateMessage.json */,
+ D1CD93EB258D6F1300409613 /* updateTopic.json */,
+ );
+ path = Recordings;
+ sourceTree = "";
+ };
OBJ_113 /* Products */ = {
isa = PBXGroup;
children = (
"AzureCommunicationChat::AzureCommunicationChat::Product" /* AzureCommunicationChat.framework */,
+ D1B7EAED257F02FC004F384A /* AzureCommunicationChatTests.xctest */,
+ D147E62825CE242C001CFB5D /* AzureCommunicationChatUnitTests.xctest */,
);
name = Products;
sourceTree = BUILT_PRODUCTS_DIR;
@@ -280,142 +445,25 @@
OBJ_5 = {
isa = PBXGroup;
children = (
- 0A47451B2583FDF600CA86E5 /* Source */,
- OBJ_51 /* Tests */,
- OBJ_52 /* Dependencies */,
+ OBJ_7 /* Sources */,
+ D1B7EAFA257F03A1004F384A /* Tests */,
OBJ_113 /* Products */,
0A74765A2522918800819FC9 /* Frameworks */,
- OBJ_6 /* Package.swift */,
- 0A4745032583F47600CA86E5 /* README.md */,
+ A4D0748296D3AEEA8C0DAB94 /* Pods */,
);
sourceTree = "";
};
- OBJ_51 /* Tests */ = {
+ OBJ_7 /* Sources */ = {
isa = PBXGroup;
children = (
+ D1565C70256DB74900AF45F8 /* ChatClient.swift */,
+ D1565C73256DB76C00AF45F8 /* ChatThreadClient.swift */,
+ D16C802B25BA0A0F00C42803 /* Models */,
+ D15E98C925B7C80C00E63DB2 /* Generated */,
);
- name = Tests;
- sourceTree = SOURCE_ROOT;
- };
- OBJ_52 /* Dependencies */ = {
- isa = PBXGroup;
- children = (
- OBJ_53 /* AzureSDK */,
- );
- name = Dependencies;
- sourceTree = "";
- };
- OBJ_53 /* AzureSDK */ = {
- isa = PBXGroup;
- children = (
- OBJ_54 /* AzureCommunication */,
- OBJ_55 /* AzureCore */,
- OBJ_112 /* Package.swift */,
- );
- name = AzureSDK;
- sourceTree = SOURCE_ROOT;
- };
- OBJ_54 /* AzureCommunication */ = {
- isa = PBXGroup;
- children = (
- );
- name = AzureCommunication;
- path = ".build/checkouts/azure-sdk-for-ios/sdk/communication/AzureCommunication";
- sourceTree = SOURCE_ROOT;
- };
- OBJ_55 /* AzureCore */ = {
- isa = PBXGroup;
- children = (
- OBJ_56 /* Source */,
- );
- name = AzureCore;
- path = ".build/checkouts/azure-sdk-for-ios/sdk/core/AzureCore";
- sourceTree = SOURCE_ROOT;
- };
- OBJ_56 /* Source */ = {
- isa = PBXGroup;
- children = (
- OBJ_57 /* AzureTask.swift */,
- OBJ_58 /* ClientLogger.swift */,
- OBJ_59 /* DataStructures */,
- OBJ_66 /* Errors.swift */,
- OBJ_67 /* Pipeline */,
- OBJ_95 /* Providers */,
- OBJ_100 /* Util */,
- );
+ name = Sources;
path = Source;
- sourceTree = "";
- };
- OBJ_59 /* DataStructures */ = {
- isa = PBXGroup;
- children = (
- OBJ_60 /* CancellationToken.swift */,
- OBJ_61 /* Collections.swift */,
- OBJ_63 /* XMLMap.swift */,
- OBJ_64 /* XMLModel.swift */,
- OBJ_65 /* XMLTree.swift */,
- );
- path = DataStructures;
- sourceTree = "";
- };
- OBJ_67 /* Pipeline */ = {
- isa = PBXGroup;
- children = (
- OBJ_68 /* Pipeline.swift */,
- OBJ_69 /* PipelineClient.swift */,
- OBJ_70 /* PipelineContext.swift */,
- OBJ_71 /* PipelineRequest.swift */,
- OBJ_72 /* PipelineResponse.swift */,
- OBJ_73 /* PipelineStage.swift */,
- OBJ_74 /* Policies */,
- OBJ_84 /* Transport */,
- );
- path = Pipeline;
- sourceTree = "";
- };
- OBJ_74 /* Policies */ = {
- isa = PBXGroup;
- children = (
- OBJ_75 /* AddDatePolicy.swift */,
- OBJ_76 /* AuthenticationPolicy.swift */,
- OBJ_77 /* ContentDecodePolicy.swift */,
- OBJ_78 /* HeadersPolicy.swift */,
- OBJ_79 /* HeadersValidationPolicy.swift */,
- OBJ_80 /* LoggingPolicy.swift */,
- OBJ_81 /* NormalizeETagPolicy.swift */,
- OBJ_82 /* RequestIdPolicy.swift */,
- OBJ_83 /* UserAgentPolicy.swift */,
- );
- path = Policies;
- sourceTree = "";
- };
- OBJ_84 /* Transport */ = {
- isa = PBXGroup;
- children = (
- OBJ_85 /* DataStringConvertible.swift */,
- OBJ_86 /* HTTPHeader.swift */,
- OBJ_87 /* HTTPMethod.swift */,
- OBJ_88 /* HTTPRequest.swift */,
- OBJ_89 /* HTTPResponse.swift */,
- OBJ_90 /* HTTPTransportStage.swift */,
- OBJ_91 /* TelemetryOptions.swift */,
- OBJ_92 /* TransportOptions.swift */,
- OBJ_93 /* URLHTTPResponse.swift */,
- OBJ_94 /* URLSessionTransport.swift */,
- );
- path = Transport;
- sourceTree = "";
- };
- OBJ_95 /* Providers */ = {
- isa = PBXGroup;
- children = (
- OBJ_96 /* BundleInfoProvider.swift */,
- OBJ_97 /* DeviceProviders.swift */,
- OBJ_98 /* LocaleInfoProvider.swift */,
- OBJ_99 /* PlatformInfoProvider.swift */,
- );
- path = Providers;
- sourceTree = "";
+ sourceTree = SOURCE_ROOT;
};
/* End PBXGroup section */
@@ -424,9 +472,10 @@
isa = PBXNativeTarget;
buildConfigurationList = OBJ_117 /* Build configuration list for PBXNativeTarget "AzureCommunicationChat" */;
buildPhases = (
+ F533BDB375922B2AE143D56C /* [CP] Check Pods Manifest.lock */,
OBJ_120 /* Sources */,
OBJ_161 /* Frameworks */,
- 0A4745B325840B3700CA86E5 /* Format and Lint */,
+ 0ADDCFDA258D2AA900BD5E58 /* Format and Lint */,
);
buildRules = (
);
@@ -437,6 +486,50 @@
productReference = "AzureCommunicationChat::AzureCommunicationChat::Product" /* AzureCommunicationChat.framework */;
productType = "com.apple.product-type.framework";
};
+ D147E62725CE242C001CFB5D /* AzureCommunicationChatUnitTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D147E63225CE242C001CFB5D /* Build configuration list for PBXNativeTarget "AzureCommunicationChatUnitTests" */;
+ buildPhases = (
+ D147E62425CE242C001CFB5D /* Sources */,
+ D147E62525CE242C001CFB5D /* Frameworks */,
+ D147E62625CE242C001CFB5D /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ D147E62F25CE242C001CFB5D /* PBXTargetDependency */,
+ );
+ name = AzureCommunicationChatUnitTests;
+ packageProductDependencies = (
+ D193C45A25CE258F006F769C /* OHHTTPStubsSwift */,
+ );
+ productName = AzureCommunicationChatUnitTests;
+ productReference = D147E62825CE242C001CFB5D /* AzureCommunicationChatUnitTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ D1B7EAEC257F02FC004F384A /* AzureCommunicationChatTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D1B7EAF2257F02FC004F384A /* Build configuration list for PBXNativeTarget "AzureCommunicationChatTests" */;
+ buildPhases = (
+ 54BA66082A36E067F3B5A4A1 /* [CP] Check Pods Manifest.lock */,
+ D1B7EAE9257F02FC004F384A /* Sources */,
+ D1B7EAEA257F02FC004F384A /* Frameworks */,
+ D1B7EAEB257F02FC004F384A /* Resources */,
+ 445ADB16537FA45018DDA5D2 /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ D1CD936D258D688D00409613 /* PBXTargetDependency */,
+ );
+ name = AzureCommunicationChatTests;
+ packageProductDependencies = (
+ D1BA104C25807B7500CA7130 /* OHHTTPStubsSwift */,
+ );
+ productName = AzureCommunicationChatTests;
+ productReference = D1B7EAED257F02FC004F384A /* AzureCommunicationChatTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -444,27 +537,86 @@
isa = PBXProject;
attributes = {
LastSwiftMigration = 9999;
+ LastSwiftUpdateCheck = 1240;
LastUpgradeCheck = 9999;
+ ORGANIZATIONNAME = "Azure SDK Team";
+ TargetAttributes = {
+ D147E62725CE242C001CFB5D = {
+ CreatedOnToolsVersion = 12.4;
+ };
+ D1B7EAEC257F02FC004F384A = {
+ CreatedOnToolsVersion = 12.2;
+ ProvisioningStyle = Automatic;
+ };
+ };
};
buildConfigurationList = OBJ_2 /* Build configuration list for PBXProject "AzureCommunicationChat" */;
- compatibilityVersion = "Xcode 3.2";
+ compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = OBJ_5;
+ packageReferences = (
+ D1BA104B25807B7500CA7130 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */,
+ );
productRefGroup = OBJ_113 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
"AzureCommunicationChat::AzureCommunicationChat" /* AzureCommunicationChat */,
+ D1B7EAEC257F02FC004F384A /* AzureCommunicationChatTests */,
+ D147E62725CE242C001CFB5D /* AzureCommunicationChatUnitTests */,
);
};
/* End PBXProject section */
+/* Begin PBXResourcesBuildPhase section */
+ D147E62625CE242C001CFB5D /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D147E68A25CE2480001CFB5D /* UnauthorizedError.json in Resources */,
+ D147E66725CE2473001CFB5D /* ListMessagesResponse.json in Resources */,
+ D147E66025CE2470001CFB5D /* ListParticipantsResponse.json in Resources */,
+ D147E65925CE246E001CFB5D /* AddParticipantResponse.json in Resources */,
+ D147E65225CE246B001CFB5D /* ListReadReceiptResponse.json in Resources */,
+ D147E67525CE2478001CFB5D /* NoContent.json in Resources */,
+ D147E66E25CE2476001CFB5D /* GetMessageResponse.json in Resources */,
+ D147E69125CE2482001CFB5D /* GetThreadResponse.json in Resources */,
+ D147E68325CE247D001CFB5D /* ListThreadsResponse.json in Resources */,
+ D147E67C25CE247B001CFB5D /* SendMessageResponse.json in Resources */,
+ D147E69825CE2485001CFB5D /* CreateThreadResponse.json in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D1B7EAEB257F02FC004F384A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D1CD93CC258D6E9E00409613 /* deleteThread.json in Resources */,
+ D1CD93EC258D6F1300409613 /* updateTopic.json in Resources */,
+ D1CD93C4258D6E7300409613 /* createThread.json in Resources */,
+ D1CD93D8258D6ECD00409613 /* removeParticipant.json in Resources */,
+ D1CD93DC258D6EDA00409613 /* sendMessage.json in Resources */,
+ D13CE65125BFB6D700415467 /* listReadReceipts.json in Resources */,
+ D1CD93C8258D6E8F00409613 /* deleteMessage.json in Resources */,
+ D10C3BDA25A66D4D00A181E3 /* listThreads.json in Resources */,
+ D1CD93D0258D6EAB00409613 /* getThread.json in Resources */,
+ D10C3BCE25A63F7800A181E3 /* listParticipants.json in Resources */,
+ D1CD93E4258D6EF700409613 /* sendTypingNotification.json in Resources */,
+ D1CD93E0258D6EEA00409613 /* sendReadReceipt.json in Resources */,
+ D1CD93E8258D6F0600409613 /* updateMessage.json in Resources */,
+ D1CD93BE258D6E6200409613 /* addParticipants.json in Resources */,
+ D10C3BD425A660AF00A181E3 /* listMessages.json in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
/* Begin PBXShellScriptBuildPhase section */
- 0A4745B325840B3700CA86E5 /* Format and Lint */ = {
+ 0ADDCFDA258D2AA900BD5E58 /* Format and Lint */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -482,132 +634,320 @@
shellPath = /bin/sh;
shellScript = "BUILD_PATH=$(pwd)\nROOT_PATH=$(pwd | rev | cut -d'/' -f4- | rev) \n$ROOT_PATH/Scripts/swiftlint.sh $BUILD_PATH\n";
};
+ 445ADB16537FA45018DDA5D2 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-AzureCommunicationChatTests/Pods-AzureCommunicationChatTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-AzureCommunicationChatTests/Pods-AzureCommunicationChatTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AzureCommunicationChatTests/Pods-AzureCommunicationChatTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 54BA66082A36E067F3B5A4A1 /* [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-AzureCommunicationChatTests-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;
+ };
+ F533BDB375922B2AE143D56C /* [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-AzureCommunicationChat-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;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ D147E62425CE242C001CFB5D /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D147E64025CE244F001CFB5D /* ChatThreadClientUnitTests.swift in Sources */,
+ D147E64725CE2459001CFB5D /* TestUtil.swift in Sources */,
+ D147E63925CE244A001CFB5D /* ChatClientUnitTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ D1B7EAE9257F02FC004F384A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D1CD93A8258D6BDC00409613 /* ChatThreadClientTests.swift in Sources */,
+ D1CD93AD258D6C2500409613 /* RecordingUtil.swift in Sources */,
+ D1CD93A2258D6BC700409613 /* ChatClientTests.swift in Sources */,
+ D1CD93B3258D6C3D00409613 /* TestUtil.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
OBJ_120 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 0;
files = (
- 0A4745592583FDF700CA86E5 /* AzureCommunicationChatService+SendChatReadReceiptOptions.swift in Sources */,
- 0A47456C2583FDF700CA86E5 /* ErrorType.swift in Sources */,
- 0A47455B2583FDF700CA86E5 /* AzureCommunicationChatService+RemoveChatThreadMemberOptions.swift in Sources */,
- 0A4745512583FDF600CA86E5 /* AzureCommunicationChatService+GetChatThreadOptions.swift in Sources */,
- 0A4745522583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatThreadOptions.swift in Sources */,
- 0A47455C2583FDF700CA86E5 /* PatchUtil.swift in Sources */,
- 0A47454D2583FDF600CA86E5 /* AzureCommunicationChatClientOptions.swift in Sources */,
- 0A4745502583FDF600CA86E5 /* AzureCommunicationChatService+SendChatMessageOptions.swift in Sources */,
- 0A4745652583FDF700CA86E5 /* Enumerations.swift in Sources */,
- 0A4745602583FDF700CA86E5 /* ChatMessage.swift in Sources */,
- 0A4745532583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatMessageOptions.swift in Sources */,
- 0A4745702583FDF700CA86E5 /* ChatThreadMembersCollection.swift in Sources */,
- 0A4745692583FDF700CA86E5 /* UpdateChatMessageRequest.swift in Sources */,
- 0A4745562583FDF600CA86E5 /* AzureCommunicationChatService+AddChatThreadMembersOptions.swift in Sources */,
- 0A4745732583FDF700CA86E5 /* Custom.swift in Sources */,
- 0A4745642583FDF700CA86E5 /* ReadReceipt.swift in Sources */,
- 0A4745572583FDF600CA86E5 /* AzureCommunicationChatService+GetChatMessageOptions.swift in Sources */,
- 0A4745662583FDF700CA86E5 /* IndividualStatusResponse.swift in Sources */,
- 0A47455F2583FDF700CA86E5 /* UpdateChatThreadRequest.swift in Sources */,
- 0A4745542583FDF600CA86E5 /* AzureCommunicationChatService+ListChatMessagesOptions.swift in Sources */,
- 0A4745552583FDF600CA86E5 /* AzureCommunicationChatService+ListChatReadReceiptsOptions.swift in Sources */,
- 0A47456E2583FDF700CA86E5 /* SendChatMessageResult.swift in Sources */,
- 0A4745672583FDF700CA86E5 /* ChatThreadsInfoCollection.swift in Sources */,
- 0A4745722583FDF700CA86E5 /* AzureCommuncationChatClient+Convenience.swift in Sources */,
- 0A47454A2583FDF600CA86E5 /* AzureCommunicationChatClient.swift in Sources */,
- 0A47454F2583FDF600CA86E5 /* AzureCommunicationChatService+DeleteChatThreadOptions.swift in Sources */,
- 0A47454B2583FDF600CA86E5 /* AzureCommunicationChatService+CreateChatThreadOptions.swift in Sources */,
- 0A47456D2583FDF700CA86E5 /* ChatThreadInfo.swift in Sources */,
- 0A4745622583FDF700CA86E5 /* CreateChatThreadRequest.swift in Sources */,
- 0A4745582583FDF700CA86E5 /* AzureCommunicationChatService+ListChatThreadMembersOptions.swift in Sources */,
- 0A4745712583FDF700CA86E5 /* AzureCommunicationChatService.swift in Sources */,
- 0A47454E2583FDF600CA86E5 /* AzureCommunicationChatService+ListChatThreadsOptions.swift in Sources */,
- 0A47456F2583FDF700CA86E5 /* ReadReceiptsCollection.swift in Sources */,
- 0A47456B2583FDF700CA86E5 /* ChatThreadMember.swift in Sources */,
- 0A4745612583FDF700CA86E5 /* ChatMessagesCollection.swift in Sources */,
- 0A47455A2583FDF700CA86E5 /* AzureCommunicationChatService+SendTypingNotificationOptions.swift in Sources */,
- 0A47454C2583FDF600CA86E5 /* AzureCommunicationChatService+UpdateChatMessageOptions.swift in Sources */,
- 0A4745682583FDF700CA86E5 /* ChatThread.swift in Sources */,
- 0A47455D2583FDF700CA86E5 /* SendChatMessageRequest.swift in Sources */,
- 0A47456A2583FDF700CA86E5 /* SendReadReceiptRequest.swift in Sources */,
- 0A47455E2583FDF700CA86E5 /* MultiStatusResponse.swift in Sources */,
- 0A4745632583FDF700CA86E5 /* AddChatThreadMembersRequest.swift in Sources */,
+ D1565C71256DB74900AF45F8 /* ChatClient.swift in Sources */,
+ D1565C74256DB76C00AF45F8 /* ChatThreadClient.swift in Sources */,
+ D15E990525B7C80C00E63DB2 /* Chat+CreateChatThreadOptions.swift in Sources */,
+ D15E991925B7C80C00E63DB2 /* Enumerations.swift in Sources */,
+ D15E990F25B7C80C00E63DB2 /* CommunicationError.swift in Sources */,
+ D16C803325BA0AE400C42803 /* Thread.swift in Sources */,
+ D16C804725BA406D00C42803 /* CreateThreadResult.swift in Sources */,
+ D15E990425B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatThreadOptions.swift in Sources */,
+ D15E992225B7C80C00E63DB2 /* SendChatMessageResult.swift in Sources */,
+ D15E990A25B7C80C00E63DB2 /* Chat+GetChatThreadOptions.swift in Sources */,
+ D15E98FB25B7C80C00E63DB2 /* ChatThreadOperation+AddChatParticipantsOptions.swift in Sources */,
+ D15E990725B7C80C00E63DB2 /* ChatThreadOperation+DeleteChatMessageOptions.swift in Sources */,
+ D15E992325B7C80C00E63DB2 /* AddChatParticipantsRequest.swift in Sources */,
+ D15E990C25B7C80C00E63DB2 /* PatchUtil.swift in Sources */,
+ D15E991825B7C80C00E63DB2 /* CommunicationErrorResponse.swift in Sources */,
+ D15E991D25B7C80C00E63DB2 /* ChatThread.swift in Sources */,
+ D15E991225B7C80C00E63DB2 /* UpdateChatThreadRequest.swift in Sources */,
+ D15E991525B7C80C00E63DB2 /* CreateChatThreadErrors.swift in Sources */,
+ D15E990225B7C80C00E63DB2 /* ChatThreadOperation+SendChatReadReceiptOptions.swift in Sources */,
+ D15E991A25B7C80C00E63DB2 /* AddChatParticipantsResult.swift in Sources */,
+ D15E991E25B7C80C00E63DB2 /* UpdateChatMessageRequest.swift in Sources */,
+ D15E991625B7C80C00E63DB2 /* ChatMessageReadReceipt.swift in Sources */,
+ D15E991725B7C80C00E63DB2 /* CreateChatThreadRequest.swift in Sources */,
+ D15E990625B7C80C00E63DB2 /* ChatThreadOperation+SendTypingNotificationOptions.swift in Sources */,
+ D16C803F25BA0B5200C42803 /* MessageContent.swift in Sources */,
+ D15E98FF25B7C80C00E63DB2 /* Chat+DeleteChatThreadOptions.swift in Sources */,
+ D15E990025B7C80C00E63DB2 /* AzureCommunicationChatClientOptions.swift in Sources */,
+ D15E990325B7C80C00E63DB2 /* ChatThreadOperation+RemoveChatParticipantOptions.swift in Sources */,
+ D15E992425B7C80C00E63DB2 /* ChatParticipant.swift in Sources */,
+ D15E991025B7C80C00E63DB2 /* SendChatMessageRequest.swift in Sources */,
+ D15E990825B7C80C00E63DB2 /* ChatThreadOperation+ListChatMessagesOptions.swift in Sources */,
+ D16C804325BA402100C42803 /* CreateThreadRequest.swift in Sources */,
+ D15E98FE25B7C80C00E63DB2 /* Chat+ListChatThreadsOptions.swift in Sources */,
+ D15E991C25B7C80C00E63DB2 /* ChatThreadsInfoCollection.swift in Sources */,
+ D15E98FA25B7C80C00E63DB2 /* AzureCommunicationChatClient.swift in Sources */,
+ D15E98FC25B7C80C00E63DB2 /* ChatThreadOperation+ListChatReadReceiptsOptions.swift in Sources */,
+ D15E992125B7C80C00E63DB2 /* ChatThreadInfo.swift in Sources */,
+ D15E991425B7C80C00E63DB2 /* ChatMessagesCollection.swift in Sources */,
+ D15E990D25B7C80C00E63DB2 /* Chat.swift in Sources */,
+ D15E991325B7C80C00E63DB2 /* ChatMessage.swift in Sources */,
+ D15E990125B7C80C00E63DB2 /* ChatThreadOperation+SendChatMessageOptions.swift in Sources */,
+ D15E98FD25B7C80C00E63DB2 /* ChatThreadOperation+UpdateChatMessageOptions.swift in Sources */,
+ D15E991F25B7C80C00E63DB2 /* CreateChatThreadResult.swift in Sources */,
+ D15E990B25B7C80C00E63DB2 /* ChatThreadOperation+ListChatParticipantsOptions.swift in Sources */,
+ D15E992525B7C80C00E63DB2 /* ChatParticipantsCollection.swift in Sources */,
+ D15E992025B7C80C00E63DB2 /* SendReadReceiptRequest.swift in Sources */,
+ D15E991125B7C80C00E63DB2 /* ChatMessageContent.swift in Sources */,
+ D15E990E25B7C80C00E63DB2 /* AddChatParticipantsErrors.swift in Sources */,
+ D15E991B25B7C80C00E63DB2 /* ChatMessageReadReceiptsCollection.swift in Sources */,
+ D16C802D25BA0A2400C42803 /* Message.swift in Sources */,
+ D16C803725BA0AFE00C42803 /* Participant.swift in Sources */,
+ D15E990925B7C80C00E63DB2 /* ChatThreadOperation+GetChatMessageOptions.swift in Sources */,
+ D16C803B25BA0B0E00C42803 /* ReadReceipt.swift in Sources */,
+ D15E992625B7C80C00E63DB2 /* ChatThreadOperation.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ D147E62F25CE242C001CFB5D /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = "AzureCommunicationChat::AzureCommunicationChat" /* AzureCommunicationChat */;
+ targetProxy = D147E62E25CE242C001CFB5D /* PBXContainerItemProxy */;
+ };
+ D1CD936D258D688D00409613 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = "AzureCommunicationChat::AzureCommunicationChat" /* AzureCommunicationChat */;
+ targetProxy = D1CD936C258D688D00409613 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin XCBuildConfiguration section */
- OBJ_118 /* Debug */ = {
+ D147E63025CE242C001CFB5D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CODE_SIGN_STYLE = Automatic;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ INFOPLIST_FILE = Tests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.azure.communication.AzureCommunicationChatUnitTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ D147E63125CE242C001CFB5D /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CODE_SIGN_STYLE = Automatic;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ INFOPLIST_FILE = Tests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 14.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = com.azure.communication.AzureCommunicationChatUnitTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ D1B7EAF3257F02FC004F384A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2CB55B558C70B4045A54487D /* Pods-AzureCommunicationChatTests.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)";
+ INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.azure.communication.AzureCommunicationChatTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ D1B7EAF4257F02FC004F384A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 8E5206D2E09378DA0F9FD0E4 /* Pods-AzureCommunicationChatTests.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)";
+ INFOPLIST_FILE = "$(SRCROOT)/Tests/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = com.azure.communication.AzureCommunicationChatTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ OBJ_118 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9FE998BEC9685C476F2AFD1C /* Pods-AzureCommunicationChat.debug.xcconfig */;
+ buildSettings = {
+ APPLICATION_EXTENSION_API_ONLY = NO;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
- ENABLE_TESTABILITY = YES;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PLATFORM_DIR)/Developer/Library/Frameworks",
- );
- HEADER_SEARCH_PATHS = "$(inherited)";
- INFOPLIST_FILE = AzureCommunicationChat.xcodeproj/AzureCommunicationChat_Info.plist;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx";
- MACOSX_DEPLOYMENT_TARGET = 10.15;
- MARKETING_VERSION = "1.0.0-beta.7";
- OTHER_CFLAGS = "$(inherited)";
- OTHER_LDFLAGS = "$(inherited)";
- OTHER_SWIFT_FLAGS = "$(inherited)";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ NEW_SETTING = "";
PRODUCT_BUNDLE_IDENTIFIER = com.azure.communication.AzureCommunicationChat;
- PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
- TARGET_NAME = AzureCommunicationChat;
- TVOS_DEPLOYMENT_TARGET = 12.0;
- USE_HEADERMAP = YES;
- WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
OBJ_119 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 04B336EEF1E42CCE389E4935 /* Pods-AzureCommunicationChat.release.xcconfig */;
buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
+ APPLICATION_EXTENSION_API_ONLY = NO;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
- ENABLE_TESTABILITY = YES;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PLATFORM_DIR)/Developer/Library/Frameworks",
- );
- HEADER_SEARCH_PATHS = "$(inherited)";
- INFOPLIST_FILE = AzureCommunicationChat.xcodeproj/AzureCommunicationChat_Info.plist;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) $(TOOLCHAIN_DIR)/usr/lib/swift/macosx";
- MACOSX_DEPLOYMENT_TARGET = 10.15;
- MARKETING_VERSION = "1.0.0-beta.7";
- OTHER_CFLAGS = "$(inherited)";
- OTHER_LDFLAGS = "$(inherited)";
- OTHER_SWIFT_FLAGS = "$(inherited)";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ NEW_SETTING = "";
PRODUCT_BUNDLE_IDENTIFIER = com.azure.communication.AzureCommunicationChat;
- PRODUCT_MODULE_NAME = "$(TARGET_NAME:c99extidentifier)";
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
- SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited)";
SWIFT_VERSION = 5.0;
- TARGET_NAME = AzureCommunicationChat;
- TVOS_DEPLOYMENT_TARGET = 12.0;
- USE_HEADERMAP = YES;
- WATCHOS_DEPLOYMENT_TARGET = 2.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
@@ -739,6 +1079,24 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ D147E63225CE242C001CFB5D /* Build configuration list for PBXNativeTarget "AzureCommunicationChatUnitTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D147E63025CE242C001CFB5D /* Debug */,
+ D147E63125CE242C001CFB5D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ D1B7EAF2257F02FC004F384A /* Build configuration list for PBXNativeTarget "AzureCommunicationChatTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D1B7EAF3257F02FC004F384A /* Debug */,
+ D1B7EAF4257F02FC004F384A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
OBJ_117 /* Build configuration list for PBXNativeTarget "AzureCommunicationChat" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -758,6 +1116,30 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
+
+/* Begin XCRemoteSwiftPackageReference section */
+ D1BA104B25807B7500CA7130 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/AliSoftware/OHHTTPStubs.git";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 9.1.0;
+ };
+ };
+/* End XCRemoteSwiftPackageReference section */
+
+/* Begin XCSwiftPackageProductDependency section */
+ D193C45A25CE258F006F769C /* OHHTTPStubsSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = D1BA104B25807B7500CA7130 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */;
+ productName = OHHTTPStubsSwift;
+ };
+ D1BA104C25807B7500CA7130 /* OHHTTPStubsSwift */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = D1BA104B25807B7500CA7130 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */;
+ productName = OHHTTPStubsSwift;
+ };
+/* End XCSwiftPackageProductDependency section */
};
rootObject = OBJ_1 /* Project object */;
}
diff --git a/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/xcshareddata/xcschemes/AzureCommunicationChat.xcscheme b/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/xcshareddata/xcschemes/AzureCommunicationChat.xcscheme
index 659e420f..97191499 100644
--- a/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/xcshareddata/xcschemes/AzureCommunicationChat.xcscheme
+++ b/sdk/communication/AzureCommunicationChat/AzureCommunicationChat.xcodeproj/xcshareddata/xcschemes/AzureCommunicationChat.xcscheme
@@ -28,6 +28,26 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
+
+
+
+
+
+
+
+
.communication.azure.com") else {
- // Display error message
-}
-
-let authPolicy = try CommunicationTokenCredentialPolicy(
- credential: credential ?? CommunicationTokenCredential(token: "")
-)
-let options = AzureCommunicationChatClientOptions(
- logger: ClientLoggers.default,
- dispatchQueue: self.queue
-)
-let client = AzureCommunicationChatClient(baseUrl: baseUrl, authPolicy: authPolicy, withOptions: options)
-```
-
## Key concepts
### User and User Access Tokens
User access tokens enable you to build client applications that directly authenticate to Azure Communication Services. Refer [here](https://docs.microsoft.com/azure/communication-services/quickstarts/access-tokens) to learn how to create a user and issue a User Access Token.
-The id for the user created above will be necessary later to add said user as a member of a new chat thread. The initiator of the create request must be in the list of members of the chat thread.
+The id for the user created above will be necessary later to add said user as a participant of a new chat thread. The initiator of the create request must be in the list of participants of the chat thread.
### Chat Thread
-A chat conversation is represented by a chat thread. Each user in the thread is called a thread member. Thread members can chat with one another privately in a 1:1 chat or huddle up in a 1:N group chat.
+A chat conversation is represented by a chat thread. Each user in the thread is called a thread participant. Thread participants can chat with one another privately in a 1:1 chat or huddle up in a 1:N group chat.
Using the APIs, users can also send typing indicators when typing a message and read receipts for the messages they have read in a chat thread. To learn more, read about chat concepts [here](https://docs.microsoft.com/azure/communication-services/concepts/chat/concepts).
-### Chat Operations
+### ChatClient
-Once you initialize an `AzureCommunicationChatClient` class, you can perform the following chat operations:
+`ChatClient` is used for performing chat thread operations, listed below.
+
+#### Initialization
+
+To instantiate ChatClient you will need the CommunicationServices resource endpoint, a CommunicationUserCredential created from a User Access Token, and optional options to create the client with.
+
+```swift
+import AzureCommunication
+import AzureCommunicationChat
+import AzureCore
+
+let endpoint = ""
+
+let credential = try CommunicationTokenCredential(<"user_access_token>")
+
+let options = AzureCommunicationChatClientOptions(
+ logger: ClientLoggers.default,
+ dispatchQueue: self.queue
+)
+
+let chatClient = ChatClient(endpoint: endpoint, credential: credential, withOptions: options)
+
+```
#### Thread Operations
+ChatClient supports the following methods, see the links below for examples.
+
- [Create a thread](#create-a-thread)
- [Get a thread](#get-a-thread)
- [List threads](#list-threads)
-- [Update a thread](#update-a-thread)
- [Delete a thread](#delete-a-thread)
+- [Get a thread client](#get-a-thread-client)
+
+### ChatThreadClient
+
+`ChatThreadClient` provides methods for operations within a chat thread, such as messaging and managing participants.
+
+#### Initialization
+
+ChatThreadClients should be created through the ChatClient. A ChatThreadClient is associated with a specific chat thread and is used to perform operations within the thread. See the list below for examples of each operation that ChatThreadClient supports.
#### Message Operations
@@ -150,11 +159,11 @@ Once you initialize an `AzureCommunicationChatClient` class, you can perform the
- [Update a message](#update-a-message)
- [Delete a message](#delete-a-message)
-#### Thread Member Operations
+#### Thread Participant Operations
-- [Get thread members](#get-thread-members)
-- [Add thread members](#add-thread-members)
-- [Remove a thread member](#remove-a-thread-member)
+- [Get thread participants](#get-thread-participants)
+- [Add thread participants](#add-thread-participants)
+- [Remove a thread participant](#remove-a-thread-participant)
#### Events Operations
@@ -162,43 +171,36 @@ Once you initialize an `AzureCommunicationChatClient` class, you can perform the
- [Send read receipt](#send-read-receipt)
- [Get read receipts](#get-read-receipts)
+#### Thread Update Operations
+- [Update the thread topic](#update-thread-topic)
+
## Examples
### Thread Operations
#### Create a thread
-Use the `create` method to create a thread.
+Use the `create` method of `ChatClient` to create a new thread.
-- `CreateChatThreadRequest` is the model to pass to this method.
-- `topic` is used to provide a topic for the thread.
-- `members` is used to list the `ChatThreadMember` to be added to the thread.
-- `id`, required, is the `CommunicationUser.identifier` you created before. Refer to [User and User Access Tokens](#user-and-user-access-tokens).
-- `displayName`, optional, is the display name for the thread member.
-- `shareHistoryTime`, optional, is the time from which the chat history is shared with the member.
+- `CreateThreadRequest` is the model to pass to this method. It contains the participants to add to the thread as well as the topic of the thread.
-`MultiStatusResponse` is the result returned from creating a thread. It has a 'multipleStatus' property which represents a list of `IndividualStatusResponse`.
+- `CreateThreadResult` is the result returned from creating a thread.
+- `thread` is the chat Thread that was created
+- `errors` contains an array of errors for any invalid participants that failed to be added to the chat thread.
```swift
-let thread = CreateChatThreadRequest(
+let thread = CreateThreadRequest(
topic: "General",
- members: [ChatThreadMember(
+ participants: [Participant(
id: ,
// Id of this needs to match with the Auth token
- displayName: "initial member"
+ displayName: "initial participant"
)]
)
-client.create(chatThread: thread) { result, _ in
+chatClient.create(thread: thread) { result, _ in
switch result {
- case let .success(createThreadResponse):
- var threadId: String? = nil
- for response in createThreadResponse.multipleStatus ?? [] {
- if response.id?.hasSuffix("@thread.v2") ?? false,
- response.type ?? "" == "Thread" {
- threadId = response.id
- }
- }
+ case let .success(chatThreadResult):
// Take further action
case let .failure(error):
@@ -209,14 +211,14 @@ client.create(chatThread: thread) { result, _ in
#### Get a thread
-Use the `getChatThread` method to retrieve a thread.
+Use the `get` method of `ChatClient` to retrieve a thread.
-- `chatThreadId` is the unique ID of the thread.
+- `thread` is the unique ID of the thread.
```swift
-client.getChatThread(chatThreadId: threadId) { result, _ in
+chatClient.get(thread: threadId) { result, _ in
switch result {
- case let .success(thread):
+ case let .success(chatThread):
// Take further action
case let .failure(error):
@@ -227,7 +229,7 @@ client.getChatThread(chatThreadId: threadId) { result, _ in
#### List threads
-Use the `listChatThreads` method to retrieve a list of threads.
+Use the `listThreads` method to retrieve a list of threads.
- `ListChatThreadsOptions` is the object representing the options to pass.
- `maxPageSize`, optional, is the maximum number of messages to be returned per page.
@@ -238,7 +240,7 @@ Use the `listChatThreads` method to retrieve a list of threads.
```swift
import AzureCore
let options = ListChatThreadsOptions(maxPageSize: 1)
-client.listChatThreads(withOptions: options) { result, _ in
+chatClient.listThreads(withOptions: options) { result, _ in
switch result {
case let .success(listThreadsResponse):
var iterator = listThreadsResponse.syncIterator
@@ -252,38 +254,15 @@ client.listChatThreads(withOptions: options) { result, _ in
}
```
-#### Update a thread
-
-Use the `update` method to update a thread's properties.
-
-- `UpdateChatThreadRequest` is the model to pass to this method.
-- `topic` is used to give a thread a new topic.
-- `chatThreadId` is the unique ID of the thread.
-
-```swift
- let thread = UpdateChatThreadRequest(
- topic: "A new topic update with update()"
-)
-
-client.update(chatThread: thread, chatThreadId: threadId) { result, _ in
- switch result {
- case .success:
- // Take further action
-
- case let .failure(error):
- // Display error message
- }
-}
-```
#### Delete a thread
-Use `deleteChatThread` method to delete a thread.
+Use the `delete` method of `ChatClient` to delete a thread.
-- `chatThreadId` is the unique ID of the thread.
+- `thread` is the unique ID of the thread.
```swift
-client.deleteChatThread(chatThreadId: threadId) { result, httpResponse in
+chatClient.delete(thread: threadId) { result, httpResponse in
switch result {
case .success:
// Take further action
@@ -298,24 +277,22 @@ client.deleteChatThread(chatThreadId: threadId) { result, httpResponse in
#### Send a message
-Use the `send` method to send a message to a thread.
+Use the `send` method of `ChatThreadClient` to send a message to a thread.
- `SendChatMessageRequest` is the model to pass to this method.
-- `priority` is used to specify the message priority level, such as 'normal' or 'high', if not specified, 'normal' will be set.
- `content`, required, is used to provide the chat message content.
- `senderDisplayName` is used to specify the display name of the sender, if not specified, an empty name will be set.
-- `chatThreadId` is the unique ID of the thread.
+- `type` is the type of message being sent, the supported types are text and html.
`SendChatMessageResult` is the response returned from sending a message, it contains an id, which is the unique ID of the message.
```swift
let message = SendChatMessageRequest(
- priority: ChatMessagePriority.high,
content: "Test message 1",
senderDisplayName: "An Important person"
)
-getClient().send(chatMessage: message, chatThreadId: threadId) { result, _ in
+chatThreadClient.send(message: message) { result, _ in
switch result {
case let .success(createMessageResponse):
// Take further action
@@ -328,15 +305,14 @@ getClient().send(chatMessage: message, chatThreadId: threadId) { result, _ in
#### Get a message
-Use the `getChatMessage` method to retrieve a message in a thread.
+Use the `get` method of `ChatThreadClient` to retrieve a message in a thread.
-- `chatThreadId` is the unique ID of the thread.
-- `chatMessageId` is the unique ID of the message.
+- `message` is the unique ID of the message.
-`ChatMessage` is the response returned from getting a message.
+`Message` is the response returned from getting a message.
```swift
-client.getChatMessage(chatThreadId: threadId, chatMessageId: messageId) { result, _ in
+chatThreadClient.get(message: messageId) { result, _ in
switch result {
case let .success(message):
// Take further action
@@ -349,14 +325,13 @@ client.getChatMessage(chatThreadId: threadId, chatMessageId: messageId) { result
#### List messages
-Use the `listChatMessages` method to retrieve messages in a thread.
+Use the `listMessages` method of `ChatThreadClient` to retrieve messages in a thread.
-- `ListChatMessagesOptions` is the object representing the options to pass.
+- `ListChatMessagesOptions` is the optional object representing the options to pass.
- `maxPageSize`, optional, is the maximum number of messages to be returned per page.
- `startTime`, optional, is the thread start time to consider in the query.
-- `chatThreadId` is the unique ID of the thread.
-`` is the response returned from listing messages
+`` is the response returned from listing messages
```swift
let dateFormatter = DateFormatter()
@@ -369,7 +344,7 @@ if let date = dateFormatter.date(from: "2020-08-27T17:55:50Z") {
)
}
-client.listChatMessages(chatThreadId: threadId, withOptions: options) { result, _ in
+client.listMessages(withOptions: options) { result, _ in
switch result {
case let .success(listMessagesResponse):
var iterator = listMessagesResponse.syncIterator
@@ -385,20 +360,20 @@ client.listChatMessages(chatThreadId: threadId, withOptions: options) { result,
#### Update a message
-Use the `update` method to update a message in a thread.
+Use the `update` method of `ChatThreadClient` to update a message in a thread.
- `UpdateChatMessageRequest` is the model to pass to this method.
-- `priority` is the chat message priority `ChatMessagePriority`, such as 'Normal' or 'High', if not specified, 'Normal' will be set.
- `content` is the message content to be updated.
-- `chatThreadId` is the unique ID of the thread.
- `chatMessageId` is the unique ID of the message.
+-`messageId` is the unique id of the message.
+
```swift
let message = UpdateChatMessageRequest(
content: "A message content with update()"
)
-getClient().update(chatMessage: message, chatThreadId: threadId, chatMessageId: messageId) { result, _ in
+chatThreadClient.update(message: message, messageId: messageId) { result, _ in
switch result {
case .success(_):
// Take further action
@@ -411,13 +386,12 @@ getClient().update(chatMessage: message, chatThreadId: threadId, chatMessageId:
#### Delete a message
-Use the `deleteChatMessage` method to delete a message in a thread.
+Use the `delete` method of `ChatThreadClient` to delete a message in a thread.
-- `chatThreadId` is the unique ID of the thread.
-- `chatMessageId` is the unique ID of the message.
+- `message` is the unique ID of the message.
```swift
-getClient().deleteChatMessage(chatThreadId: threadId, chatMessageId: messageId) { result, _ in
+chatThreadClient.delete(message: messageId) { result, _ in
switch result {
case .success:
// Take further action
@@ -428,22 +402,21 @@ getClient().deleteChatMessage(chatThreadId: threadId, chatMessageId: messageId)
}
```
-### Thread Member Operations
+### Thread Participant Operations
-#### Get thread members
+#### Get thread participants
-Use the `listChatThreadMembers` method to retrieve the members participating in a thread.
+Use the `listParticipants` of `ChatThreadClient` method to retrieve the participants of the thread.
-- `chatThreadId` is the unique ID of the thread.
-`PagedCollection` is the response returned from listing members.
+`PagedCollection` is the response returned from listing participants.
```swift
-client.listChatThreadMembers(chatThreadId: threadId) { result, _ in
+chatThreadClient.listParticipants() { result, _ in
switch result {
- case let .success(threadmembers):
- var iterator = threadmembers.syncIterator
- while let threadMember = iterator.next() {
+ case let .success(threadParticipants):
+ var iterator = threadParticipants.syncIterator
+ while let threadParticipants = iterator.next() {
// Take further action
}
@@ -453,27 +426,23 @@ client.listChatThreadMembers(chatThreadId: threadId) { result, _ in
}
```
-#### Add thread members
+#### Add thread participants
-Use the `add` method to add members to a thread.
+Use the `add` method to add participants to a thread.
-- `AddChatThreadMembersRequest` is used to list the `ChatThreadMember`s to be added to the thread.
-- `id`, required, is the `CommunicationUser.identifier` you created before. Refer to [User and User Access Tokens](#user-and-user-access-tokens).
-- `displayName`, optional, is the display name for the thread member.
-- `shareHistoryTime`, optional, is the time from which the chat history is shared with the member.
-- `chatThreadId` is the unique ID of the thread.
+- `participants` is an array of `Participant`'s to add
+- `AddChatParticipantsResult` is the model returned, it contains an errors property that has an array of any invalid participants that failed to be added to the chat.
```swift
-let threadMembers = AddChatThreadMembersRequest(
- members: [ChatThreadMember(
+let threadParticipants = [Participant(
id: userId,
- displayName: "a new member"
+ displayName: "a new participant"
)]
-)
-client.add(chatThreadMembers: threadMembers, chatThreadId: threadId) { result, _ in
+
+chatThreadClient.add(participants: threadParticipants) { result, _ in
switch result {
- case .success:
- // Take further action
+ case let .success(result):
+ // Check for invalid participants
case let .failure(error):
// Display error message
@@ -481,15 +450,14 @@ client.add(chatThreadMembers: threadMembers, chatThreadId: threadId) { result, _
}
```
-#### Remove a thread member
+#### Remove a thread participant
-Use the `removeChatThreadMember` method to remove a member from a thread.
+Use the `remove` method of `ChatThreadClient` to remove a participant from a thread.
-- `chatThreadId` is the unique ID of the thread.
-- `chatMemberId` is the user ID in the chat thread's member list.
+- `participant` is id of the participant to remove.
```swift
-client.removeChatThreadMember(chatThreadId: threadId, chatMemberId: memberId) { result, _ in
+chatThreadClient.remove(participant: participantId) { result, _ in
switch result {
case .success:
// Take further action
@@ -504,10 +472,10 @@ client.removeChatThreadMember(chatThreadId: threadId, chatMemberId: memberId) {
#### Send a typing notification
-Use the `sendTypingNotification` method to post a typing notification event to a thread, on behalf of a user.
+Use the `sendTypingNotification` method of `ChatThreadClient` to post a typing notification event to a thread, on behalf of a user.
```swift
-client.sendTypingNotification(chatThreadId: threadId) { result, _ in
+chatThreadClient.sendTypingNotification() { result, _ in
switch result {
case .success:
// Take further action
@@ -520,16 +488,13 @@ client.sendTypingNotification(chatThreadId: threadId) { result, _ in
#### Send read receipt
-Use the `send` method to post a read receipt event to a thread, on behalf of a user.
+Use the `sendReadReceipt` method of `ChatThreadClient` to post a read receipt event to a thread, on behalf of a user.
-- `SendReadReceiptRequest` is the model to be passed to this method.
-- `chatMessageId` is the unique ID of the message.
-- `chatThreadId` is the unique ID of the thread.
+-`forMessage` refers to the unique ID of the message that the read receipt is for.
```swift
-let readReceipt = SendReadReceiptRequest(chatMessageId: messageId)
-client.send(chatReadReceipt: readReceipt, chatThreadId: threadId) { result, _ in
+chatThreadClient.sendReadReceipt(forMessage: messageId) { result, _ in
switch result {
case .success:
// Take further action
@@ -542,14 +507,12 @@ client.send(chatReadReceipt: readReceipt, chatThreadId: threadId) { result, _ in
#### Get read receipts
-Use the `listChatReadReceipts` method to retrieve read receipts for a thread.
-
-- `chatThreadId` is the unique ID of the thread.
+Use the `listReadReceipts` method of `ChatThreadClient` to retrieve read receipts for a thread.
`PagedCollection` is the response returned from listing read receipts.
```swift
-client.listChatReadReceipts(chatThreadId: threadId) { result, _ in
+chatThreadClient.listReadReceipts() { result, _ in
switch result {
case let .success(readReceipts):
var iterator = readReceipts.syncIterator
@@ -563,12 +526,34 @@ client.listChatReadReceipts(chatThreadId: threadId) { result, _ in
}
```
+### Thread Update Operations
+
+#### Update the thread's topic
+
+Use the `update` method of `ChatThreadClient` to update a thread's topic.
+
+- `topic` is the thread's new topic.
+
+```swift
+let newTopic = "My new thread topic"
+
+chatThreadClient.update(topic: newTopic) { result, _ in
+ switch result {
+ case .success:
+ // Take further action
+
+ case let .failure(error):
+ // Display error message
+ }
+}
+```
+
## Troubleshooting
When an error occurs, the client calls the callback, passing in a `failure` result. You can use the provided error to act upon the failure.
```swift
-client.create(chatThread: thread) { result, _ in
+client.create(thread: thread) { result, _ in
switch result {
case let .failure(error):
// Display error message
@@ -594,4 +579,4 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact
[opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
-![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-ios%2Fsdk%communication%2FAzureCommunicationChat%2FREADME.png)
+![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-ios%2Fsdk%communication%2FAzureCommunicationChat%2FREADME.png)
\ No newline at end of file
diff --git a/sdk/communication/AzureCommunicationChat/Source/AzureCommuncationChatClient+Convenience.swift b/sdk/communication/AzureCommunicationChat/Source/AzureCommuncationChatClient+Convenience.swift
deleted file mode 100644
index ba194798..00000000
--- a/sdk/communication/AzureCommunicationChat/Source/AzureCommuncationChatClient+Convenience.swift
+++ /dev/null
@@ -1,340 +0,0 @@
-// --------------------------------------------------------------------------
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// The MIT License (MIT)
-//
-// 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.
-//
-// --------------------------------------------------------------------------
-
-import AzureCore
-import Foundation
-
-public extension AzureCommunicationChatClient {
- /// Gets read receipts for a thread.
- /// - Parameters:
- /// - chatThreadId : Thread id to get the read receipts for.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func listChatReadReceipts(
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.ListChatReadReceiptsOptions? = nil,
- completionHandler: @escaping HTTPResultHandler>
- ) {
- return azureCommunicationChatService.listChatReadReceipts(
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Sends a read receipt event to a thread, on behalf of a user.
- /// - Parameters:
- /// - chatReadReceipt : Read receipt details.
- /// - chatThreadId : Thread id to send the read receipt event to.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func send(
- chatReadReceipt: SendReadReceiptRequest,
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.SendChatReadReceiptOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.send(
- chatReadReceipt: chatReadReceipt,
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Sends a message to a thread.
- /// - Parameters:
- /// - chatMessage : Details of the message to send.
- /// - chatThreadId : The thread id to send the message to.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func send(
- chatMessage: SendChatMessageRequest,
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.SendChatMessageOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.send(
- chatMessage: chatMessage,
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Gets a list of messages from a thread.
- /// - Parameters:
- /// - chatThreadId : The thread id of the message.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func listChatMessages(
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.ListChatMessagesOptions? = nil,
- completionHandler: @escaping HTTPResultHandler>
- ) {
- return azureCommunicationChatService.listChatMessages(
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Gets a message by id.
- /// - Parameters:
- /// - chatThreadId : The thread id to which the message was sent.
- /// - chatMessageId : The message id.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func getChatMessage(
- chatThreadId: String,
- chatMessageId: String,
- withOptions options: AzureCommunicationChatService.GetChatMessageOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.getChatMessage(
- chatThreadId: chatThreadId,
- chatMessageId: chatMessageId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Updates a message.
- /// - Parameters:
- /// - chatMessage : Details of the request to update the message.
- /// - chatThreadId : The thread id to which the message was sent.
- /// - chatMessageId : The message id.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func update(
- chatMessage: UpdateChatMessageRequest,
- chatThreadId: String,
- chatMessageId: String,
- withOptions options: AzureCommunicationChatService.UpdateChatMessageOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.update(
- chatMessage: chatMessage,
- chatThreadId: chatThreadId,
- chatMessageId: chatMessageId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Deletes a message.
- /// - Parameters:
- /// - chatThreadId : The thread id to which the message was sent.
- /// - chatMessageId : The message id.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func deleteChatMessage(
- chatThreadId: String,
- chatMessageId: String,
- withOptions options: AzureCommunicationChatService.DeleteChatMessageOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.deleteChatMessage(
- chatThreadId: chatThreadId,
- chatMessageId: chatMessageId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Posts a typing event to a thread, on behalf of a user.
- /// - Parameters:
- /// - chatThreadId : Id of the thread.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func sendTypingNotification(
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.SendTypingNotificationOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.sendTypingNotification(
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Gets the members of a thread.
- /// - Parameters:
- /// - chatThreadId : Thread id to get members for.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func listChatThreadMembers(
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.ListChatThreadMembersOptions? = nil,
- completionHandler: @escaping HTTPResultHandler>
- ) {
- return azureCommunicationChatService.listChatThreadMembers(
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Adds thread members to a thread. If members already exist, no change occurs.
- /// - Parameters:
- /// - chatThreadMembers : Thread members to be added to the thread.
- /// - chatThreadId : Id of the thread to add members to.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func add(
- chatThreadMembers: AddChatThreadMembersRequest,
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.AddChatThreadMembersOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.add(
- chatThreadMembers: chatThreadMembers,
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Remove a member from a thread.
- /// - Parameters:
- /// - chatThreadId : Thread id to remove the member from.
- /// - chatMemberId : Id of the thread member to remove from the thread.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func removeChatThreadMember(
- chatThreadId: String,
- chatMemberId: String,
- withOptions options: AzureCommunicationChatService.RemoveChatThreadMemberOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.removeChatThreadMember(
- chatThreadId: chatThreadId,
- chatMemberId: chatMemberId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Creates a chat thread.
- /// - Parameters:
- /// - chatThread : Request payload for creating a chat thread.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func create(
- chatThread: CreateChatThreadRequest,
- withOptions options: AzureCommunicationChatService.CreateChatThreadOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.create(
- chatThread: chatThread,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Gets the list of chat threads of a user.
- /// - Parameters:
-
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func listChatThreads(
- withOptions options: AzureCommunicationChatService.ListChatThreadsOptions? = nil,
- completionHandler: @escaping HTTPResultHandler>
- ) {
- return azureCommunicationChatService.listChatThreads(withOptions: options, completionHandler: completionHandler)
- }
-
- /// Updates a thread's properties.
- /// - Parameters:
- /// - chatThread : Request payload for updating a chat thread.
- /// - chatThreadId : The id of the thread to update.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func update(
- chatThread: UpdateChatThreadRequest,
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.UpdateChatThreadOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.update(
- chatThread: chatThread,
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Gets a chat thread.
- /// - Parameters:
- /// - chatThreadId : Thread id to get.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func getChatThread(
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.GetChatThreadOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.getChatThread(
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-
- /// Deletes a thread.
- /// - Parameters:
- /// - chatThreadId : Thread id to delete.
- /// - options: A list of options for the operation
- /// - completionHandler: A completion handler that receives a status code on
- /// success.
- func deleteChatThread(
- chatThreadId: String,
- withOptions options: AzureCommunicationChatService.DeleteChatThreadOptions? = nil,
- completionHandler: @escaping HTTPResultHandler
- ) {
- return azureCommunicationChatService.deleteChatThread(
- chatThreadId: chatThreadId,
- withOptions: options,
- completionHandler: completionHandler
- )
- }
-}
diff --git a/sdk/communication/AzureCommunicationChat/Source/ChatClient.swift b/sdk/communication/AzureCommunicationChat/Source/ChatClient.swift
new file mode 100644
index 00000000..d99bb378
--- /dev/null
+++ b/sdk/communication/AzureCommunicationChat/Source/ChatClient.swift
@@ -0,0 +1,190 @@
+// --------------------------------------------------------------------------
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// The MIT License (MIT)
+//
+// 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.
+//
+// --------------------------------------------------------------------------
+
+import AzureCommunication
+import AzureCore
+import Foundation
+
+public class ChatClient {
+ // MARK: Properties
+
+ private let endpoint: String
+ private let credential: CommunicationTokenCredential
+ private let options: AzureCommunicationChatClientOptions
+ private let service: Chat
+
+ // MARK: Initializers
+
+ /// Create a ChatClient.
+ /// - Parameters:
+ /// - endpoint: The Communication Services endpoint.
+ /// - credential: The user credential.
+ /// - options: Options used to configure the client.
+ public init(
+ endpoint: String,
+ credential: CommunicationTokenCredential,
+ withOptions options: AzureCommunicationChatClientOptions
+ ) throws {
+ self.endpoint = endpoint
+ self.credential = credential
+ self.options = options
+
+ guard let endpointUrl = URL(string: endpoint) else {
+ throw AzureError.client("Unable to form base URL.")
+ }
+
+ let communicationCredential = CommunicationPolicyTokenCredential(credential)
+ let authPolicy = BearerTokenCredentialPolicy(credential: communicationCredential, scopes: [])
+
+ let client = try AzureCommunicationChatClient(
+ endpoint: endpointUrl,
+ authPolicy: authPolicy,
+ withOptions: options
+ )
+
+ self.service = client.chat
+ }
+
+ // MARK: Public Methods
+
+ /// Create a ChatThreadClient for the ChatThread with id threadId.
+ /// - Parameters:
+ /// - threadId: The threadId.
+ public func createClient(forThread threadId: String) throws -> ChatThreadClient {
+ return try ChatThreadClient(
+ endpoint: endpoint,
+ credential: credential,
+ threadId: threadId,
+ withOptions: options
+ )
+ }
+
+ /// Create a new ChatThread.
+ /// - Parameters:
+ /// - thread: Request for creating a chat thread with the topic and members to add.
+ /// - options: Create chat thread options.
+ /// - completionHandler: A completion handler that receives a ChatThreadClient on success.
+ public func create(
+ thread: CreateThreadRequest,
+ withOptions options: Chat.CreateChatThreadOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ // Set the repeatabilityRequestID if it is not provided
+ let requestOptions = ((options?.repeatabilityRequestID) != nil) ? options : Chat.CreateChatThreadOptions(
+ repeatabilityRequestID: UUID().uuidString,
+ clientRequestId: options?.clientRequestId,
+ cancellationToken: options?.cancellationToken,
+ dispatchQueue: options?.dispatchQueue,
+ context: options?.context
+ )
+
+ // Convert Participants to ChatParticipants
+ let participants = thread.participants.map {
+ ChatParticipant(
+ id: $0.user.identifier,
+ displayName: $0.displayName,
+ shareHistoryTime: $0.shareHistoryTime
+ )
+ }
+
+ // Convert to CreateChatThreadRequest for generated code
+ let request = CreateChatThreadRequest(
+ topic: thread.topic,
+ participants: participants
+ )
+
+ service.create(chatThread: request, withOptions: requestOptions) { result, httpResponse in
+ switch result {
+ case let .success(chatThreadResult):
+ completionHandler(.success(CreateThreadResult(from: chatThreadResult)), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Get the Thread with given id.
+ /// - Parameters:
+ /// - threadId: The chat thread id.
+ /// - options: Get chat thread options.
+ /// - completionHandler: A completion handler that receives the chat thread on success.
+ public func get(
+ thread threadId: String,
+ withOptions options: Chat.GetChatThreadOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service.getChatThread(chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case let .success(chatThread):
+ completionHandler(.success(Thread(from: chatThread)), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Gets the list of ChatThreads for the user.
+ /// - Parameters:
+ /// - options: List chat threads options.
+ /// - completionHandler: A completion handler that receives the list of chat thread info on success.
+ public func listThreads(
+ withOptions options: Chat.ListChatThreadsOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler>
+ ) {
+ service.listChatThreads(withOptions: options) { result, httpResponse in
+ switch result {
+ case let .success(chatThreads):
+ completionHandler(.success(chatThreads), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Delete the ChatThread with id chatThreadId.
+ /// - Parameters:
+ /// - threadId: The chat thread id.
+ /// - options: Delete chat thread options.
+ /// - completionHandler: A completion handler.
+ public func delete(
+ thread threadId: String,
+ withOptions options: Chat.DeleteChatThreadOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service.deleteChatThread(chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+}
diff --git a/sdk/communication/AzureCommunicationChat/Source/ChatThreadClient.swift b/sdk/communication/AzureCommunicationChat/Source/ChatThreadClient.swift
new file mode 100644
index 00000000..262c2a7e
--- /dev/null
+++ b/sdk/communication/AzureCommunicationChat/Source/ChatThreadClient.swift
@@ -0,0 +1,455 @@
+// --------------------------------------------------------------------------
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+// The MIT License (MIT)
+//
+// 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.
+//
+// --------------------------------------------------------------------------
+
+import AzureCommunication
+import AzureCore
+import Foundation
+
+public class ChatThreadClient {
+ // MARK: Properties
+
+ public let threadId: String
+ private let endpoint: String
+ private let credential: CommunicationTokenCredential
+ private let options: AzureCommunicationChatClientOptions
+ private let service: ChatThreadOperation
+
+ // MARK: Initializers
+
+ /// Create a ChatThreadClient.
+ /// - Parameters:
+ /// - endpoint: The Communication Services endpoint.
+ /// - credential: The user credential.
+ /// - threadId: The chat thread id.
+ /// - options: Options used to configure the client.
+ public init(
+ endpoint: String,
+ credential: CommunicationTokenCredential,
+ threadId: String,
+ withOptions options: AzureCommunicationChatClientOptions
+ ) throws {
+ self.threadId = threadId
+ self.endpoint = endpoint
+ self.credential = credential
+ self.options = options
+
+ guard let endpointUrl = URL(string: endpoint) else {
+ throw AzureError.client("Unable to form base URL")
+ }
+
+ let communicationCredential = CommunicationPolicyTokenCredential(credential)
+ let authPolicy = BearerTokenCredentialPolicy(credential: communicationCredential, scopes: [])
+
+ let client = try AzureCommunicationChatClient(
+ endpoint: endpointUrl,
+ authPolicy: authPolicy,
+ withOptions: options
+ )
+
+ self.service = client.chatThreadOperation
+ }
+
+ // MARK: Private Methods
+
+ /// Creates a PagedCollection from the given data and request.
+ /// - Parameters:
+ /// - data: The data to initialize the PagedCollection with.
+ /// - request: The HTTPRequest used to make the call.
+ /// - type: The type of the elements in the PagedCollection.
+ private func createPagedCollection(
+ from data: Data?,
+ withRequest request: HTTPRequest?,
+ of _: T.Type
+ ) throws -> PagedCollection {
+ guard let request = request else {
+ throw AzureError.client("HTTPResponse does not contain httpRequest.")
+ }
+
+ guard let data = data else {
+ throw AzureError.client("HTTPResponse does not contain data.")
+ }
+
+ let decoder = JSONDecoder()
+
+ let codingKeys = PagedCodingKeys(
+ items: "value",
+ continuationToken: "nextLink"
+ )
+
+ let context = PipelineContext.of(keyValues: [
+ ContextKey.allowedStatusCodes.rawValue: [200, 401, 403, 429, 503] as AnyObject
+ ])
+
+ return try PagedCollection(
+ client: service.client,
+ request: request,
+ context: context,
+ data: data,
+ codingKeys: codingKeys,
+ decoder: decoder
+ )
+ }
+
+ // MARK: Public Methods
+
+ /// Updates the ChatThread's topic.
+ /// - Parameters:
+ /// - topic: The topic.
+ /// - options: Update chat thread options.
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func update(
+ topic: String,
+ withOptions options: ChatThreadOperation.UpdateChatThreadOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ let updateChatThreadRequest = UpdateChatThreadRequest(topic: topic)
+
+ service
+ .update(
+ chatThread: updateChatThreadRequest,
+ chatThreadId: threadId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Sends a read receipt.
+ /// - Parameters:
+ /// - messageId: The id of the message to send a read receipt for.
+ /// - options: Send read receipt options.
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func sendReadReceipt(
+ forMessage messageId: String,
+ withOptions options: ChatThreadOperation.SendChatReadReceiptOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ let sendReadReceiptRequest = SendReadReceiptRequest(chatMessageId: messageId)
+
+ service
+ .send(
+ chatReadReceipt: sendReadReceiptRequest,
+ chatThreadId: threadId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Lists read receipts for the ChatThread.
+ /// - Parameters:
+ /// - options: List chat read receipts options.
+ /// - completionHandler: A completion handler that receives the list of read receipts on success.
+ public func listReadReceipts(
+ withOptions options: ChatThreadOperation.ListChatReadReceiptsOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler>
+ ) {
+ service.listChatReadReceipts(chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case .success:
+ // TODO: https://github.com/Azure/azure-sdk-for-ios/issues/644
+ // Construct a new PagedCollection of type ReadReceipt
+ do {
+ let readReceipts = try self.createPagedCollection(
+ from: httpResponse?.data,
+ withRequest: httpResponse?.httpRequest,
+ of: ReadReceipt.self
+ )
+
+ completionHandler(.success(readReceipts), httpResponse)
+ } catch {
+ let azureError = AzureError.client(error.localizedDescription, error)
+ completionHandler(.failure(azureError), httpResponse)
+ }
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Sends a typing notification.
+ /// - Parameters:
+ /// - options: Send typing notification options
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func sendTypingNotification(
+ withOptions options: ChatThreadOperation.SendTypingNotificationOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service.sendTypingNotification(chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Sends a message to a ChatThread.
+ /// - Parameters:
+ /// - message : Request that contains the message properties.
+ /// - options: A list of options for the operation.
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func send(
+ message: SendChatMessageRequest,
+ withOptions options: ChatThreadOperation.SendChatMessageOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service.send(chatMessage: message, chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case let .success(sendMessageResult):
+ completionHandler(.success(sendMessageResult), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Gets a message by id.
+ /// - Parameters:
+ /// - messageId : The id of the message to get.
+ /// - options: Get chat message options
+ /// - completionHandler: A completion handler that receives the chat message on success.
+ public func get(
+ message messageId: String,
+ withOptions options: ChatThreadOperation.GetChatMessageOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service
+ .getChatMessage(
+ chatThreadId: threadId,
+ chatMessageId: messageId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case let .success(chatMessage):
+ completionHandler(.success(Message(from: chatMessage)), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Updates a message.
+ /// - Parameters:
+ /// - message: Request that contains the message properties to update.
+ /// - messageId: The message id.
+ /// - options: Update chat message options
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func update(
+ message: UpdateChatMessageRequest,
+ messageId: String,
+ withOptions options: ChatThreadOperation.UpdateChatMessageOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service
+ .update(
+ chatMessage: message,
+ chatThreadId: threadId,
+ chatMessageId: messageId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Deletes a message.
+ /// - Parameters:
+ /// - messageId : The message id.
+ /// - options: Delete chat message options
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func delete(
+ message messageId: String,
+ options: ChatThreadOperation.DeleteChatMessageOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service
+ .deleteChatMessage(
+ chatThreadId: threadId,
+ chatMessageId: messageId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Gets a list of messages from a ChatThread.
+ /// - Parameters:
+ /// - options: List messages options.
+ /// - completionHandler: A completion handler that receives the list of messages on success.
+ public func listMessages(
+ withOptions options: ChatThreadOperation.ListChatMessagesOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler>
+ ) {
+ service.listChatMessages(chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case .success:
+ // TODO: github.com/Azure/azure-sdk-for-ios/issues/644
+ // Construct a new PagedCollection of type Message
+ do {
+ let messages = try self.createPagedCollection(
+ from: httpResponse?.data,
+ withRequest: httpResponse?.httpRequest,
+ of: Message.self
+ )
+
+ completionHandler(.success(messages), httpResponse)
+ } catch {
+ let azureError = AzureError.client(error.localizedDescription, error)
+ completionHandler(.failure(azureError), httpResponse)
+ }
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Adds thread participants to a Thread. If the participants already exist, no change occurs.
+ /// - Parameters:
+ /// - participants : An array of participants to add.
+ /// - options: Add chat participants options.
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func add(
+ participants: [Participant],
+ withOptions options: ChatThreadOperation.AddChatParticipantsOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ // Convert Participants to ChatParticipants
+ let chatParticipants = participants.map {
+ ChatParticipant(
+ id: $0.user.identifier,
+ displayName: $0.displayName,
+ shareHistoryTime: $0.shareHistoryTime
+ )
+ }
+ // Convert to AddChatParticipantsRequest for generated code
+ let addParticipantsRequest = AddChatParticipantsRequest(
+ participants: chatParticipants
+ )
+
+ service
+ .add(
+ chatParticipants: addParticipantsRequest,
+ chatThreadId: threadId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case let .success(addParticipantsResult):
+ completionHandler(.success(addParticipantsResult), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Removes a participant from the thread.
+ /// - Parameters:
+ /// - participantId : Id of the participant to remove.
+ /// - options: Remove participant options
+ /// - completionHandler: A completion handler that receives a status code on success.
+ public func remove(
+ participant participantId: String,
+ withOptions options: ChatThreadOperation.RemoveChatParticipantOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ service
+ .removeChatParticipant(
+ chatThreadId: threadId,
+ chatParticipantId: participantId,
+ withOptions: options
+ ) { result, httpResponse in
+ switch result {
+ case .success:
+ completionHandler(.success(()), httpResponse)
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+
+ /// Gets the participants of the thread.
+ /// - Parameters:
+ /// - options: List chat participants options.
+ /// - completionHandler: A completion handler that receives the list of members on success.
+ public func listParticipants(
+ withOptions options: ChatThreadOperation.ListChatParticipantsOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler>
+ ) {
+ service.listChatParticipants(chatThreadId: threadId, withOptions: options) { result, httpResponse in
+ switch result {
+ case .success:
+ // TODO: https://github.com/Azure/azure-sdk-for-ios/issues/644
+ // Construct a new PagedCollection of type Participant
+ do {
+ let participants = try self.createPagedCollection(
+ from: httpResponse?.data,
+ withRequest: httpResponse?.httpRequest,
+ of: Participant.self
+ )
+
+ completionHandler(.success(participants), httpResponse)
+ } catch {
+ let azureError = AzureError.client(error.localizedDescription, error)
+ completionHandler(.failure(azureError), httpResponse)
+ }
+
+ case let .failure(error):
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+}
diff --git a/sdk/communication/AzureCommunicationChat/Source/Generated/AzureCommunicationChatClient.swift b/sdk/communication/AzureCommunicationChat/Source/Generated/AzureCommunicationChatClient.swift
index 63485096..8f1a9837 100644
--- a/sdk/communication/AzureCommunicationChat/Source/Generated/AzureCommunicationChatClient.swift
+++ b/sdk/communication/AzureCommunicationChat/Source/Generated/AzureCommunicationChatClient.swift
@@ -25,27 +25,27 @@ public final class AzureCommunicationChatClient: PipelineClient, PageableClient
public enum ApiVersion: RequestStringConvertible {
/// Custom value for unrecognized enum values
case custom(String)
- /// API version "2020-09-21-preview2"
- case v20200921preview2
+ /// API version "2020-11-01-preview3"
+ case v20201101preview3
/// The most recent API version of the
public static var latest: ApiVersion {
- return .v20200921preview2
+ return .v20201101preview3
}
public var requestString: String {
switch self {
case let .custom(val):
return val
- case .v20200921preview2:
- return "2020-09-21-preview2"
+ case .v20201101preview3:
+ return "2020-11-01-preview3"
}
}
public init(_ val: String) {
switch val.lowercased() {
- case "2020-09-21-preview2":
- self = .v20200921preview2
+ case "2020-11-01-preview3":
+ self = .v20201101preview3
default:
self = .custom(val)
}
@@ -85,7 +85,8 @@ public final class AzureCommunicationChatClient: PipelineClient, PageableClient
)
}
- public lazy var azureCommunicationChatService = AzureCommunicationChatService(client: self)
+ public lazy var chat = Chat(client: self)
+ public lazy var chatThreadOperation = ChatThreadOperation(client: self)
// MARK: Public Client Methods
}
diff --git a/sdk/communication/AzureCommunicationChat/Source/Generated/Chat.swift b/sdk/communication/AzureCommunicationChat/Source/Generated/Chat.swift
new file mode 100644
index 00000000..35d448c2
--- /dev/null
+++ b/sdk/communication/AzureCommunicationChat/Source/Generated/Chat.swift
@@ -0,0 +1,563 @@
+// --------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for
+// license information.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is
+// regenerated.
+// --------------------------------------------------------------------------
+
+import AzureCore
+import Foundation
+// swiftlint:disable superfluous_disable_command
+// swiftlint:disable file_length
+// swiftlint:disable cyclomatic_complexity
+// swiftlint:disable function_body_length
+// swiftlint:disable type_body_length
+
+public final class Chat {
+ public let client: AzureCommunicationChatClient
+
+ init(client: AzureCommunicationChatClient) {
+ self.client = client
+ }
+
+ /// Creates a chat thread.
+ /// - Parameters:
+ /// - chatThread : Request payload for creating a chat thread.
+ /// - options: A list of options for the operation
+ /// - completionHandler: A completion handler that receives a status code on
+ /// success.
+ public func create(
+ chatThread: CreateChatThreadRequest,
+ withOptions options: CreateChatThreadOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler
+ ) {
+ let dispatchQueue = options?.dispatchQueue ?? client.commonOptions.dispatchQueue ?? DispatchQueue.main
+
+ // Create request parameters
+ let params = RequestParameters(
+ (.header, "repeatability-Request-ID", options?.repeatabilityRequestID, .encode), (
+ .uri,
+ "endpoint",
+ client.endpoint.absoluteString,
+ .skipEncoding
+ ), (.query, "api-version", client.options.apiVersion, .encode),
+ (.header, "Content-Type", "application/json", .encode),
+ (.header, "Accept", "application/json", .encode)
+ )
+
+ // Construct request
+ guard let requestBody = try? JSONEncoder().encode(chatThread) else {
+ client.options.logger.error("Failed to encode request body as json.")
+ return
+ }
+ let urlTemplate = "/chat/threads"
+ guard let requestUrl = client.url(host: "{endpoint}", template: urlTemplate, params: params),
+ let request = try? HTTPRequest(method: .post, url: requestUrl, headers: params.headers, data: requestBody)
+ else {
+ client.options.logger.error("Failed to construct HTTP request.")
+ return
+ }
+
+ // Send request
+ let context = PipelineContext.of(keyValues: [
+ ContextKey.allowedStatusCodes.rawValue: [201, 401, 403, 429, 503] as AnyObject
+ ])
+ context.add(cancellationToken: options?.cancellationToken, applying: client.options)
+ context.merge(with: options?.context)
+ client.request(request, context: context) { result, httpResponse in
+ guard let data = httpResponse?.data else {
+ let noDataError = AzureError.client("Response data expected but not found.")
+ dispatchQueue.async {
+ completionHandler(.failure(noDataError), httpResponse)
+ }
+ return
+ }
+ switch result {
+ case .success:
+ guard let statusCode = httpResponse?.statusCode else {
+ let noStatusCodeError = AzureError.client("Expected a status code in response but didn't find one.")
+ dispatchQueue.async {
+ completionHandler(.failure(noStatusCodeError), httpResponse)
+ }
+ return
+ }
+ if [
+ 201
+ ].contains(statusCode) {
+ do {
+ let decoder = JSONDecoder()
+ let decoded = try decoder.decode(CreateChatThreadResult.self, from: data)
+ dispatchQueue.async {
+ completionHandler(.success(decoded), httpResponse)
+ }
+ } catch {
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.client("Decoding error.", error)), httpResponse)
+ }
+ }
+ }
+ if [401].contains(statusCode) {
+ do {
+ let decoder = JSONDecoder()
+ let decoded = try decoder.decode(CommunicationErrorResponse.self, from: data)
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.service("Unauthorized.", decoded)), httpResponse)
+ }
+ } catch {
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.client("Decoding error.", error)), httpResponse)
+ }
+ }
+ }
+ if [403].contains(statusCode) {
+ do {
+ let decoder = JSONDecoder()
+ let decoded = try decoder.decode(CommunicationErrorResponse.self, from: data)
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.service("Forbidden.", decoded)), httpResponse)
+ }
+ } catch {
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.client("Decoding error.", error)), httpResponse)
+ }
+ }
+ }
+ if [429].contains(statusCode) {
+ do {
+ let decoder = JSONDecoder()
+ let decoded = try decoder.decode(CommunicationErrorResponse.self, from: data)
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.service("Too many requests.", decoded)), httpResponse)
+ }
+ } catch {
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.client("Decoding error.", error)), httpResponse)
+ }
+ }
+ }
+ if [503].contains(statusCode) {
+ do {
+ let decoder = JSONDecoder()
+ let decoded = try decoder.decode(CommunicationErrorResponse.self, from: data)
+ dispatchQueue.async {
+ completionHandler(
+ .failure(AzureError.service("Service unavailable.", decoded)),
+ httpResponse
+ )
+ }
+ } catch {
+ dispatchQueue.async {
+ completionHandler(.failure(AzureError.client("Decoding error.", error)), httpResponse)
+ }
+ }
+ }
+ case let .failure(error):
+ dispatchQueue.async {
+ completionHandler(.failure(error), httpResponse)
+ }
+ }
+ }
+ }
+
+ /// Gets the list of chat threads of a user.
+ /// - Parameters:
+
+ /// - options: A list of options for the operation
+ /// - completionHandler: A completion handler that receives a status code on
+ /// success.
+ public func listChatThreads(
+ withOptions options: ListChatThreadsOptions? = nil,
+ completionHandler: @escaping HTTPResultHandler