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

     1  package handlers
     2  
     3  import (
     4  	"fmt"
     5  	//"fmt"
     6  	"github.com/gorilla/mux"
     7  	"github.com/uvalib/orcid-access-ws/orcidaccessws/authtoken"
     8  	"github.com/uvalib/orcid-access-ws/orcidaccessws/config"
     9  	"github.com/uvalib/orcid-access-ws/orcidaccessws/orcid"
    10  	"net/http"
    11  	//"github.com/uvalib/orcid-access-ws/orcidaccessws/orcid"
    12  )
    13  
    14  // GetOrcidDetails -- get the orcid details handler
    15  func GetOrcidDetails(w http.ResponseWriter, r *http.Request) {
    16  
    17  	vars := mux.Vars(r)
    18  	id := vars["id"]
    19  	token := r.URL.Query().Get("auth")
    20  
    21  	// parameters OK?
    22  	if isEmpty(id) || isEmpty(token) {
    23  		status := http.StatusBadRequest
    24  		encodeOrcidDetailsResponse(w, status, http.StatusText(status), nil)
    25  		return
    26  	}
    27  
    28  	// validate the token
    29  	if authtoken.Validate(config.Configuration.SharedSecret, token) == false {
    30  		status := http.StatusForbidden
    31  		encodeOrcidDetailsResponse(w, status, http.StatusText(status), nil)
    32  		return
    33  	}
    34  
    35  	// get the ORCID details
    36  	orcid, status, err := orcid.GetOrcidDetails(id)
    37  
    38  	// we did got an error, return it
    39  	if status != http.StatusOK {
    40  		encodeOrcidDetailsResponse(w, status,
    41  			fmt.Sprintf("%s (%s)", http.StatusText(status), err), nil)
    42  		return
    43  	}
    44  
    45  	encodeOrcidDetailsResponse(w, status, http.StatusText(status), orcid)
    46  }
    47  
    48  //
    49  // end of file
    50  //