Skip to content

Commit

Permalink
v2.0.0 (#68)
Browse files Browse the repository at this point in the history
* feat: add decoding capability in case of failure caused due to HTTP status code

Resolves: none.

* feat: override User-Agent HTTP header in session configuration (#26)

Resolves: none.

* Add macOS example (#27)

* feat: move iOS example project into new sub folder

Resolves: none.

* fix: update framework search paths

Resolves: none.

* feat: add empt macOS example project to workspace

Resolves: none.

* fix: update framework scheme name

Resolves: none.

* feat: add files to macOS example directory

Resolves: none.

* fix: apply public access modifier to DefaultHTTPErrorBody and DefaultNetworkAPIError

Resolves: none.

* refactor: add description comment for ProcessInfo extension

Resolves: none.

* fix: add RxNetworkKit bridging header reference

Resolves: none.

* refactor: apply project recommended settings

Resolves: none.

* feat: connect viewModel to tableview UI

Resolves: none.

* feat: complete ViewController class in macOS Example

Resolves: none.

* refactor: remove old un-needed file

Resolves: none.

* fix: apply correct image scale for error view

Resolves: none.

* Apply new version (0.0.2) (#28)

* fix: remove tinted button warning

Resolves: none.

* version: 0.0.2

Resolves: none.

* fix: update version for podSpec file

Resolves: none.

* fix: remove RxDataSources import statement (#31)

Resolves: none.

* Add CI Workflows For Repository (#33)

* feat: add iOS workflow

Resolves: none.

* fix: update build-ios.yml

Resolves: none.

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Create build-macos.yml

* Update build-ios.yml + build-macos.yml

* fix error 65

* Update build-ios.yml

* update build-ios.yml + build-macos.yml

* Update build-macos.yml

* Update project.pbxproj

* add publish-podspec.yml

* add workflow files outside of folders

* Update publish-podspec.yml

* Update publish-podspec.yml

* Update publish-podspec.yml

* Create pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* test container workflow

* Update build.yml

* Update build.yml

* add some changes

* Update build.yml

* add some changes

* Update build.yml

* refactor: update names + remove comments

Resolves: none.

* add trigger for trunk push workflow

* add dummy project to test SPM integration

* add spm-lint.yml

* Update spm-lint.yml

* Update spm-lint.yml

* Update spm-lint.yml

* Update spm-lint.yml

* update dummy project

* update workspace dependencies versions

* Update CI Workflows

* update CI workflows

* Update CI Workflow

* Update Dependency Version Rules (#45)

* fix: update version rules for SPM to upToNextMajor

Resolves: none.

* fix: update version rule for SPM in iOS Example project

Resolves: none.

* fix: update version rules for cocoapods in podspec file

Resolves: none.

* feat: add WebSocket capability to NetworkManager (#46)

Resolves: none.

* fix a typo

* update dependencies versions

Resolves: none.

* update Package.swift + podspec file

* change xcode version used in CI/CD to 14.3.1

Resolves: none.

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update build.yml

* Update build.yml

* update workflow files

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-trunk-push.yml

* Update spm-lint.yml

* Update build-macos.yml

* update Xcode version to 15.0.0 for CI workflows

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* Update pod-lib-lint.yml

* break: drop support for Cocoapods (cannot work with Xcode 15)

Resolves: none.

* [49][DocC][Update Documentation] (#50)

* feat: update overview for classes, structs, enums, typaliases and protocols

Resolves: none.

* feat: add docs catalog

Resolves: none.

* update CI workflows to build docs

Resolves: none.

* update CI workflows

Resolves: none.

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* Update build-ios.yml

* fix: update corrupt ci workflow file

Resolves: none.

* Delete build-deploy-docs1.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* update CI workflows

* Update build.yml

* Update build-ios.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update build-deploy-docs.yml

* Update websocket error handling (#58)

* feature: bind send and ping errors to the error relay in WebSocket object

Resolves: none.

* fix: capture weak reference to self to avoid retain cycle in example viewModel

Resolves: none.

* feat: add WebSocketError

Resolves: none.

* Update NetworkManager.md

* Update build.yml

* Rename Types and Organize Project files (#61)

* feat: sort files by name inside Source folder

Resolves: none.

* feat: restructure framework project

Resolves: none.

* feat: update docs

Resolves: none.

* feat: update docs

Resolves: none.

* feat: update examples

Resolves: none.

* feat: update docs

Resolves: none.

* feat: move common http types to separate framework

Resolves: none.

* update ci

* update ci

* feat: add CoreHTTP as swift package

Resolves: none.

* Update Package.swift

* feat: add CoreHTTP as a remote Swift Package

Resolves: none.

* Update Package.swift

* Update Package.swift

* feat: update docs

Resolves: none.

* Update build-macos.yml

* Update build-macos.yml

* feat: add CoreExample framework

Resolves: none.

* feat: add CoreExample as a dependency

Resolves: none.

* feat: add CoreExample to macOS Example

Resolves: none.

* fix: update code signing for framework

Resolves: none.

* Update build-macos.yml

* Update build-macos.yml

* update frameworks flow

* Update build-ios.yml

* Update Package.resolved

* Update project.pbxproj

* Update project.pbxproj

* Update build-ios.yml

* update dependencies

* feat: add Session object that can be shared between RESTClient and HTTPClient

Resolves: none.

* refactor: remove reference to event monitor in RESTClient and HTTPClient

Resolves: none.

* feat: update ci workflows

Resolves: none.

* feat: update documentation

Resolves: none.

* Update build.yml

* Update build.yml

* feat: bump Xcode version to 15.1.0 for workflow files

Resolves: none.

* Feature/add watch os example (#62)

* feat: add watch os example

Resolves: none.

* Update ViewController.swift

* Update build.yml

* Update build-watchos.yml

* Update build-watchos.yml

* Update README.md

* Update README.md

* Update README.md

* feat: bump product version to 1.0.0

Resolves: none.

* fix: silence warnings

Resolves: none.

* feat: add watchOS platform to package manifest + sort files

Resolves: none.

* Feature/add tvos support (#63)

* feat: add tvOS support + example

Resolves: none.

* Update build.yml

* Update build.yml

* Update build-tvos.yml

* feat: update documentation

Resolves: none.

* Update README.md

* feat: update Dummy project used to verify SPM

Resolves: none.

* fix: update README.md + add missing initializers

Resolves: none.

* Update RxNetworkKit.md

* Update spm-lint.yml

* fix: update ci file + remove typo

Resolves: none.

* Feature/add request logging (#67)

* feat: add HTTPRequestLogger and SessionConfiguration

Resolves: none.

* fix: update examples

Resolves: none.

* feat: remove un-needed files + update RequestRouter

Resolves: none

* Update Package.resolved

* Update README.md
  • Loading branch information
loay-ashraf committed Jan 25, 2024
1 parent 797c7a4 commit 956c797
Show file tree
Hide file tree
Showing 29 changed files with 483 additions and 158 deletions.
3 changes: 1 addition & 2 deletions Examples/iOS/iOS Example/Controller/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ class ViewController: UIViewController {
/// Initializes ViewModel object.
private func setupViewModel() {
let requestInterceptor = RequestInterceptor()
let requestEventMointor = RequestEventMonitor()
let session = Session(configuration: .default, eventMonitor: requestEventMointor)
let session = Session(configuration: .default)
let restClient = RESTClient(session: session, requestInterceptor: requestInterceptor)
let httpClient = HTTPClient(session: session, requestInterceptor: requestInterceptor)
viewModel = .init(restClient: restClient, httpClient: httpClient)
Expand Down
3 changes: 1 addition & 2 deletions Examples/macOS/macOS Example/Controller/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ class ViewController: NSViewController {
/// Initializes ViewModel object.
private func setupViewModel() {
let requestInterceptor = RequestInterceptor()
let requestEventMointor = RequestEventMonitor()
let session = Session(configuration: .default, eventMonitor: requestEventMointor)
let session = Session(configuration: .default)
let restClient = RESTClient(session: session, requestInterceptor: requestInterceptor)
let httpClient = HTTPClient(session: session, requestInterceptor: requestInterceptor)
viewModel = .init(restClient: restClient, httpClient: httpClient)
Expand Down
3 changes: 1 addition & 2 deletions Examples/tvOS/tvOS Example/Controller/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ class ViewController: UIViewController {
/// Initializes ViewModel object.
private func setupViewModel() {
let requestInterceptor = RequestInterceptor()
let requestEventMointor = RequestEventMonitor()
let session = Session(configuration: .default, eventMonitor: requestEventMointor)
let session = Session(configuration: .default)
let restClient = RESTClient(session: session, requestInterceptor: requestInterceptor)
let httpClient = HTTPClient(session: session, requestInterceptor: requestInterceptor)
viewModel = .init(restClient: restClient, httpClient: httpClient)
Expand Down
3 changes: 1 addition & 2 deletions Examples/watchOS/watchOS Example/View/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ struct MainView: View {
/// Initializer
init() {
let requestInterceptor = RequestInterceptor()
let requestEventMointor = RequestEventMonitor()
let session = Session(configuration: .default, eventMonitor: requestEventMointor)
let session = Session(configuration: .default)
let restClient = RESTClient(session: session, requestInterceptor: requestInterceptor)
let httpClient = HTTPClient(session: session, requestInterceptor: requestInterceptor)
viewModel = .init(restClient: restClient, httpClient: httpClient)
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ It makes use of RxSwift's traits at request level to acheive a high level of spe

```
// Create `Session` instance.
let session = Session(configuration: .default, eventMonitor: self)
let session = Session(configuration: .default)
// Create 'RESTClient' instance.
let restClient = RESTClient(session: session, requestInterceptor: self)
// Create `HTTPRequestRouter` instance.
Expand All @@ -57,7 +57,7 @@ single

```
// Create `Session` instance.
let session = Session(configuration: .default, eventMonitor: self)
let session = Session(configuration: .default)
// Create 'HTTPClient' instance.
let httpClient = HTTPClient(session: session, requestInterceptor: self)
// Create `HTTPDownloadRequestRouter` instance.
Expand Down Expand Up @@ -88,7 +88,7 @@ downloadObservable

```
// Create `Session` instance.
let session = Session(configuration: .default, eventMonitor: self)
let session = Session(configuration: .default)
// Create 'HTTPClient' instance.
let httpClient = HTTPClient(session: session, requestInterceptor: self)
// Create `HTTPUploadRequestRouter` instance.
Expand Down Expand Up @@ -133,7 +133,7 @@ Once you have your Swift package set up, adding RxNetworkKit as a dependency is

```swift
dependencies: [
.package(url: "https://github.com/loay-ashraf/RxNetworkKit.git", .upToNextMajor(from: "1.0.0"))
.package(url: "https://github.com/loay-ashraf/RxNetworkKit.git", .upToNextMajor(from: "2.0.0"))
]
```

Expand Down
64 changes: 58 additions & 6 deletions RxNetworkKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@
0B77E0BD29D968DE0077FBC0 /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 0B77E0BC29D968DE0077FBC0 /* RxSwift */; };
0B77E0C029D969370077FBC0 /* RxSwiftExt in Frameworks */ = {isa = PBXBuildFile; productRef = 0B77E0BF29D969370077FBC0 /* RxSwiftExt */; };
C6049B162A95307800E5727E /* RxNetworkKit.h in Headers */ = {isa = PBXBuildFile; fileRef = C6049B152A95307800E5727E /* RxNetworkKit.h */; };
C61A7E242B6276F800407C38 /* HTTPRequestLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E232B6276F800407C38 /* HTTPRequestLogger.swift */; };
C61A7E262B62782D00407C38 /* Reactive+RESTResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E252B62782D00407C38 /* Reactive+RESTResponse.swift */; };
C61A7E2A2B62794900407C38 /* URLSession+OutgoingRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E292B62794900407C38 /* URLSession+OutgoingRequest.swift */; };
C61A7E2C2B62798800407C38 /* URLRequest+CURLCommand.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E2B2B62798800407C38 /* URLRequest+CURLCommand.swift */; };
C61A7E2E2B6279C700407C38 /* Data+JSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E2D2B6279C700407C38 /* Data+JSON.swift */; };
C61A7E302B627B3000407C38 /* SessionConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E2F2B627B3000407C38 /* SessionConfiguration.swift */; };
C61A7E322B62885F00407C38 /* URLSession+LogRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61A7E312B62885F00407C38 /* URLSession+LogRequests.swift */; };
C61CB5642AF2CFDD006A203A /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61CB5632AF2CFDD006A203A /* Session.swift */; };
C623E7B42AD6262A00A20A0A /* CoreHTTP in Frameworks */ = {isa = PBXBuildFile; productRef = C623E7B32AD6262A00A20A0A /* CoreHTTP */; };
C6554A2B2AD5BBB60090DD3A /* RESTClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6554A2A2AD5BBB60090DD3A /* RESTClient.swift */; };
Expand Down Expand Up @@ -93,6 +100,13 @@
0B77E08629D965D30077FBC0 /* HTTPDownloadRequestRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPDownloadRequestRouter.swift; sourceTree = "<group>"; };
0B77E08829D965D30077FBC0 /* HTTPUploadRequestRouter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPUploadRequestRouter.swift; sourceTree = "<group>"; };
C6049B152A95307800E5727E /* RxNetworkKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxNetworkKit.h; sourceTree = "<group>"; };
C61A7E232B6276F800407C38 /* HTTPRequestLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPRequestLogger.swift; sourceTree = "<group>"; };
C61A7E252B62782D00407C38 /* Reactive+RESTResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Reactive+RESTResponse.swift"; sourceTree = "<group>"; };
C61A7E292B62794900407C38 /* URLSession+OutgoingRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+OutgoingRequest.swift"; sourceTree = "<group>"; };
C61A7E2B2B62798800407C38 /* URLRequest+CURLCommand.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLRequest+CURLCommand.swift"; sourceTree = "<group>"; };
C61A7E2D2B6279C700407C38 /* Data+JSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+JSON.swift"; sourceTree = "<group>"; };
C61A7E2F2B627B3000407C38 /* SessionConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionConfiguration.swift; sourceTree = "<group>"; };
C61A7E312B62885F00407C38 /* URLSession+LogRequests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+LogRequests.swift"; sourceTree = "<group>"; };
C61CB5632AF2CFDD006A203A /* Session.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Session.swift; sourceTree = "<group>"; };
C6554A2A2AD5BBB60090DD3A /* RESTClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RESTClient.swift; sourceTree = "<group>"; };
C6554A2C2AD5C1560090DD3A /* HTTPClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -180,10 +194,38 @@
path = Reachability;
sourceTree = "<group>";
};
C61CB5622AF2CF31006A203A /* Session */ = {
C61A7E222B6276D900407C38 /* Logger */ = {
isa = PBXGroup;
children = (
C61A7E232B6276F800407C38 /* HTTPRequestLogger.swift */,
);
path = Logger;
sourceTree = "<group>";
};
C61A7E272B6278A900407C38 /* Types */ = {
isa = PBXGroup;
children = (
C61CB5632AF2CFDD006A203A /* Session.swift */,
C61A7E2F2B627B3000407C38 /* SessionConfiguration.swift */,
);
path = Types;
sourceTree = "<group>";
};
C61A7E282B6278B500407C38 /* Extensions */ = {
isa = PBXGroup;
children = (
C6A9BEFE2A93FB1D00459E32 /* ProcessInfo+operatingSystemName.swift */,
C6A9BEF92A93F16200459E32 /* URLSessionConfiguration+setAdditionalHTTPHeader.swift */,
C6A9BEFC2A93FAF100459E32 /* URLSessionConfiguration+setUserAgentHTTPHeader.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
C61CB5622AF2CF31006A203A /* Session */ = {
isa = PBXGroup;
children = (
C61A7E282B6278B500407C38 /* Extensions */,
C61A7E272B6278A900407C38 /* Types */,
);
path = Session;
sourceTree = "<group>";
Expand Down Expand Up @@ -220,6 +262,7 @@
isa = PBXGroup;
children = (
C6554A342AD5C6830090DD3A /* Event */,
C61A7E222B6276D900407C38 /* Logger */,
C6554A2E2AD5C4F30090DD3A /* Parameters */,
C6554A312AD5C5940090DD3A /* Router */,
);
Expand Down Expand Up @@ -247,9 +290,9 @@
isa = PBXGroup;
children = (
0B77E05529D965D30077FBC0 /* Data+AppendString.swift */,
C61A7E2D2B6279C700407C38 /* Data+JSON.swift */,
0B77E08029D965D30077FBC0 /* Observable+Decodable.swift */,
0B77E07F29D965D30077FBC0 /* Observable+Retry.swift */,
C6A9BEFE2A93FB1D00459E32 /* ProcessInfo+operatingSystemName.swift */,
0B77E08429D965D30077FBC0 /* Reactive+Curl.swift */,
0B77E05029D965D30077FBC0 /* Reactive+URLSessionAdaptedDownloadResponse.swift */,
0B77E05629D965D30077FBC0 /* Reactive+URLSessionAdaptedUploadResponse.swift */,
Expand All @@ -258,21 +301,23 @@
C6BDFFEB2ACDF4100022F675 /* Reactive+WebSocketPing.swift */,
C6BDFFE72ACDF3830022F675 /* Reactive+WebSocketReceive.swift */,
C6BDFFE92ACDF3D90022F675 /* Reactive+WebSocketSend.swift */,
C61A7E2B2B62798800407C38 /* URLRequest+CURLCommand.swift */,
0B77E04F29D965D30077FBC0 /* URLSession+DownloadTask.swift */,
C61A7E312B62885F00407C38 /* URLSession+LogRequests.swift */,
C61A7E292B62794900407C38 /* URLSession+OutgoingRequest.swift */,
0B77E05429D965D30077FBC0 /* URLSession+UploadTask.swift */,
C6A9BEF92A93F16200459E32 /* URLSessionConfiguration+setAdditionalHTTPHeader.swift */,
C6A9BEFC2A93FAF100459E32 /* URLSessionConfiguration+setUserAgentHTTPHeader.swift */,
);
path = Extensions;
sourceTree = "<group>";
};
C6554A372AD5C7AD0090DD3A /* Extensions */ = {
isa = PBXGroup;
children = (
0B77E08229D965D30077FBC0 /* Completable+Retry.swift */,
C61A7E252B62782D00407C38 /* Reactive+RESTResponse.swift */,
0B77E07B29D965D30077FBC0 /* Single+CatchErrors.swift */,
0B77E07D29D965D30077FBC0 /* Single+Decodable.swift */,
0B77E07A29D965D30077FBC0 /* Single+Decode.swift */,
0B77E08229D965D30077FBC0 /* Completable+Retry.swift */,
0B77E07929D965D30077FBC0 /* Single+Retry.swift */,
0B77E07C29D965D30077FBC0 /* Single+VerifyResponse.swift */,
);
Expand Down Expand Up @@ -421,6 +466,7 @@
C6A9BEFF2A93FB1D00459E32 /* ProcessInfo+operatingSystemName.swift in Sources */,
0B77E08E29D965D30077FBC0 /* HTTPUploadRequestFile.swift in Sources */,
0B77E08D29D965D30077FBC0 /* HTTPUploadRequestFormData.swift in Sources */,
C61A7E262B62782D00407C38 /* Reactive+RESTResponse.swift in Sources */,
0B77E0AF29D965D30077FBC0 /* Single+Decodable.swift in Sources */,
C69A78562ACF001400ECF092 /* Docs.docc in Sources */,
0B77E0A129D965D30077FBC0 /* NWInterfaceType+RawRepresentable.swift in Sources */,
Expand All @@ -431,6 +477,8 @@
0B77E09129D965D30077FBC0 /* Reactive+URLSessionAdaptedUploadResponse.swift in Sources */,
C6A9BEFA2A93F16200459E32 /* URLSessionConfiguration+setAdditionalHTTPHeader.swift in Sources */,
C6BDFFF32ACDF5100022F675 /* WebSocketMessage.swift in Sources */,
C61A7E242B6276F800407C38 /* HTTPRequestLogger.swift in Sources */,
C61A7E302B627B3000407C38 /* SessionConfiguration.swift in Sources */,
C6B4B4C42AD47A2F009073ED /* WebSocketError.swift in Sources */,
0B77E0A429D965D30077FBC0 /* NetworkReachability.swift in Sources */,
0B77E0B229D965D30077FBC0 /* Completable+Retry.swift in Sources */,
Expand All @@ -439,19 +487,23 @@
C6BDFFF52ACDF5250022F675 /* WebSocketCloseCode.swift in Sources */,
0B77E0B629D965D30077FBC0 /* HTTPUploadRequestRouter.swift in Sources */,
0B77E0AB29D965D30077FBC0 /* Single+Retry.swift in Sources */,
C61A7E2C2B62798800407C38 /* URLRequest+CURLCommand.swift in Sources */,
0B77E08F29D965D30077FBC0 /* URLSession+UploadTask.swift in Sources */,
0B77E08C29D965D30077FBC0 /* Reactive+URLSessionAdaptedDownloadResponse.swift in Sources */,
0B77E0A229D965D30077FBC0 /* NWInterfaceType+CaseIterable.swift in Sources */,
C6BDFFEE2ACDF46A0022F675 /* WebSocket.swift in Sources */,
C61CB5642AF2CFDD006A203A /* Session.swift in Sources */,
0B77E09329D965D30077FBC0 /* Reactive+URLSessionUploadResponse.swift in Sources */,
0B77E0AC29D965D30077FBC0 /* Single+Decode.swift in Sources */,
C61A7E2E2B6279C700407C38 /* Data+JSON.swift in Sources */,
0B77E0A329D965D30077FBC0 /* NetworkInterfaceType.swift in Sources */,
0B77E09229D965D30077FBC0 /* HTTPUploadRequestEvent.swift in Sources */,
0B77E09029D965D30077FBC0 /* Data+AppendString.swift in Sources */,
C6BDFFE82ACDF3830022F675 /* Reactive+WebSocketReceive.swift in Sources */,
C61A7E322B62885F00407C38 /* URLSession+LogRequests.swift in Sources */,
0B77E08929D965D30077FBC0 /* Reactive+URLSessionDownloadResponse.swift in Sources */,
C6554A2D2AD5C1560090DD3A /* HTTPClient.swift in Sources */,
C61A7E2A2B62794900407C38 /* URLSession+OutgoingRequest.swift in Sources */,
C6BDFFEC2ACDF4100022F675 /* Reactive+WebSocketPing.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -708,7 +760,7 @@
repositoryURL = "https://github.com/loay-ashraf/CoreHTTP";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.0;
minimumVersion = 2.0.0;
};
};
/* End XCRemoteSwiftPackageReference section */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/loay-ashraf/CoreHTTP",
"state" : {
"revision" : "17b030a4a10ac9449e6c107bce13f112280aae6b",
"version" : "1.0.0"
"revision" : "d38c3063412e7121bbb5a1fcef3089d847865266",
"version" : "2.0.1"
}
},
{
Expand Down
4 changes: 0 additions & 4 deletions Shared/CoreExample/CoreExample.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
C62E15252AD77BDF003CB8FA /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C62E14DC2AD77747003CB8FA /* ViewModel.swift */; };
C62E15292AD77C39003CB8FA /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = C62E15282AD77C39003CB8FA /* RxSwift */; };
C62E153E2AD78417003CB8FA /* RequestInterceptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C62E153D2AD78417003CB8FA /* RequestInterceptor.swift */; };
C62E15402AD78483003CB8FA /* RequestEventMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C62E153F2AD78483003CB8FA /* RequestEventMonitor.swift */; };
C63EEB352AD7BE17003A64CA /* RxNetworkKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C62E15042AD77AA4003CB8FA /* RxNetworkKit.framework */; };
C63EEB4A2AD7C4B6003A64CA /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = C63EEB492AD7C4B6003A64CA /* RxCocoa */; };
/* End PBXBuildFile section */
Expand All @@ -32,7 +31,6 @@
C62E15172AD77B8F003CB8FA /* CoreExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreExample.framework; sourceTree = BUILT_PRODUCTS_DIR; };
C62E15192AD77B8F003CB8FA /* CoreExample.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreExample.h; sourceTree = "<group>"; };
C62E153D2AD78417003CB8FA /* RequestInterceptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestInterceptor.swift; sourceTree = "<group>"; };
C62E153F2AD78483003CB8FA /* RequestEventMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestEventMonitor.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -92,7 +90,6 @@
C62E14D52AD77729003CB8FA /* DownloadRequestRouter.swift */,
C62E14D42AD77729003CB8FA /* RequestRouter.swift */,
C62E153D2AD78417003CB8FA /* RequestInterceptor.swift */,
C62E153F2AD78483003CB8FA /* RequestEventMonitor.swift */,
);
path = Network;
sourceTree = "<group>";
Expand Down Expand Up @@ -215,7 +212,6 @@
C62E153E2AD78417003CB8FA /* RequestInterceptor.swift in Sources */,
C62E15232AD77BDA003CB8FA /* ViewLoadType.swift in Sources */,
C62E15212AD77BD3003CB8FA /* RequestRouter.swift in Sources */,
C62E15402AD78483003CB8FA /* RequestEventMonitor.swift in Sources */,
C62E15202AD77BCC003CB8FA /* Model.swift in Sources */,
C62E15252AD77BDF003CB8FA /* ViewModel.swift in Sources */,
);
Expand Down
26 changes: 0 additions & 26 deletions Shared/CoreExample/Source/Network/RequestEventMonitor.swift

This file was deleted.

4 changes: 0 additions & 4 deletions Shared/CoreExample/Source/Network/RequestRouter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,4 @@ public enum RequestRouter: HTTPRequestRouter {
public var body: [String : Any]? {
nil
}
public var url: URL? {
let urlString = scheme.rawValue + domain + "/" + path
return URL(string: urlString)
}
}
20 changes: 20 additions & 0 deletions Source/HTTP/Extensions/Data+JSON.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//
// Data+JSON.swift
// RxNetworkKit
//
// Created by Loay Ashraf on 25/01/2024.
//

import Foundation

extension Data {

/// JSON formatted string for this `Data` object.
var json: String? {
guard let object = try? JSONSerialization.jsonObject(with: self, options: []),
let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted, .withoutEscapingSlashes]) else { return nil }
let prettyPrintedString = String(decoding: data, as: UTF8.self)
return prettyPrintedString
}

}
1 change: 1 addition & 0 deletions Source/HTTP/Extensions/Observable+Decodable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import Foundation
import RxSwift
import RxCocoa

extension Observable where Element == (response: HTTPURLResponse, data: Data) {
/// Creates `Completable` observable + handles transport errors.
Expand Down
Loading

0 comments on commit 956c797

Please sign in to comment.