Browse Source

A bit saner

Piotr Czajkowski 3 years ago
parent
commit
2e37baa942
1 changed files with 41 additions and 31 deletions
  1. 41 31
      search.go

+ 41 - 31
search.go

@@ -87,7 +87,40 @@ func getSearchJSON(text string) []byte {
 	return queryJSON
 }
 
-func (app *Application) search(TMs []TM, text string) SearchResults {
+func (app Application) getResultsFromTM(tmURL string, tm TM, searchJSON []byte) (retry bool, result ResultsFromServer) {
+	getTM := tmURL + tm.TMGuid
+	concordanceURL := getTM + "/concordance"
+	requestURL := concordanceURL + app.AuthString
+
+	var tempResults ResultsFromServer
+	resp, err := postQuery(requestURL, searchJSON)
+	if err != nil {
+		log.Println(err)
+		return false, tempResults
+	}
+	defer resp.Body.Close()
+
+	if resp.StatusCode == http.StatusUnauthorized {
+		time.Sleep(app.Delay)
+
+		status, err := app.login()
+		if !status || err != nil {
+			log.Printf("Couldn't log in: %s", err)
+			return false, tempResults
+		}
+
+		return true, tempResults
+	}
+
+	err = jsonDecoder(resp.Body, &tempResults)
+	if err != nil {
+		log.Printf("Error decoding results: %s", err)
+	}
+
+	return false, tempResults
+}
+
+func (app Application) search(TMs []TM, text string) SearchResults {
 	var finalResults SearchResults
 	finalResults.SearchPhrase = text
 
@@ -98,41 +131,18 @@ func (app *Application) search(TMs []TM, text string) SearchResults {
 
 	tmURL := app.BaseURL + "tms/"
 	for _, tm := range TMs {
-		getTM := tmURL + tm.TMGuid
-		concordanceURL := getTM + "/concordance"
-		requestURL := concordanceURL + app.AuthString
-
-		resp, err := postQuery(requestURL, searchJSON)
-		if err != nil {
-			log.Println(err)
-			return finalResults
+		retry, tempResults := app.getResultsFromTM(tmURL, tm, searchJSON)
+		if retry {
+			_, tempResults = app.getResultsFromTM(tmURL, tm, searchJSON)
 		}
-		defer resp.Body.Close()
-
-		if resp.StatusCode == http.StatusUnauthorized {
-			time.Sleep(app.Delay)
 
-			status, err := app.login()
-			if !status || err != nil {
-				log.Printf("Couldn't log in: %s", err)
-				return finalResults
-			}
-
-			return app.search(TMs, text)
-		}
-
-		var tempResults ResultsFromServer
-		err = jsonDecoder(resp.Body, &tempResults)
-		if err != nil {
-			log.Printf("Error decoding results: %s", err)
+		if tempResults.TotalConcResult <= 0 {
 			continue
 		}
 
-		if tempResults.TotalConcResult > 0 {
-			tmResults := getCleanedResults(tempResults, tm.FriendlyName)
-			finalResults.Results = append(finalResults.Results, tmResults)
-			finalResults.TotalResults += len(tmResults.Segments)
-		}
+		tmResults := getCleanedResults(tempResults, tm.FriendlyName)
+		finalResults.Results = append(finalResults.Results, tmResults)
+		finalResults.TotalResults += len(tmResults.Segments)
 	}
 
 	return finalResults