Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

70 linhas
1.6KB

  1. package main
  2. import (
  3. "biukop.com/sfm/loan"
  4. log "github.com/sirupsen/logrus"
  5. "net/http"
  6. "strconv"
  7. "sync"
  8. "time"
  9. )
  10. var analysisMutex sync.Mutex // make sure only one analysis run at a time.
  11. func apiV1UploadAnalysis(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  12. strId := r.URL.Path[len(apiV1Prefix+"upload-analysis/"):] //remove prefix
  13. Id, e := strconv.Atoi(strId)
  14. if e != nil {
  15. log.Error("Invalid uploads Id cannot convert to integer", Id, e)
  16. apiV1Client403Error(w, r, ss)
  17. return
  18. }
  19. ul := loan.Uploads{}
  20. e = ul.Read(int64(Id))
  21. if e != nil {
  22. log.Error("Upload not found or read error from db", Id, e)
  23. apiV1Client404Error(w, r, ss)
  24. return
  25. }
  26. analysisMutex.Lock()
  27. ai := AiDecodeIncome{}
  28. e = ai.decodeUploadToPayIn(ul, true)
  29. analysisMutex.Unlock()
  30. if e != nil {
  31. log.Error("Invalid uploads Id cannot convert to integer", Id, e)
  32. apiV1Server500Error(w, r)
  33. return
  34. }
  35. apiV1SendJson(ai, w, r, ss)
  36. }
  37. func apiV1UploadCreateAnalysis(w http.ResponseWriter, r *http.Request, ss *loan.Session) {
  38. time.Sleep(1 * time.Second)
  39. strId := r.URL.Path[len(apiV1Prefix+"upload-analysis/"):] //remove prefix
  40. Id, e := strconv.Atoi(strId)
  41. if e != nil {
  42. log.Error("Invalid uploads Id cannot convert to integer", Id, e)
  43. apiV1Client403Error(w, r, ss)
  44. return
  45. }
  46. ul := loan.Uploads{}
  47. e = ul.Read(int64(Id))
  48. if e != nil {
  49. log.Error("Upload not found or read error from db", Id, e)
  50. apiV1Client404Error(w, r, ss)
  51. return
  52. }
  53. ai := AiDecodeIncome{}
  54. e = ai.decodeUploadToPayIn(ul, false)
  55. if e != nil {
  56. log.Error("Cannot decode upload", Id, e)
  57. apiV1Server500Error(w, r)
  58. return
  59. }
  60. apiV1SendJson(ai, w, r, ss)
  61. }