{"id":17686615,"url":"https://github.com/vinhnx/nvnetworkrequest","last_synced_at":"2025-10-24T15:39:44.873Z","repository":{"id":148466328,"uuid":"422848175","full_name":"vinhnx/NVNetworkRequest","owner":"vinhnx","description":"Simple Alamofire network layer.","archived":false,"fork":false,"pushed_at":"2021-10-30T12:07:50.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T20:47:46.482Z","etag":null,"topics":["alamofire","network"],"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/vinhnx.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":"2021-10-30T10:21:55.000Z","updated_at":"2023-03-07T16:13:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"f363de11-4138-4b6e-a6a7-5d9b21d6fec1","html_url":"https://github.com/vinhnx/NVNetworkRequest","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vinhnx/NVNetworkRequest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FNVNetworkRequest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FNVNetworkRequest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FNVNetworkRequest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FNVNetworkRequest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinhnx","download_url":"https://codeload.github.com/vinhnx/NVNetworkRequest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinhnx%2FNVNetworkRequest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280821833,"owners_count":26397425,"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-10-24T02:00:06.418Z","response_time":73,"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":["alamofire","network"],"created_at":"2024-10-24T10:45:27.243Z","updated_at":"2025-10-24T15:39:44.821Z","avatar_url":"https://github.com/vinhnx.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NVNetworkRequest\n\nAlamofire network layer\n\n### Installation\n\nAdd this to your Package dependencies:\n\n```swift\n dependencies: [\n   .package(url: \"https://github.com/vinhnx/NVNetworkRequest\", .upToNextMajor(from: \"0.1.3\"))\n],\n```\n\n### Usage\n\nConform to `EndpointEnvironment` protocol with environment enum (eg: development, staging, production...):\n```swift\nimport NVNetworkRequest\n\nenum Enviroment: EndpointEnvironment {\n    case development\n    case staging\n    case production\n\n    var baseURL: String {\n        switch self {\n        case .development, .staging:\n            return \"staging.quotable.io\"\n        case .production:\n            return \"api.quotable.io\"\n        }\n    }\n}\n```\n\nConform `EndpointPath` with any request request path:\n```swift\nenum APIPath: EndpointPath {\n    case random\n\n    var path: String {\n        switch self {\n        case .random: return \"random\"\n        }\n    }\n}\n```\n\nSubclass `NVNetworkRequest`\n```swift\nclass QuoteNetworkRequest: NVNetworkRequest {\n    \n    func fetch(\n        tags: [String]? = nil,\n        completion: @escaping ((Result\u003cQuote, Error\u003e) -\u003e Void)\n    ) {\n        var params: Parameters = [:]\n        if let tags = tags {\n            params[\"tags\"] = tags.joined(separator: \",\")\n        }\n\n        sendRequest(endpoint: APIPath.random.endpoint, model: Quote.self, method: .get, params: params, paramsEncoding: URLEncoding.queryString, completion: completion)\n    }\n    \n}\n```\n\nThen, configure API environment on app start, typically from AppDelegate didFinishLaunchingWithOptions:\n```swift\nEndpoint.configureEnvironment(Enviroment.production)\n```\n\nUsage:\n```swift\n        QuoteNetworkRequest().fetch { result in\n            switch result {\n            case .success(let response):\n                debugPrint(response)\n            case .failure(let error):\n                debugPrint(error)\n            }\n        }\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinhnx%2Fnvnetworkrequest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinhnx%2Fnvnetworkrequest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinhnx%2Fnvnetworkrequest/lists"}