{"id":1663,"url":"https://github.com/Albinzr/Gem","last_synced_at":"2025-08-02T04:32:30.941Z","repository":{"id":56912685,"uuid":"130572522","full_name":"Albinzr/Gem","owner":"Albinzr","description":"A light weight network library with automated model parser for rapid development","archived":false,"fork":false,"pushed_at":"2020-05-13T08:27:48.000Z","size":9170,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-19T08:52:21.009Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/Albinzr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-22T13:58:21.000Z","updated_at":"2022-11-19T20:57:34.000Z","dependencies_parsed_at":"2022-08-21T03:20:30.023Z","dependency_job_id":null,"html_url":"https://github.com/Albinzr/Gem","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Albinzr/Gem","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Albinzr%2FGem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Albinzr%2FGem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Albinzr%2FGem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Albinzr%2FGem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Albinzr","download_url":"https://codeload.github.com/Albinzr/Gem/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Albinzr%2FGem/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268334618,"owners_count":24233793,"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-08-02T02:00:12.353Z","response_time":74,"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":[],"created_at":"2024-01-05T20:15:52.703Z","updated_at":"2025-08-02T04:32:29.671Z","avatar_url":"https://github.com/Albinzr.png","language":"Swift","funding_links":[],"categories":["Networking"],"sub_categories":["Video","Other free courses"],"readme":"# Gem\nA light weight network library with automated model parser for rapid development.\n\n[![Swift 4.1](https://img.shields.io/badge/Swift-4.1-orange.svg?style=flat)](https://developer.apple.com/swift/)\n[![Platforms iOS](https://img.shields.io/badge/Platforms-iOS-lightgray.svg?style=flat)](https://developer.apple.com/swift/)\n[![Xcode 9.2](https://img.shields.io/badge/Xcode-9.2-blue.svg?style=flat)](https://developer.apple.com/swift/)\n[![Gemnasium](https://img.shields.io/gemnasium/mathiasbynens/he.svg)]()\n[![Ratting](https://img.shields.io/amo/rating/dustman.svg)]()\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg)]()\n\n\nManaging all http request with automated model parser calls in app with closure\n\n## Requirements\n\n* iOS 10.0+\n* Swift 4.1+\n* Xcode 9.2+\n\n## Installation\n\n### CocoaPods\n\nTask is available through [CocoaPods](http://cocoapods.org). To install\nit, simply add the following line to your Podfile:\n\n```ruby\nuse_frameworks!\n\npod \"Gem\"\n```\n\nor\n\n```ruby\nuse_frameworks!\n\npod 'Gem', git: 'https://github.com/Albinzr/Gem', :tag =\u003e '1.0.3'\n\n```\n\n### Carthage\n\nTo integrate Task into your Xcode project using Carthage, specify it in your Cartfile:\n\n```ruby\ngithub \"Albinzr/Gem\"\n```\n\n## Usage \u0026 Requirement\n   1. All model class should have Codable protocol\n   2. Naming for variable should be as follow\n ```swift\n            \n            //json\n            {\n                name:\"Albin CR\",\n                published_on:123455,\n                Time:\"23.10\"\n                \n             }\n            // model class\n            class Details:Codable{\n                var name:String? // same variable as in json\n                var publishedOn:Int? // incase of snake casing use camel casing of the same name\n                var Time:String // same variable as in json\n            }\n ```\n\n## Example\n\n\n### Get Request\n\n```swift\n\n//model\n\nclass User:Codable{\n    \n    var id:Int?\n    var name:String?\n    var username:String?\n    var email:String?\n    var address:Address?\n    var phone:String?\n    var website:String?\n    var company:Company?\n    \n}\n\nGem.request(url: \"https://jsonplaceholder.typicode.com/uses\", method: Methods.get, model:User.self, \n    Success: { (data, response) in        \n                 // success block\n                print(data,response)\n      \n        }) { (error, response) in\n              //error block\n              print(error,response)\n            \n        }\n\n```\nresponse - contain all details related to network call like status code etc..\n\n\n### Post Request\n\n```swift\n\nclass User:Codable{\n    \n    var id:Int?\n    var name:String?\n    var username:String?\n    var email:String?\n    var address:Address?\n    var phone:String?\n    var website:String?\n    var company:Company?\n    \n}\n\nlet param: [String : Any] = [\n            \"id\":12324,\n            \"name\":\"Albin CR\",\n            \"username\":\"Albi\",\n            \"email\":\"albinzr@gmail.com\",\n            \"phone\":\"8907575123\",\n            \"website\":\"www.albin.in\",\n            \"company\":[\n                \"name\":\"Quin\",\n                \"catchPhrase\":\"Time to change\",\n                \"bs\":\"Pika\",\n            ]\n        ]\n        Gem.request(url: \"https://jsonplaceholder.typicode.com/posts\", method: Methods.post,parameter:param,header:nil, model:User.self, Success: { (data, response) in\n            \n            print(data,response ?? \"\")\n            print(\"success\")\n            \n        }) { (error, response) in\n            \n            print(error ?? \"\",response!.statusCode)\n            \n        }\n        \n```\n### ImageUpload\n\n```swift\n\nclass ImageUpload:Codable{\n    \n    var link:String?\n    var width:Float?\n    var height:Float?\n    var id:String?\n    \n}\n\nlet image:UIImage = UIImage(named: \"scan\") // or image url \n        let imageData:Data = UIImagePNGRepresentation(image)!\n        let base64Data =  imageData.base64EncodedString()\n        \n        let param:[String:Any] = [\n            \"image\":base64Data\n        ]\n        \n        let header:[String:String] = [\n            \"Authorization\":\"Client-ID {{your client key}}\",//replace your client key\n            \"Content-type\":\"multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'\"\n        ]\n        \n        Gem.request(url: \"https://api.imgur.com/3/image\", method: Methods.post,parameter:param,header:header,    model:ImageUpload.self, Success: { (data, response) in\n            \n            print(data,response ?? \"\")\n            print(\"success\")\n            \n        }) { (error, response) in\n            \n            print(error ?? \"\",response!.statusCode)\n            \n        }\n\n```\n#### PR/request/suggestions are always welcome\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlbinzr%2FGem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlbinzr%2FGem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlbinzr%2FGem/lists"}