Add Dockerfile, update README, minor refactoring.
This commit is contained in:
+11
@@ -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 `AUTHPDS_TOKEN` containing the authentication token for the external API.
|
||||||
- An environment variable named `SECRET` containing the secret token for authorization.
|
- An environment variable named `SECRET` containing the secret token for authorization.
|
||||||
|
|
||||||
## Server Setup
|
## Docker
|
||||||
|
|
||||||
- Clone the repository:
|
To build and run the image from the provided `Dockerfile`:
|
||||||
```
|
|
||||||
git clone https://git.phc.dm.unipi.it/phc/go-maths-api
|
```bash shell
|
||||||
```
|
$ docker build -t go-maths-api .
|
||||||
- Change directory and build the project:
|
$ docker run -d --restart always -p 127.235.203.11:1099 --env 'AUTHPDS_TOKEN' --env 'SECRET' --name go-maths-api go-maths-api
|
||||||
```
|
```
|
||||||
cd go-maths-api
|
|
||||||
go build
|
|
||||||
```
|
|
||||||
- Run with `./go-maths-api`
|
|
||||||
|
|
||||||
## Client Usage
|
## 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:
|
Successful JSON response:
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CheckMathsUserHandler(w http.ResponseWriter, r *http.Request) {
|
func CheckMathsUserHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
// Get the SANITIZED_USER from the query parameters
|
// Get the username from the query parameters
|
||||||
sanitizedUser := r.URL.Query().Get("SANITIZED_USER")
|
userName := r.URL.Query().Get("user")
|
||||||
|
|
||||||
// Get the AUTHORIZATION header value, which should include the secret token
|
// Get the AUTHORIZATION header value, which should include the secret token
|
||||||
authHeader := r.Header.Get("Authorization")
|
authHeader := r.Header.Get("Authorization")
|
||||||
@@ -34,7 +34,7 @@ func CheckMathsUserHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
authPdsToken := os.Getenv("AUTHPDS_TOKEN")
|
authPdsToken := os.Getenv("AUTHPDS_TOKEN")
|
||||||
|
|
||||||
// Make a GET request to the external API
|
// 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)
|
req, err := http.NewRequest("GET", apiURL, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
|||||||
Reference in New Issue
Block a user