override fun executeCall()

in intellij-plugin/educational-core/src/com/jetbrains/edu/learning/network/RetrofitHelperImpl.kt [36:72]


  override fun <T> executeCall(call: Call<T>, omitErrors: Boolean): Result<Response<T>, String> {
    return try {
      val progressIndicator = ProgressManager.getInstance().progressIndicator

      val response = if (progressIndicator != null) {
        ApplicationUtil.runWithCheckCanceled({ call.execute() }, progressIndicator)
      }
      else {
        call.execute()
      }

      ProgressManager.checkCanceled()
      Ok(response)
    }
    catch (e: InterruptedIOException) {
      log("Connection to server was interrupted", e.message, omitErrors)
      Err("${EduFormatBundle.message("error.connection.interrupted")}\n\n${e.message}")
    }
    catch (e: CoursesDownloadingException) {
      log("Failed to connect to server", e.message, true)
      throw e
    }
    catch (e: IOException) {
      log("Failed to connect to server", e.message, omitErrors)
      Err("${EduFormatBundle.message("error.failed.to.connect")} \n\n${e.message}")
    }
    catch (e: ProcessCanceledException) {
      // We don't have to LOG.log or throw ProcessCanceledException:
      // 'Control-flow exceptions (like ProcessCanceledException) should never be LOG.logged: ignore for explicitly started processes or...'
      call.cancel()
      Err("Process canceled by user")
    }
    catch (e: RuntimeException) {
      log("Failed to connect to server", e.message, omitErrors)
      Err("${EduFormatBundle.message("error.failed.to.connect")}\n\n${e.message}")
    }
  }