Throw OWSHTTPError for unexpected status codes
This commit is contained in:
parent
96e1476528
commit
0977510e1f
@ -110,10 +110,10 @@ class CallLinkManagerImpl: CallLinkManager {
|
||||
]
|
||||
)
|
||||
let httpResult = try await self.networkManager.asyncRequest(httpRequest)
|
||||
guard httpResult.responseStatusCode == 200, let responseBodyData = httpResult.responseBodyData else {
|
||||
throw OWSGenericError("Couldn't handle successful result from the server.")
|
||||
guard httpResult.responseStatusCode == 200 else {
|
||||
throw httpResult.asError()
|
||||
}
|
||||
let httpResponse = try JSONDecoder().decode(CallLinkCreateAuthResponse.self, from: responseBodyData)
|
||||
let httpResponse = try JSONDecoder().decode(CallLinkCreateAuthResponse.self, from: httpResult.responseBodyData ?? Data())
|
||||
let credentialResponse = try CreateCallLinkCredentialResponse(contents: httpResponse.credential)
|
||||
return try credentialRequestContext.receive(credentialResponse, userId: localAci, params: self.serverParams)
|
||||
}
|
||||
|
||||
@ -594,7 +594,7 @@ enum EmojiSearchIndex {
|
||||
let urlSession = signalService.urlSessionForUpdates()
|
||||
let response = try await urlSession.performRequest("/dynamic/android/emoji/search/manifest.json", method: .get)
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("bad response code for emoji manifest fetch")
|
||||
throw response.asError()
|
||||
}
|
||||
let manifest = try JSONDecoder().decode(Manifest.self, from: response.responseBodyData ?? Data())
|
||||
|
||||
@ -673,7 +673,7 @@ enum EmojiSearchIndex {
|
||||
method: .get,
|
||||
)
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("Bad response code for emoji index fetch")
|
||||
throw response.asError()
|
||||
}
|
||||
var searchIndex = [String: [String]]()
|
||||
for emojiTags in try JSONDecoder().decode([EmojiTags].self, from: response.responseBodyData ?? Data()) {
|
||||
|
||||
@ -170,16 +170,10 @@ class RequestAccountDataReportViewController: OWSTableViewController2 {
|
||||
asyncBlock: { modal in
|
||||
do {
|
||||
let response = try await SSKEnvironment.shared.networkManagerRef.asyncRequest(request)
|
||||
let status = response.responseStatusCode
|
||||
guard status == 200 else {
|
||||
throw OWSGenericError("Received a \(status) status code. The request failed")
|
||||
}
|
||||
guard let rawData = response.responseBodyData else {
|
||||
throw OWSGenericError("Received an empty response")
|
||||
}
|
||||
guard let report = try? AccountDataReport(rawData: rawData) else {
|
||||
throw OWSGenericError("Couldn't parse account data report, presumably due to a bug")
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw response.asError()
|
||||
}
|
||||
let report = try AccountDataReport(rawData: response.responseBodyData ?? Data())
|
||||
modal.dismissIfNotCanceled(completionIfNotCanceled: { [weak self] in
|
||||
self?.confirmExport {
|
||||
self?.didConfirmExport(of: report)
|
||||
|
||||
@ -198,7 +198,7 @@ class LinkedDevicesViewModel: ObservableObject {
|
||||
func renameDevice(
|
||||
_ displayableDevice: DisplayableDevice,
|
||||
to newName: String
|
||||
) async throws(OWSDeviceRenameError) {
|
||||
) async throws {
|
||||
try await deviceService.renameDevice(
|
||||
device: displayableDevice.device,
|
||||
newName: newName,
|
||||
|
||||
@ -49,7 +49,7 @@ public class AccountChecker {
|
||||
do {
|
||||
let response = try await networkManager.asyncRequest(accountRequest)
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSGenericError("Unexpected server response.")
|
||||
throw response.asError()
|
||||
}
|
||||
await db.awaitableWrite { tx in
|
||||
var recipient = recipientFetcher.fetchOrCreate(serviceId: serviceId, tx: tx)
|
||||
|
||||
@ -18,7 +18,7 @@ public protocol OWSDeviceService {
|
||||
func renameDevice(
|
||||
device: OWSDevice,
|
||||
newName: String,
|
||||
) async throws(OWSDeviceRenameError)
|
||||
) async throws
|
||||
}
|
||||
|
||||
extension OWSDeviceService {
|
||||
@ -31,12 +31,6 @@ extension OWSDeviceService {
|
||||
}
|
||||
}
|
||||
|
||||
public enum OWSDeviceRenameError: Error {
|
||||
case encryptionFailed
|
||||
case networkError
|
||||
case assertion
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
struct OWSDeviceServiceImpl: OWSDeviceService {
|
||||
@ -210,36 +204,24 @@ struct OWSDeviceServiceImpl: OWSDeviceService {
|
||||
func renameDevice(
|
||||
device: OWSDevice,
|
||||
newName: String,
|
||||
) async throws(OWSDeviceRenameError) {
|
||||
) async throws {
|
||||
guard let identityKeyPair = db.read(block: { tx in
|
||||
identityManager.identityKeyPair(for: .aci, tx: tx)
|
||||
}) else {
|
||||
throw .encryptionFailed
|
||||
throw OWSAssertionError("can't rename device without identity key")
|
||||
}
|
||||
|
||||
let newNameEncrypted: String
|
||||
do {
|
||||
newNameEncrypted = try OWSDeviceNames.encryptDeviceName(
|
||||
plaintext: newName,
|
||||
identityKeyPair: identityKeyPair.keyPair
|
||||
).base64EncodedString()
|
||||
} catch {
|
||||
owsFailDebug("Failed to encrypt device name! \(error)")
|
||||
throw .encryptionFailed
|
||||
}
|
||||
let newNameEncrypted = try OWSDeviceNames.encryptDeviceName(
|
||||
plaintext: newName,
|
||||
identityKeyPair: identityKeyPair.keyPair
|
||||
).base64EncodedString()
|
||||
|
||||
let response: HTTPResponse
|
||||
do {
|
||||
response = try await self.networkManager.asyncRequest(
|
||||
.renameDevice(device: device, encryptedName: newNameEncrypted)
|
||||
)
|
||||
} catch {
|
||||
throw .networkError
|
||||
}
|
||||
let response = try await self.networkManager.asyncRequest(
|
||||
.renameDevice(device: device, encryptedName: newNameEncrypted)
|
||||
)
|
||||
|
||||
guard response.responseStatusCode == 204 else {
|
||||
owsFailDebug("Unexpected response status code! \(response.responseStatusCode)")
|
||||
throw OWSDeviceRenameError.assertion
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
await db.awaitableWrite { tx in
|
||||
|
||||
@ -1022,7 +1022,7 @@ public class OWSIdentityManagerImpl: OWSIdentityManager {
|
||||
let response = try await self.networkManager.asyncRequest(request)
|
||||
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("Unexpected response from batch identity request \(response.responseStatusCode)")
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
guard let responseDictionary = response.responseBodyDict else {
|
||||
|
||||
@ -25,15 +25,11 @@ struct WhoAmIManagerImpl: WhoAmIManager {
|
||||
)
|
||||
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("Unexpected status code from WhoAmI! \(response.responseStatusCode)")
|
||||
}
|
||||
|
||||
guard let bodyData = response.responseBodyData else {
|
||||
throw OWSAssertionError("Missing response body data from WhoAmI!")
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
do {
|
||||
return try JSONDecoder().decode(WhoAmIResponse.self, from: bodyData)
|
||||
return try JSONDecoder().decode(WhoAmIResponse.self, from: response.responseBodyData ?? Data())
|
||||
} catch {
|
||||
throw OWSAssertionError("Failed to parse WhoAmI response! \(error)")
|
||||
}
|
||||
|
||||
@ -765,10 +765,7 @@ final class BackupSubscriptionManagerImpl: BackupSubscriptionManager {
|
||||
)
|
||||
|
||||
guard registerSubscriberIdResponse.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError(
|
||||
"Unexpected status code registering new Backup subscriber ID! \(registerSubscriberIdResponse.responseStatusCode)",
|
||||
logger: logger
|
||||
)
|
||||
throw registerSubscriberIdResponse.asError()
|
||||
}
|
||||
|
||||
/// Next, we tell the server (unauthenticated) to associate the
|
||||
@ -784,10 +781,7 @@ final class BackupSubscriptionManagerImpl: BackupSubscriptionManager {
|
||||
)
|
||||
|
||||
guard associateIdsResponse.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError(
|
||||
"Unexpected status code associating new Backup subscriber ID with originalTransactionId! \(associateIdsResponse.responseStatusCode)",
|
||||
logger: logger
|
||||
)
|
||||
throw associateIdsResponse.asError()
|
||||
}
|
||||
|
||||
let newSubscriberData = IAPSubscriberData(
|
||||
|
||||
@ -17,10 +17,8 @@ extension Stripe {
|
||||
let response = try await SSKEnvironment.shared.networkManagerRef
|
||||
.asyncRequest(request, retryPolicy: .hopefullyRecoverable)
|
||||
|
||||
let statusCode = response.responseStatusCode
|
||||
|
||||
guard statusCode == 200 else {
|
||||
throw OWSAssertionError("Got bad response code \(statusCode).")
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
guard let parser = response.responseBodyParamParser else {
|
||||
|
||||
@ -232,10 +232,7 @@ struct SubscriptionRedemptionNecessityChecker<RedemptionJobContext> {
|
||||
)
|
||||
|
||||
guard registerSubscriberIdResponse.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError(
|
||||
"Unexpected status code registering new Backup subscriber ID! \(registerSubscriberIdResponse.responseStatusCode)",
|
||||
logger: logger
|
||||
)
|
||||
throw registerSubscriberIdResponse.asError()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ struct UploadEndpointCDN2: UploadEndpoint {
|
||||
)
|
||||
|
||||
guard response.responseStatusCode == 201 else {
|
||||
throw OWSAssertionError("Invalid statusCode: \(response.responseStatusCode).")
|
||||
throw response.asError()
|
||||
}
|
||||
guard
|
||||
let locationHeader = response.headers["location"],
|
||||
|
||||
@ -31,9 +31,7 @@ public class UsernameApiClientImpl: UsernameApiClient {
|
||||
let response = try await performRequest(request: request)
|
||||
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError(
|
||||
"Unexpected status code from successful request: \(response.responseStatusCode)"
|
||||
)
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
guard let parser = response.responseBodyParamParser else {
|
||||
@ -97,7 +95,7 @@ public class UsernameApiClientImpl: UsernameApiClient {
|
||||
let response = try await performRequest(request: request)
|
||||
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("Unexpected status code from successful request: \(response.responseStatusCode)")
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
guard let parser = response.responseBodyParamParser else {
|
||||
@ -139,7 +137,7 @@ public class UsernameApiClientImpl: UsernameApiClient {
|
||||
let request = OWSRequestFactory.deleteExistingUsernameRequest()
|
||||
let response = try await performRequest(request: request)
|
||||
guard response.responseStatusCode == 204 else {
|
||||
throw OWSAssertionError("Unexpected status code from successful request: \(response.responseStatusCode)")
|
||||
throw response.asError()
|
||||
}
|
||||
}
|
||||
|
||||
@ -167,7 +165,7 @@ public class UsernameApiClientImpl: UsernameApiClient {
|
||||
let response = try await performRequest(request: request)
|
||||
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("Unexpected response code: \(response.responseStatusCode)")
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
guard let parser = response.responseBodyParamParser else {
|
||||
@ -184,7 +182,7 @@ public class UsernameApiClientImpl: UsernameApiClient {
|
||||
let response = try await performRequest(request: request)
|
||||
|
||||
guard response.responseStatusCode == 200 else {
|
||||
throw OWSAssertionError("Unexpected response code: \(response.responseStatusCode)")
|
||||
throw response.asError()
|
||||
}
|
||||
|
||||
guard let parser = response.responseBodyParamParser else {
|
||||
|
||||
@ -183,5 +183,5 @@ private class MockDevicesService: OWSDeviceService {
|
||||
|
||||
func unlinkDevice(deviceId: DeviceId) async throws {}
|
||||
|
||||
func renameDevice(device: OWSDevice, newName: String) async throws(OWSDeviceRenameError) {}
|
||||
func renameDevice(device: OWSDevice, newName: String) async throws {}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user