{"id":18620348,"url":"https://github.com/ipavlidakis/putiokit","last_synced_at":"2025-04-11T02:31:03.931Z","repository":{"id":63912277,"uuid":"198076873","full_name":"ipavlidakis/PutioKit","owner":"ipavlidakis","description":"A wrapper around Put.io api","archived":false,"fork":false,"pushed_at":"2020-04-05T19:22:47.000Z","size":117,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-19T15:58:22.895Z","etag":null,"topics":["combine","ios","ios13","ipados","macos","putio","tvos","watchos","zero-dependencies"],"latest_commit_sha":null,"homepage":"https://api.put.io","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipavlidakis.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":"2019-07-21T15:59:07.000Z","updated_at":"2021-11-03T01:48:57.000Z","dependencies_parsed_at":"2023-01-14T13:16:03.244Z","dependency_job_id":null,"html_url":"https://github.com/ipavlidakis/PutioKit","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipavlidakis%2FPutioKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipavlidakis%2FPutioKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipavlidakis%2FPutioKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipavlidakis%2FPutioKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipavlidakis","download_url":"https://codeload.github.com/ipavlidakis/PutioKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248329544,"owners_count":21085557,"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":["combine","ios","ios13","ipados","macos","putio","tvos","watchos","zero-dependencies"],"created_at":"2024-11-07T04:05:49.999Z","updated_at":"2025-04-11T02:31:03.428Z","avatar_url":"https://github.com/ipavlidakis.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PutioKit\n\nA simple wrapper around put.io api. PutioKit wraps all available endpoints and provides an easy and typesafe way to interact with it.\nSupports:\n- macOS(\u003e=10.15)\n- iOS(\u003e=13.0)\n- iPadOS(\u003e=13.0)\n- watchOS(\u003e=6.0) \n- tvOS(\u003e=13.0)\n\n# Installation\n\n## SPM\n\nAdd the following in the _dependencies_ array in Package.swift\n\u003e .package(url: \"https://github.com/ipavlidakis/PutioKit.git\", from: \"1.0.0\")\n\n# Architecture\n\nThe kit is splitting the available endpoints from the API into seperate services: Currently you can find the following available services:\n\n* Account\n* Authentication\n* Config\n* Events\n* Files\n* Friends\n* RSS\n* Shares\n* Transfers\n* Zip\n\nEach services requires 3 things:\n1. An instance of the `ApiClientModel`\n2. An instance conforming to the `NetworkHandling` protocol\n3. An instance confroming to the `CredentialsStoring` protocol\n\n## ApiClientModel\n\nThe `ApiClientModel` struct represents your put.io application. It contains values like:\n* id\n* secret\n* name\n\nThe `ApiClientModel` is used to fill in the required information to communicate with the API.\n\n## NetworkHandling\n\nThe instance that will passed to the services will be used to perform all the network operations. The object is responsible to provide - additionally to the task execution role - a jsonDecoder responsible to parse the data received from the API but also a `decode` method that is used to seperate the different types of available results that may happen per request (e.g on a response for a File object the response may error. In that case the result is an `ErrorModel`. The decode method in `URLSession` is already hanlind those cases for you, so it can always return a meaningful result) \n\n\u003e For ease of use, `URLSession` conforms to `NetworkHandling`\n\n## CredentialsStoring\n\nThe instance that will passed to the service will be used to as a provider for the access token, required to communicate with the API\n\n# Next Steps\n- [ ] Write documentation\n- [ ] Provide a playground app\n- [ ] Setup actions on the repo\n- [ ] Write unit tests\n- [ ] Implement retry logic on failures\n- [ ] Add progress on uploadTasks\n- [ ] Add progress on dataTasks\n\n# Author\n\nIlias Pavlidakis\n- [mail](ipavlidakis@gmail.com)\n- [twitter](https://twitter.com/3liaspav)\n\n# License\n\nPutioKit is released under the MIT license. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipavlidakis%2Fputiokit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipavlidakis%2Fputiokit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipavlidakis%2Fputiokit/lists"}