{"id":26172078,"url":"https://github.com/tapwork/twnetworkmanager","last_synced_at":"2025-04-14T20:21:22.255Z","repository":{"id":26485505,"uuid":"29937546","full_name":"tapwork/TWNetworkManager","owner":"tapwork","description":null,"archived":false,"fork":false,"pushed_at":"2018-02-14T10:24:52.000Z","size":2772,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-28T08:35:41.080Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","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/tapwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-27T22:12:05.000Z","updated_at":"2020-11-04T10:12:56.000Z","dependencies_parsed_at":"2022-08-30T00:02:13.712Z","dependency_job_id":null,"html_url":"https://github.com/tapwork/TWNetworkManager","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FTWNetworkManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FTWNetworkManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FTWNetworkManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapwork%2FTWNetworkManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tapwork","download_url":"https://codeload.github.com/tapwork/TWNetworkManager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248952344,"owners_count":21188427,"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-11T19:53:12.634Z","updated_at":"2025-04-14T20:21:22.234Z","avatar_url":"https://github.com/tapwork.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TWNetworkManager\n[![Build Status](https://api.travis-ci.org/tapwork/TWNetworkManager.svg?style=flat)](https://travis-ci.org/tapwork/TWNetworkManager)\n[![CocoaPods Version](http://img.shields.io/cocoapods/v/TWNetworkManager.svg?style=flat)](https://github.com/tapwork/TWNetworkManager/blob/master/TWNetworkManager.podspec)\n[![](http://img.shields.io/cocoapods/l/TWNetworkManager.svg?style=flat)](https://github.com/tapwork/TWNetworkManager/blob/master/LICENSE.md)\n[![CocoaPods Platform](http://img.shields.io/cocoapods/p/TWNetworkManager.svg?style=flat)]()\n\n#####TWNetworkManager is a lightweight Objective-C network resource download library with caching support based on NSURLSession.\n\n#### Features\n* Download files with disk cache support (HTTP eTag and Last-Modified)\n* UIImage fetcher with memory and disk caching\n* Request resources without caching\n* HTTP method support: POST, GET, DELETE, PUT\n* Reachability\n\n# Why\nTWNetworkManager is a wrapper for NSURLSession with some extras and convenience methods. The purpose is NOT to replace AFNetworking. I just wanted to have a simple NSURLSession wrapper with caching support that everyone else can adapt easily.\n\n# Installation\nTWNetworkManager requires iOS 7 or later.\n### CocoaPods\n\nJust add the TWNetworkManager to your `Podfile`.\n```objc\npod 'TWNetworkManager'\n```\nand run `pod install` afterwards.\n\n### Without CocoaPods\nDownload the repository into your project via git or just as zip.\nDrag the `Classes` folder with the 4 files (`Reachability.h/m` \u0026 `TWNetworkManager.h/m`) folder into your Xcode project.\n\n# How to use it\nExample are still in Objective C. Sure, Swift works as well.\nMake sure to import the header file\n```objc\n#import \u003cTWNetworkManager/TWNetworkManager.h\u003e\n```\nThe `defaultManager` is the standard singleton instance. But TWNetworkManager can be used also as non singleton with `[[TWNetworkManager alloc] init]`.\n\n### Download\nThis method uses disk caching with HTTP `eTag` and `Last-Modified`.\n```objc\nNSURL *url = [NSURL URLWithString:@\"http://lorempixel.com/700/300/\"];\n[[TWNetworkManager defaultManager]\n          downloadURL:url\n          completion:^(NSData *data,\n                       NSString *localFilepath,\n                       BOOL isFromCache,\n                       NSError *error) {\n\n              // Do something with the data\n\n          }];\n```\n\n### Image download\nIt's a more convient method to get an UIImage.\nIt uses memory and also disk caching with HTTP `eTag` and `Last-Modified`.\n```objc\nNSURL *url = [NSURL URLWithString:@\"http://lorempixel.com/700/300/\"];\n[[TWNetworkManager defaultManager]\n     imageAtURL:url\n     completion:^(UIImage *image,\n                  NSString *localFilepath,\n                  BOOL isFromCache,\n                  NSError *error) {\n\n         self.imageView.image = image;\n     }];\n```\n\n### Request\nThis starts the download without any disk caching.\nAs parameter you can pass the HTTP methods:\u003cbr\u003e\nGET : `TWNetworkHTTPMethodGET`\u003cbr\u003e\nPOST : `TWNetworkHTTPMethodPOST`\u003cbr\u003e\nPUT : `TWNetworkHTTPMethodPUT`\u003cbr\u003e\nDELETE : `TWNetworkHTTPMethodDELETE`\u003cbr\u003e\n\n```objc\nNSURL *url = [NSURL URLWithString:@\"http://whatthecommit.com\"];\n[[TWNetworkManager defaultManager]\n     requestURL:url\n     type:TWNetworkHTTPMethodGET\n     completion:^(NSData *data,\n                  NSString *localFilepath,\n                  BOOL isFromCache,\n                  NSError *error) {\n\n         NSString *html = [[NSString alloc]\n                              initWithData:data\n                              encoding:NSASCIIStringEncoding];\n\n     }];\n```\n\n### More method calls\nThis resets the memory cache and deletes all cached data on disk\n```objc\n- (BOOL)reset;\n```\n\nThis cancels all running requests\n```objc\n- (BOOL)cancelAllRequests;\n```\n\nReturns a path of a cached file for a given NSURL\n```objc\n- (NSString *)cachedFilePathForURL:(NSURL *)url;\n```\n\nReturns YES if there is a cached file on disk for the given NSURL\n```objc\n- (BOOL)hasCachedFileForURL:(NSURL *)url;\n```\n\nReturns YES if the given NSURL is currently being progressed\n```objc\n- (BOOL)isProcessingURL:(NSURL *)url;\n```\n\nGood old Reachability\n```objc\n@property (nonatomic, readonly) BOOL isNetworkReachable;\n@property (nonatomic, readonly) BOOL isReachableViaWiFi;\n```\n\n# Example project\nTWNetworkManager comes with an example project and some unit tests. Just open `Example/TWNetworkManagerExample.xcworkspace`\n\n# Todo\n* ~~Test with Swift~~ (WORKS)\n* OS X Support\n\n# Other Frameworks\n* [AFNetworking](https://github.com/AFNetworking/AFNetworking) by [Mattt Thompson](https://twitter.com/mattt) which is probably the most used Objective-C 3rd party library.\n\n\n# Author\n* [Christian Menschel](http://github.com/tapwork) ([@cmenschel](https://twitter.com/cmenschel))\n\n\n# License\n[MIT](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapwork%2Ftwnetworkmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftapwork%2Ftwnetworkmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapwork%2Ftwnetworkmanager/lists"}