{"id":26821193,"url":"https://github.com/realkinetic/cloud-ftp","last_synced_at":"2025-03-30T07:19:02.891Z","repository":{"id":62562810,"uuid":"89260313","full_name":"RealKinetic/cloud-ftp","owner":"RealKinetic","description":"Python Library for Interacting with Cloud Functions for FTP Support","archived":false,"fork":false,"pushed_at":"2017-04-27T17:45:00.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-05T19:43:14.884Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RealKinetic.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}},"created_at":"2017-04-24T16:00:48.000Z","updated_at":"2017-08-30T15:24:41.000Z","dependencies_parsed_at":"2022-11-03T15:30:49.295Z","dependency_job_id":null,"html_url":"https://github.com/RealKinetic/cloud-ftp","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RealKinetic%2Fcloud-ftp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RealKinetic%2Fcloud-ftp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RealKinetic%2Fcloud-ftp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RealKinetic%2Fcloud-ftp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RealKinetic","download_url":"https://codeload.github.com/RealKinetic/cloud-ftp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246286119,"owners_count":20753020,"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","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":[],"created_at":"2025-03-30T07:19:02.389Z","updated_at":"2025-03-30T07:19:02.873Z","avatar_url":"https://github.com/RealKinetic.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Cloud FTP\n\nSometimes there is a requirement to gain access to FTP files from Google App Engine.  Unfortunately, this is not natively supported leaving users to solve this problem using other mehods.\n\nThis library is a simple implementation and workaround of this limitation by utilizing other means.\n\nThe default implementations are very generic so users can customize, by example, as they see fit.  However, a simple implementation using Google Cloud Functions is included by default.\n\n### Google Cloud Functions\n\nA simple cloud function-based FTP provider is included.  Cloud functions are similar to AWS's lambdas in that they are deployable functions that execute on demand in a highly scalable manner.\n\nThis means that users of this default provider need to grab the cloud function at [ftp-bucket](https://github.com/RealKinetic/ftp-bucket) and follow the instructions there to deploy.\n\nThe workflow is as follows:\n1. FTP Provider (cloud function) accesses and FTP server on the consumer's behalf and moves that file to GCS.\n2. Storage Provider reaches out to GCS and downloads the file.\n\nThis is one possible use case, but users are free to implement FTP and Storage providers to tailor their use cases.  These interfaces (using ABC) are injected into the API layer so that piece should be reusable.\n\n### TODO:\n\nThere is a known limitation currently regarding the cloud function returning a 500 when a requested file cannot be found.  That will be addressed shortly.\n\nAuthors:\ndev@realkinetic.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealkinetic%2Fcloud-ftp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frealkinetic%2Fcloud-ftp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frealkinetic%2Fcloud-ftp/lists"}