github.com/uvalib/orcid-access-ws@v0.0.0-20250612130209-7d062dbabf9d/orcidaccessws/handlers/helpers.go (about) 1 package handlers 2 3 import ( 4 "log" 5 //"fmt" 6 "encoding/json" 7 "github.com/uvalib/orcid-access-ws/orcidaccessws/api" 8 "net/http" 9 "strings" 10 //"github.com/uvalib/orcid-access-ws/orcidaccessws/mapper" 11 //"github.com/uvalib/orcid-access-ws/orcidaccessws/logger" 12 "fmt" 13 "github.com/uvalib/orcid-access-ws/orcidaccessws/logger" 14 "strconv" 15 ) 16 17 func encodeStandardResponse(w http.ResponseWriter, status int, message string) { 18 19 logger.Log(fmt.Sprintf("INFO: encodeStandardResponse status: %d (%s)", status, message)) 20 jsonAttributes(w) 21 w.WriteHeader(status) 22 if err := json.NewEncoder(w).Encode(api.StandardResponse{Status: status, Message: message}); err != nil { 23 log.Fatal(err) 24 } 25 } 26 27 func encodeOrcidAttributesResponse(w http.ResponseWriter, status int, message string, attributes []*api.OrcidAttributes) { 28 29 logger.Log(fmt.Sprintf("INFO: encodeOrcidAttributesResponse status: %d (%s)", status, message)) 30 jsonAttributes(w) 31 w.WriteHeader(status) 32 if err := json.NewEncoder(w).Encode(api.OrcidAttributesResponse{Status: status, Message: message, Attributes: attributes}); err != nil { 33 log.Fatal(err) 34 } 35 } 36 37 func encodeUpdateActivityResponse(w http.ResponseWriter, status int, message string, updateCode string) { 38 39 logger.Log(fmt.Sprintf("INFO: encodeUpdateActivityResponse status: %d (%s)", status, message)) 40 jsonAttributes(w) 41 w.WriteHeader(status) 42 if err := json.NewEncoder(w).Encode(api.UpdateActivityResponse{Status: status, Message: message, UpdateCode: updateCode}); err != nil { 43 log.Fatal(err) 44 } 45 } 46 47 func encodeOrcidDetailsResponse(w http.ResponseWriter, status int, message string, details *api.OrcidDetails) { 48 49 logger.Log(fmt.Sprintf("INFO: encodeOrcidDetailsResponse status: %d (%s)", status, message)) 50 jsonAttributes(w) 51 w.WriteHeader(status) 52 if err := json.NewEncoder(w).Encode(api.OrcidDetailsResponse{Status: status, Message: message, Details: details}); err != nil { 53 log.Fatal(err) 54 } 55 } 56 57 func encodeOrcidSearchResponse(w http.ResponseWriter, status int, message string, results []*api.OrcidDetails, 58 start int, count int, total int) { 59 60 logger.Log(fmt.Sprintf("INFO: encodeOrcidSearchResponse status: %d (%s)", status, message)) 61 jsonAttributes(w) 62 w.WriteHeader(status) 63 if err := json.NewEncoder(w).Encode(api.OrcidSearchResponse{Status: status, Message: message, Results: results, 64 Start: start, Count: count, Total: total}); err != nil { 65 log.Fatal(err) 66 } 67 } 68 69 func encodeHealthCheckResponse(w http.ResponseWriter, status int, dbMsg string, orcidPublicMsg string, orcidSecureMsg string) { 70 71 dbHealthy, orcidPublicHealthy, orcidSecureHealthy := true, true, true 72 if len(dbMsg) != 0 { 73 dbHealthy = false 74 } 75 if len(orcidPublicMsg) != 0 { 76 orcidPublicHealthy = false 77 } 78 if len(orcidSecureMsg) != 0 { 79 orcidSecureHealthy = false 80 } 81 82 jsonAttributes(w) 83 w.WriteHeader(status) 84 if err := json.NewEncoder(w).Encode(api.HealthCheckResponse{ 85 DbCheck: api.HealthCheckResult{Healthy: dbHealthy, Message: dbMsg}, 86 OrcidPublicCheck: api.HealthCheckResult{Healthy: orcidPublicHealthy, Message: orcidPublicMsg}, 87 OrcidSecureCheck: api.HealthCheckResult{Healthy: orcidSecureHealthy, Message: orcidSecureMsg}}); err != nil { 88 log.Fatal(err) 89 } 90 } 91 92 func encodeVersionResponse(w http.ResponseWriter, status int, version string) { 93 jsonAttributes(w) 94 w.WriteHeader(status) 95 if err := json.NewEncoder(w).Encode(api.VersionResponse{Version: version}); err != nil { 96 log.Fatal(err) 97 } 98 } 99 100 func jsonAttributes(w http.ResponseWriter) { 101 w.Header().Set("Content-Type", "application/json; charset=UTF-8") 102 } 103 104 func isEmpty(param string) bool { 105 return len(strings.TrimSpace(param)) == 0 106 } 107 108 func isNumeric(param string) bool { 109 if _, err := strconv.Atoi(param); err == nil { 110 return true 111 } 112 return false 113 } 114 115 func asNumeric(param string) int { 116 res, _ := strconv.Atoi(param) 117 return (res) 118 } 119 120 // 121 // end of file 122 //