{"id":30184668,"url":"https://github.com/studyresearchprojects/simple-file-transfer-server","last_synced_at":"2025-09-10T02:34:24.899Z","repository":{"id":104134303,"uuid":"298402256","full_name":"StudyResearchProjects/simple-file-transfer-server","owner":"StudyResearchProjects","description":"A simple Actix Web Server which performs CRUD operations on the File System","archived":false,"fork":false,"pushed_at":"2020-10-15T21:31:36.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-01T15:45:43.187Z","etag":null,"topics":["actix","filesystem","rust","transfer-server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StudyResearchProjects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-24T21:46:58.000Z","updated_at":"2025-05-27T00:10:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"54eef129-e3d0-4907-af24-de1289a0fa64","html_url":"https://github.com/StudyResearchProjects/simple-file-transfer-server","commit_stats":null,"previous_names":["leoborai/simple-file-transfer-server","valhallaban/simple-file-transfer-server","estebanborai/simple-file-transfer-server","studyresearchprojects/simple-file-transfer-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/StudyResearchProjects/simple-file-transfer-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StudyResearchProjects%2Fsimple-file-transfer-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StudyResearchProjects%2Fsimple-file-transfer-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StudyResearchProjects%2Fsimple-file-transfer-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StudyResearchProjects%2Fsimple-file-transfer-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StudyResearchProjects","download_url":"https://codeload.github.com/StudyResearchProjects/simple-file-transfer-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StudyResearchProjects%2Fsimple-file-transfer-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274402068,"owners_count":25278334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix","filesystem","rust","transfer-server"],"created_at":"2025-08-12T12:43:56.103Z","updated_at":"2025-09-10T02:34:24.890Z","avatar_url":"https://github.com/StudyResearchProjects.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv\u003e\n  \u003cdiv align=\"center\" style=\"display: block; text-align: center;\"\u003e\n    \u003cimg src=\"https://camo.githubusercontent.com/734a3468bce992fbc3b729562d41c92f4912c99a/68747470733a2f2f7777772e727573742d6c616e672e6f72672f7374617469632f696d616765732f727573742d6c6f676f2d626c6b2e737667\" height=\"120\" width=\"120\" /\u003e\n  \u003c/div\u003e\n  \u003ch1 align=\"center\"\u003esimple-file-transfer-server\u003c/h1\u003e\n  \u003ch4 align=\"center\"\u003e\n    A simple Actix Web Server which performs CRUD operations on the File System.\n  \u003c/h4\u003e\n\u003c/div\u003e\n\n## Motivation\n\nWrite a REST API with Actix capable of performing CRUD operations on the file system using `actix-web` and `futures`.\n\nThis approach is taken due to interest on understanding Rust Futures and getting to know the API better, current Actix\nversions make use of the `actix-web-rt`. Instead this version relies on `futures` to accomplish asynchronous programming.\n\nThe idea is inspired on the `file_transfer` project explained in \"Creative Projects for Rust Programmers\" by Carlo Milanesi,\nbut as the project evolved major changes were made in order to experiment other Rust features which are out of the scope\nof the book.\n\n## Running Locally\n\n```bash\n# clone the repository\ngit clone https://github.com/EstebanBorai/simple-file-transfer-server.git\n\n# step into project directory\ncd ./simple-file-transfer-server\n\n# run with cargo\ncargo run\n```\n\n## Endpoints\n\n\u003e Every filesystem operation will run in the included `archive` directory, if a request is send as `/hello_world.txt` then the path to the file in question will be `$PWD/archive/hello_world.txt`.\n\nMethod | URI | Description | Req. Body | Res. Body\n--- | --- | --- | --- | ---\n**GET** | `/:filename` | Reads the file specified in the path | N/A | `String`\n**POST** | `/:filename` | Creates a new file with the contents of the request body | `String` | `String`\n**PUT** | `/:filename` | Overwrites a file with the contents of the request body | `String` | `String`\n**DELETE** | `/:filename` | Removes the file specified in the path | N/A | N/A\n\n## Contributions\n\nAny contribution to this project is welcome, as pointed out above this project is inspired by\na book example but some changes where made to acomplish an universal usage and also to\nexperiment other features which are out of the scope of the book examples.\n\n## License\n\nLicensed under the GNU General Public License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudyresearchprojects%2Fsimple-file-transfer-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudyresearchprojects%2Fsimple-file-transfer-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudyresearchprojects%2Fsimple-file-transfer-server/lists"}