diff --git a/README .md b/README .md deleted file mode 100644 index 15ad8e3..0000000 --- a/README .md +++ /dev/null @@ -1,165 +0,0 @@ -# 🍎 Fruit Store API - -A simple **RESTful API** built with Flask that manages fruits in a store. -The project also includes **logging**, a **log monitoring script**, and **automated testing script**. - ---- - -## 📌 Features -- CRUD operations on fruits (`GET`, `POST`, `PUT`, `DELETE`) -- Search fruits by name -- Filter fruits by category -- Health check endpoint -- Logging of all requests & responses to `fruit_api.log` -- Bash script for monitoring logs (`log_monitor.sh`) -- Bash script for automated API testing (`test_api.sh`) -- Swagger/OpenAPI documentation - ---- - -## ⚙️ Setup Instructions - -### 1. Clone the Repository -```bash -git clone https://github.com/YOUR-USERNAME/fruit-api.git -cd fruit-api -``` - -### 2. Create Virtual Environment & Install Dependencies -```bash -python3 -m venv venv -source venv/bin/activate # Linux/Mac -venv\Scripts\activate # Windows - -pip install -r requirements.txt -``` - -### 3. Run the API -```bash -python fruit_api.py -``` -or -```bash -python3 fruit_api.py -``` - -API will start at: -👉 `http://localhost:5000` - ---- - -## 🚀 API Endpoints - -### Base URL -``` -http://localhost:5000 -``` - -### Endpoints - -| Method | Endpoint | Description | -|--------|----------------------------------|------------------------------| -| GET | `/fruits` | Get all fruits | -| GET | `/fruits/` | Get fruit by ID | -| POST | `/fruits` | Add a new fruit | -| PUT | `/fruits/` | Update an existing fruit | -| DELETE | `/fruits/` | Delete a fruit | -| GET | `/fruits/category/` | Get fruits by category | -| GET | `/fruits/search?name=` | Search fruits by name | -| GET | `/health` | Health check | - ---- - -## 📑 Example Usage (with curl) - -- **Get all fruits** -```bash -curl http://localhost:5000/fruits -``` - -- **Add a fruit** -```bash -curl -X POST http://localhost:5000/fruits -H "Content-Type: application/json" -d '{"name":"Mango","color":"Yellow","price":2.5,"quantity":50,"category":"Tropical"}' -``` - -- **Update a fruit** -```bash -curl -X PUT http://localhost:5000/fruits/1 -H "Content-Type: application/json" -d '{"name":"Green Apple","price":1.8}' -``` - ---- - -## 📝 Logging - -- All API requests and responses are saved in: -``` -fruit_api.log -``` - -Example log: -``` -2025-09-29 18:05:22 - IP:127.0.0.1 - METHOD:GET - ENDPOINT:/fruits - STATUS:200 -``` - ---- - -## 🔎 Monitoring (log_monitor.sh) - -The `log_monitor.sh` script: -- Monitors `fruit_api.log` every 2 hours -- Detects **errors (4XX, 5XX)** and unusual keywords (`failed`, `timeout`) -- Captures server metrics (IP, CPU, RAM, Disk) -- Sends an **alert JSON** to Ghaymah endpoint - -Run it in background: -```bash -bash log_monitor.sh & -``` - ---- - -## 🤖 API Testing (test_api.sh) - -The `test_api.sh` script: -- Runs automated `GET`, `POST`, `PUT`, `DELETE` requests -- Logs results in `test_results.log` - -Run tests: -```bash -bash test_api.sh -``` - ---- - -## 📘 Swagger Documentation -After starting the API, open: -👉 [http://localhost:5000/docs](http://localhost:5000/docs) - ---- - -## 🐳 Docker Support - -### Build the image -```bash -docker build -t fruit-api . -``` - -### Run container -```bash -docker run -p 5000:5000 fruit-api -``` - ---- - -## 📂 Project Structure -``` -fruit-api/ -│── fruit_api.py # Main Flask API -│── requirements.txt # Dependencies -│── Dockerfile # Docker support -│── log_monitor.sh # Log monitoring script -│── test_api.sh # Automated testing script -│── fruit_api.log # API logs -│── README.md # Documentation -│── .gitignore # Ignore venv/logs -```