github.com/uvalib/orcid-access-ws@v0.0.0-20250612130209-7d062dbabf9d/orcidaccessws/handlers/get_all_orcid_attributes_handler.go (about)

     1  package handlers
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/uvalib/orcid-access-ws/orcidaccessws/authtoken"
     6  	"github.com/uvalib/orcid-access-ws/orcidaccessws/config"
     7  	"github.com/uvalib/orcid-access-ws/orcidaccessws/dao"
     8  	"github.com/uvalib/orcid-access-ws/orcidaccessws/logger"
     9  	"net/http"
    10  )
    11  
    12  // GetAllOrcidAttributes - get all orcid attributes handler
    13  func GetAllOrcidAttributes(w http.ResponseWriter, r *http.Request) {
    14  
    15  	token := r.URL.Query().Get("auth")
    16  
    17  	// parameters OK?
    18  	if isEmpty(token) {
    19  		status := http.StatusBadRequest
    20  		encodeOrcidAttributesResponse(w, status, http.StatusText(status), nil)
    21  		return
    22  	}
    23  
    24  	// validate the token
    25  	if authtoken.Validate(config.Configuration.SharedSecret, token) == false {
    26  		status := http.StatusForbidden
    27  		encodeOrcidAttributesResponse(w, status, http.StatusText(status), nil)
    28  		return
    29  	}
    30  
    31  	// get the ORCID details
    32  	attributes, err := dao.Store.GetAllOrcidAttributes()
    33  	if err != nil {
    34  		logger.Log(fmt.Sprintf("ERROR: %s", err.Error()))
    35  		status := http.StatusInternalServerError
    36  		encodeOrcidAttributesResponse(w, status,
    37  			fmt.Sprintf("%s (%s)", http.StatusText(status), err.Error()),
    38  			nil)
    39  		return
    40  	}
    41  
    42  	// we did not find the item, return 404
    43  	if attributes == nil || len(attributes) == 0 {
    44  		status := http.StatusNotFound
    45  		encodeOrcidAttributesResponse(w, status, http.StatusText(status), nil)
    46  		return
    47  	}
    48  
    49  	status := http.StatusOK
    50  	encodeOrcidAttributesResponse(w, status, http.StatusText(status), attributes)
    51  }
    52  
    53  //
    54  // end of file
    55  //