Skip to content

helenzik24/String-Compression-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

String Compression API

Overview

The String Compression API is a Spring Boot-based REST service that provides endpoints to compress and decompress strings using a simple Run-Length Encoding (RLE) technique.

Features

  • Compress strings by replacing consecutive repeating characters with character-count encoding.
  • Decompress encoded strings back to their original form.
  • API documentation using OpenAPI (Swagger UI).
  • Unit and integration testing with JUnit and Mockito.

Installation & Setup

Prerequisites

  • Java 21
  • Maven

Steps

  1. Clone the repository:
    git clone https://github.com/helenzik24/String-Compression-Project.git
    cd String-Compression-Project
  2. Build the project:
    mvn clean install
  3. Run the application:
    mvn spring-boot:run

API Endpoints

Compress String

Request:

GET /api/compression/compress?input=aaabb

Response:

"a3b2"

Decompress String

Request:

GET /api/compression/decompress?input=a3b2

Response:

"aaabb"

API Documentation

Swagger UI is available at:

http://localhost:8080/swagger-ui.html

Project Structure

String-Compression-Project/
│── src/main/java/com/compression
│   ├── CompressionApplication.java         # Main Spring Boot application
│   ├── controller/CompressionController.java  # REST Controller
│   ├── service/CompressionService.java     # Business logic for compression
│── src/test/java/com/compression
│   ├── CompressionApplicationTest.java     # Test for application startup
│   ├── CompressionServiceTest.java         # Unit tests for service
│   ├── controller/CompressionControllerTest.java  # Controller unit tests
│── pom.xml                                 # Project dependencies
│── README.md                               # Documentation
│── .gitignore                              # Git ignore rules
│── target/                                 # Compiled output files

Dependencies

This project uses the following dependencies:

  • Spring Boot Starter Web - Provides RESTful API functionality.
  • Springdoc OpenAPI - Enables Swagger UI documentation.
  • JUnit 5 - For unit testing.
  • Mockito - For mocking dependencies in tests.

Refer to the pom.xml for detailed versions.


Testing

Run unit tests using:

mvn test

Test cases include:

  • Compressing "aaabb" should return "a3b2".
  • Decompressing "a3b2" should return "aaabb".
  • Empty input should return an empty string.
  • Application context loads successfully.

Deployment

To create a runnable JAR file:

mvn package
java -jar target/string-compression-api.jar

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published