diff --git a/Sources/EffemKit/EffemRepoService.swift b/Sources/EffemKit/EffemRepoService.swift index f468224..7d3ec2d 100644 --- a/Sources/EffemKit/EffemRepoService.swift +++ b/Sources/EffemKit/EffemRepoService.swift @@ -215,7 +215,7 @@ public struct EffemRepoService: Sendable { "record": record, ] let data = try JSONSerialization.data(withJSONObject: body) - return try await execute(.createRecord(body: data)) + return try await execute(.putRecord(body: data)) } /// Deletes an episode state record from the user's AT Proto repo. @@ -284,10 +284,8 @@ public struct EffemRepoService: Sendable { "rkey": "self", "record": profileRecord, ] - // putRecord so we can upsert with key "self" - // Reusing createRecord endpoint but the server treats rkey "self" correctly let data = try JSONSerialization.data(withJSONObject: body) - return try await execute(.createRecord(body: data)) + return try await execute(.putRecord(body: data)) } // MARK: - Helpers diff --git a/Sources/EffemKit/RepoAPI.swift b/Sources/EffemKit/RepoAPI.swift index 07a5201..d12327d 100644 --- a/Sources/EffemKit/RepoAPI.swift +++ b/Sources/EffemKit/RepoAPI.swift @@ -5,6 +5,7 @@ import NetworkingKit /// Endpoints for writing records to the user's PDS via standard AT Proto repo operations. enum RepoAPI: Sendable { case createRecord(body: Data) + case putRecord(body: Data) case deleteRecord(body: Data) case getRecord(repo: String, collection: String, rkey: String) case listRecords(repo: String, collection: String, limit: Int, cursor: String?) @@ -24,6 +25,7 @@ extension RepoAPI: EndpointType { var path: String { switch self { case .createRecord: "/xrpc/com.atproto.repo.createRecord" + case .putRecord: "/xrpc/com.atproto.repo.putRecord" case .deleteRecord: "/xrpc/com.atproto.repo.deleteRecord" case .getRecord: "/xrpc/com.atproto.repo.getRecord" case .listRecords: "/xrpc/com.atproto.repo.listRecords" @@ -32,14 +34,14 @@ extension RepoAPI: EndpointType { var httpMethod: HTTPMethod { switch self { - case .createRecord, .deleteRecord: .post + case .createRecord, .putRecord, .deleteRecord: .post case .getRecord, .listRecords: .get } } var task: HTTPTask { switch self { - case .createRecord(let body), .deleteRecord(let body): + case .createRecord(let body), .putRecord(let body), .deleteRecord(let body): return .requestParameters(encoding: .jsonDataEncoding(data: body)) case .getRecord(let repo, let collection, let rkey):