Add Dockerfile, update README, minor refactoring.

main
Francesco Minnocci 1 year ago
parent f5e12d2cae
commit 7e17494f20
Signed by: BachoSeven
GPG Key ID: 2BE4AB7FDAD828A4

@ -0,0 +1,11 @@
FROM golang:latest
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download && go mod verify
COPY . .
RUN go build -v -o ./bin/drone-example .
CMD ["./bin/drone-example"]

@ -1,29 +1,25 @@
# API to check for Maths students
# Go Maths students API
## Server Prerequisites
A simple Go API whose only purpose is to check whether an user is a Maths student or not.
- Having `go` installed
## Prerequisites
- An environment variable `AUTHPDS_TOKEN` containing the authentication token for the external API.
- An environment variable named `SECRET` containing the secret token for authorization.
## Server Setup
## Docker
- Clone the repository:
```
git clone https://git.phc.dm.unipi.it/phc/go-maths-api
```
- Change directory and build the project:
```
cd go-maths-api
go build
To build and run the image from the provided `Dockerfile`:
```bash shell
$ docker build -t go-maths-api .
$ docker run -d --restart always -p 127.235.203.11:1099 --env 'AUTHPDS_TOKEN' --env 'SECRET' --name go-maths-api go-maths-api
```
- Run with `./go-maths-api`
## Client Usage
An example request (with `SECRET` defined in your environment):
An example request to the local Docker image (with `SECRET` defined in your environment):
```
curl -X GET "http://localhost:8080/check-maths-user?SANITIZED_USER=f.minnocci" -H "Authorization: Bearer $SECRET"
curl -X GET "http://asdf:8080/check-maths-user?user=f.minnocci" -H "Authorization: Bearer $SECRET"
```
Successful JSON response:

@ -0,0 +1,3 @@
module git.phc.dm.unipi.it/phc/go-maths-api
go 1.21.1

@ -17,8 +17,8 @@ func main() {
}
func CheckMathsUserHandler(w http.ResponseWriter, r *http.Request) {
// Get the SANITIZED_USER from the query parameters
sanitizedUser := r.URL.Query().Get("SANITIZED_USER")
// Get the username from the query parameters
userName := r.URL.Query().Get("user")
// Get the AUTHORIZATION header value, which should include the secret token
authHeader := r.Header.Get("Authorization")
@ -34,7 +34,7 @@ func CheckMathsUserHandler(w http.ResponseWriter, r *http.Request) {
authPdsToken := os.Getenv("AUTHPDS_TOKEN")
// Make a GET request to the external API
apiURL := fmt.Sprintf("https://api.unipi.it/authPds/api/Carriera/studente/uid/%s/", sanitizedUser)
apiURL := fmt.Sprintf("https://api.unipi.it/authPds/api/Carriera/studente/uid/%s/", userName)
req, err := http.NewRequest("GET", apiURL, nil)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)

Loading…
Cancel
Save