Language Migration (#21)
* Blank slate * Added gitignore * Updated gitignore * Added rust code * Added modules * Fixed build issues * rustfmt * Updated models * Added parsers module * Updated utilities module * Updated main.rs * Updated api_parser and song model * Updated icarus_action model * Updated structs in managers module * Updated main.rs * More changes * Saving changes * Added new struct and methods * More changes. Not functional yet * Changed name of the project * Removed cmake workflow * Adding rust workflow * Adding code to the syncers module * Cargo formatting * Continuing work * Adding code to the syncers module * Added dependencies * Adding more code to the syncers module * Added more code to the syncers module It's not 100 percent done yet, I'll work on other modules * Added more code to the managers module * Added code to request a token * Cargo formatting * Adding more code to multi target upload * Adding more multi-target upload code and formatted code * Added more multi-upload code * cargo fmt * Got uploading functional and cargo fmt-ing * Uploading multi target works, but is buggy Not all of the songs are being uploaded * Added single target upload * Single target upload is functional but need to revisit multi-target upload Multi-target upload is broken now. Needs to be revisited * Fixed multi target upload * Can now retrieve songs * Downloading functionality is working * Delete functionality is operational * Updated README * More cleanup * Added test
This commit was merged in pull request #21.
This commit is contained in:
@@ -1,86 +1,67 @@
|
||||
# IcarusDownloadManager
|
||||
|
||||
IcarusDownloadManager is a Linux CLI software client application that has the feature of uploading and downloading songs from the [Icarus](https://github.com/kdeng00/Icarus) Music Server.
|
||||
IcarusDownloadManager is a CLI software client application that has the feature of uploading and downloading songs from the [Icarus](https://github.com/kdeng00/Icarus) Music Server.
|
||||
|
||||
|
||||
## Built With
|
||||
|
||||
* C++ with C++20 features
|
||||
* CMake
|
||||
* GCC >= 10 or Visual Studio >= 17 [2022]
|
||||
* [vcpkg](https://github.com/microsoft/vcpkg)
|
||||
* [json](https://github.com/nlohmann/json)
|
||||
* [openssl](https://github.com/openssl/openssl)
|
||||
* [curl](https://github.com/curl/curl)
|
||||
* [cpr](https://github.com/libcpr/cpr)
|
||||
* Rust
|
||||
* Cargo
|
||||
* futures
|
||||
* http
|
||||
* reqwst
|
||||
* serde
|
||||
* serde_json
|
||||
* tokio
|
||||
* tokio-util
|
||||
|
||||
|
||||
### Getting Started
|
||||
|
||||
Clone the repo
|
||||
|
||||
```
|
||||
```BASH
|
||||
git clone --recursive https://github.com/kdeng00/IcarusDownloadManager
|
||||
```
|
||||
|
||||
Install packages
|
||||
|
||||
```
|
||||
vcpkg install nlohman-json
|
||||
vcpkg install openssl
|
||||
vcpkg install curl
|
||||
vcpkg install cpr
|
||||
```
|
||||
|
||||
|
||||
Build the project:
|
||||
|
||||
```
|
||||
```BASH
|
||||
cd IcarusDownloadManager
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
cmake ..
|
||||
cmake --build . --config release -j
|
||||
cargo build
|
||||
```
|
||||
|
||||
The program has been built and can be executed by the binary file *icd*. For information on how to use icd, merely execute the program without any command line arguments.
|
||||
The program has been built and can be executed by the binary file *icarus-dm*. For information on how to use icarua-dm, merely execute the program without any command line arguments.
|
||||
|
||||
### Downloading Song
|
||||
|
||||
```BASH
|
||||
icd download -u spacecadet -p stellar40 -h https://icarus.com -b 15
|
||||
```
|
||||
|
||||
### Uploading Song
|
||||
|
||||
```BASH
|
||||
icd upload -u spacecadet -p stellar40 -h https://icarus.com -s /path/of/song.mp3
|
||||
icarus-dm download -u spacecadet -p stellar40 -h https://icarus.com -b 15
|
||||
```
|
||||
|
||||
### Uploading Song with metadata
|
||||
|
||||
```BASH
|
||||
icd upload-meta -u spacecadet -p stellar40 -h https://icarus.com -s /path/of/song.mp3 -t 1 -m /path/to/metadata/config/collection.json -ca /path/to/cover/art/image.png
|
||||
icarus-dm upload-meta -u spacecadet -p stellar40 -h https://icarus.com -s /path/of/song.mp3 -t 1 -m /path/to/metadata/config/collection.json -ca /path/to/cover/art/image.png
|
||||
```
|
||||
|
||||
### Uploading Song with metadata from directory
|
||||
|
||||
```BASH
|
||||
icd upload-meta -u spacecadet -p stellar40 -h https://icarus.com -smca /path/where/songs/and/metadata/exists/
|
||||
icarus-dm upload-meta -u spacecadet -p stellar40 -h https://icarus.com -smca /path/where/songs/and/metadata/exists/
|
||||
```
|
||||
|
||||
|
||||
### Retrieving Song in json
|
||||
|
||||
```Bash
|
||||
icd retrieve -u spacecadet -p stellar40 -h https://icarus.com -rt songs
|
||||
icarus-dm retrieve -u spacecadet -p stellar40 -h https://icarus.com -rt songs
|
||||
```
|
||||
|
||||
### Deleting Song
|
||||
|
||||
```BASH
|
||||
icd delete -u spacecadet -p stellar40 -h https://icarus.com -D 15
|
||||
icarus-dm delete -u spacecadet -p stellar40 -h https://icarus.com -D 15
|
||||
```
|
||||
|
||||
|
||||
@@ -90,6 +71,7 @@ Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on the code of conduc
|
||||
|
||||
## Versioning
|
||||
|
||||
[v0.4.0](https://github.com/kdeng00/IcarusDownloadManager/releases/tag/v0.4.0)
|
||||
[v0.3.2](https://github.com/kdeng00/IcarusDownloadManager/releases/tag/v0.3.2)
|
||||
[v0.3.0](https://github.com/kdeng00/IcarusDownloadManager/releases/tag/v0.3.0)
|
||||
[v0.2.0](https://github.com/kdeng00/IcarusDownloadManager/releases/tag/v0.2.0)
|
||||
@@ -97,12 +79,6 @@ Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on the code of conduc
|
||||
[v0.1.1](https://github.com/kdeng00/IcarusDownloadManager/releases/tag/v0.1.1)
|
||||
[v0.1.0](https://github.com/kdeng00/IcarusDownloadManager/releases/tag/0.1.0)
|
||||
|
||||
## Authors
|
||||
|
||||
* **Kun Deng** - [kdeng00](https://github.com/kdeng00)
|
||||
|
||||
See also the list of [contributors](https://github.com/kdeng00/Icarus/graphs/contributors) who participated in this project.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
|
||||
|
||||
Reference in New Issue
Block a user