# Minecraft Statistics Server (demo)

This project is a demonstration of a RESTful API backend for managing player statistics and shops in a Minecraft server. The API allows you to retrieve information about players and shops, manage shop inventories, and simulate player transactions.

## Features

- **Player Management**
    - Retrieve all players
    - Retrieve online and offline players
    - Get detailed information about a specific player

- **Shop Management**
    - Retrieve all shops
    - Get details of a specific shop
    - Buy items from a shop
    - Set prices and stock for items in a shop

## Technologies Used

- **Java 17**
- **Spring Boot**
- **Spring Web**
- **JUnit & Mockito** for testing

## Getting Started

### Prerequisites

- Java 17 or higher
- Maven

### Installation

1. Clone the repository:
   ```bash
   git clone https://gitlab.sl-projects.com/SofianeLasri/demo-culture-concepts-info.git
   ```

2. Navigate to the project directory:
   ```bash
   cd demo-culture-concepts-info
   ```

3. Build the project using Maven:
   ```bash
   mvn clean install
   ```

4. Run the application:
   ```bash
   mvn spring-boot:run
   ```

The server will start and listen on `http://localhost:8080`.

## API Endpoints

### Player Endpoints

- **GET /players**: Retrieve a list of all players.
- **GET /online-players**: Retrieve a list of online players.
- **GET /offline-players**: Retrieve a list of offline players.
- **GET /player**: Retrieve information about a specific player by UUID.

### Shop Endpoints

- **GET /shops**: Retrieve a list of all shops.
- **GET /shop**: Retrieve information about a specific shop by item name.
- **GET /buy**: Simulate buying an item from a shop.
- **GET /set-price**: Set the price of an item in a shop.
- **GET /set-stock**: Set the stock of an item in a shop.

## Testing

Run the tests using Maven:

```bash
mvn test
```