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