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  //