override fun check()

in intellij-plugin/educational-core/src/com/jetbrains/edu/learning/coursera/CourseraTaskChecker.kt [50:83]


  override fun check(project: Project, task: Task, indicator: ProgressIndicator): CheckResult {
    val course = task.course as CourseraCourse
    if (course.submitManually) {
      return CheckResult(CheckStatus.Unchecked, EduCoreBundle.message("coursera.local.tests.passed", getLinkToSubmission(task)))
    }
    val courseraSettings = CourseraSettings.getInstance()
    var askedForCredentials = false
    var token = getToken()
    if (courseraSettings.email.isEmpty() || token == null) {
      askToEnterCredentials(task)
      askedForCredentials = true
      token = getToken()
      if (courseraSettings.email.isEmpty() || token == null) {
        return checkWithoutCredentials
      }
    }

    return try {
      val response = postSubmission(createSubmissionJson(project, task, courseraSettings, token))
      var responseCode = response.code
      if (responseCode != HttpStatus.SC_CREATED && !askedForCredentials) {
        askToEnterCredentials(task, createCheckResult(responseCode, task).message)
        token = getToken()
        if (token != null) {
          responseCode = postSubmission(createSubmissionJson(project, task, courseraSettings, token)).code
        }
      }
      createCheckResult(responseCode, task)
    }
    catch (e: Exception) {
      Logger.getInstance(CourseraTaskChecker::class.java).warn(e)
      CheckResult.CONNECTION_FAILED
    }
  }