├── .github
└── workflows
│ ├── create-release.yml
│ └── pull_request.yml
├── .gitignore
├── .jazzy.yaml
├── .swiftformat
├── .swiftlint.yml
├── .swiftpm
└── xcode
│ └── package.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── .versionrc
├── Brewfile
├── CHANGELOG.md
├── Cartfile
├── Cartfile.private
├── Cartfile.resolved
├── Dangerfile
├── Examples
├── Podfile
├── Podfile.lock
├── RxAlamofireDemo-iOS
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── MasterViewController.swift
├── RxAlamofireDemo-tvOS
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── App Icon & Top Shelf Image.brandassets
│ │ │ ├── App Icon - App Store.imagestack
│ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ ├── App Icon.imagestack
│ │ │ │ ├── Back.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Front.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Middle.imagestacklayer
│ │ │ │ │ ├── Content.imageset
│ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── Top Shelf Image Wide.imageset
│ │ │ │ └── Contents.json
│ │ │ └── Top Shelf Image.imageset
│ │ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── ViewController.swift
├── RxAlamofireDemo.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── RxAlamofireDemo-iOS.xcscheme
│ │ └── RxAlamofireDemo-tvOS.xcscheme
├── RxAlamofireDemo.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── pod_install.sh
└── project.yml
├── Gemfile
├── Gemfile.lock
├── LICENSE.md
├── Package.swift
├── README.md
├── RxAlamofire.podspec
├── RxAlamofire.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcshareddata
│ └── xcschemes
│ ├── RxAlamofire iOS.xcscheme
│ ├── RxAlamofire macOS.xcscheme
│ ├── RxAlamofire tvOS.xcscheme
│ └── RxAlamofire watchOS.xcscheme
├── Sources
└── RxAlamofire
│ ├── Cocoa
│ └── URLSession+RxAlamofire.swift
│ ├── Info.plist
│ └── RxAlamofire.swift
├── Tests
├── LinuxMain.swift
└── RxAlamofireTests
│ ├── RxAlamofireTests.swift
│ └── XCTestManifests.swift
├── cleanup.sh
├── pods.sh
├── project-carthage.yml
├── project-spm.yml
└── scripts
├── bump-version.sh
├── carthage.sh
└── xcframeworks.sh
/.github/workflows/create-release.yml:
--------------------------------------------------------------------------------
1 | name: Create release
2 |
3 | on:
4 | push:
5 | branches: [main]
6 |
7 | jobs:
8 | build:
9 | if: "!contains(github.event.head_commit.message, 'skip ci')"
10 | runs-on: macos-11.0
11 |
12 | steps:
13 | - uses: actions/checkout@v2
14 | with:
15 | fetch-depth: 0
16 |
17 | - name: Fetch all tags
18 | run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
19 |
20 | - name: Bump version
21 | run: |
22 | chmod +x ./scripts/bump-version.sh
23 | ./scripts/bump-version.sh
24 |
25 | # - name: Changelog
26 | # uses: scottbrenner/generate-changelog-action@master
27 | # id: Changelog
28 | # env:
29 | # REPO: ${{ github.repository }}
30 |
31 | - name: Push changes
32 | uses: ad-m/github-push-action@master
33 | with:
34 | github_token: ${{ secrets.GITHUB_TOKEN }}
35 | branch: ${{ github.ref }}
36 |
37 | - name: Restore SPM Cache
38 | uses: actions/cache@v1
39 | with:
40 | path: .build
41 | key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
42 | restore-keys: |
43 | ${{ runner.os }}-spm-
44 |
45 | - name: Release XCFrameworks
46 | run: |
47 | chmod +x ./scripts/xcframeworks.sh
48 | ./scripts/xcframeworks.sh
49 |
50 | - name: Create Release
51 | id: create_release
52 | uses: actions/create-release@v1
53 | env:
54 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55 | with:
56 | tag_name: ${{ env.RELEASE_VERSION }}
57 | release_name: RxAlamofire ${{ env.RELEASE_VERSION }}
58 | # body: |
59 | # ${{ steps.Changelog.outputs.changelog }}
60 | draft: false
61 | prerelease: false
62 |
63 | - name: Upload XCFramework
64 | uses: actions/upload-release-asset@v1
65 | env:
66 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67 | with:
68 | upload_url: ${{ steps.create_release.outputs.upload_url }}
69 | asset_path: ./RxAlamofire.xcframework.zip
70 | asset_name: RxAlamofire.xcframework.zip
71 | asset_content_type: application/zip
72 |
73 | - name: Deploy to Cocoapods
74 | run: |
75 | set -eo pipefail
76 | export RELEASE_VERSION="$(git describe --abbrev=0 | tr -d '\n')"
77 | RELEASE_VERSION=${RELEASE_VERSION:1}
78 | pod lib lint --allow-warnings
79 | pod trunk push --allow-warnings
80 | env:
81 | COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
82 |
--------------------------------------------------------------------------------
/.github/workflows/pull_request.yml:
--------------------------------------------------------------------------------
1 | name: Lint, build and test
2 |
3 | on:
4 | pull_request:
5 | branches: [main]
6 |
7 | jobs:
8 | build:
9 | runs-on: macos-11.0
10 |
11 | steps:
12 | - uses: actions/checkout@v2
13 | with:
14 | fetch-depth: 0
15 |
16 | - name: Fetch all tags
17 | run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
18 |
19 | - name: Resolve dependencies
20 | run: |
21 | brew bundle
22 | bundle
23 |
24 | - name: Danger
25 | run: |
26 | bundle exec danger
27 | env:
28 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29 |
30 | - name: Restore SPM Cache
31 | uses: actions/cache@v1
32 | with:
33 | path: .build
34 | key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}
35 | restore-keys: |
36 | ${{ runner.os }}-spm-
37 |
38 | - name: Build and test (SPM)
39 | run: |
40 | swift build
41 | swift test
42 |
43 | - name: Build Cocoapods iOS Demo
44 | run: |
45 | set -eo pipefail
46 | cd Examples
47 | xcodegen
48 | pod install --repo-update
49 | xcodebuild build -scheme 'RxAlamofireDemo-iOS' -workspace 'RxAlamofireDemo.xcworkspace' -sdk iphonesimulator -destination "platform=iOS simulator,name=iPhone 11"
50 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata
19 | *.swp
20 |
21 | ## Other
22 | *.xccheckout
23 | *.moved-aside
24 | *.xcuserstate
25 | *.xcscmblueprint
26 |
27 | ## Obj-C/Swift specific
28 | *.hmap
29 | *.ipa
30 |
31 | # CocoaPods
32 | #
33 | # We recommend against adding the Pods directory to your .gitignore. However
34 | # you should judge for yourself, the pros and cons are mentioned at:
35 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
36 | #
37 | Pods/
38 |
39 | # Carthage
40 | #
41 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
42 | Carthage/Checkouts
43 | Carthage/Build
44 |
45 | # Swift Package Manager
46 | .build
47 | Package.resolved
48 |
49 | .DS_Store
50 | **/.idea/**
51 |
52 | RxAlamofire-SPM.xcodeproj
--------------------------------------------------------------------------------
/.jazzy.yaml:
--------------------------------------------------------------------------------
1 | output: ../docs/RxAlamofire
2 | module: RxAlamofire
3 | xcodebuild_arguments:
4 | - -scheme
5 | - RxAlamofire iOS
--------------------------------------------------------------------------------
/.swiftformat:
--------------------------------------------------------------------------------
1 | --allman false
2 | --binarygrouping none
3 | --commas inline
4 | --comments ignore
5 | --decimalgrouping 3,6
6 | --elseposition same-line
7 | --empty void
8 | --exponentcase lowercase
9 | --exponentgrouping disabled
10 | --fractiongrouping disabled
11 | --disable blankLinesAroundMark
12 | --header ignore
13 | --hexgrouping 4,8
14 | --hexliteralcase uppercase
15 | --patternlet hoist
16 | --ifdef indent
17 | --indent 2
18 | --indentcase false
19 | --linebreaks lf
20 | --octalgrouping none
21 | --operatorfunc nospace
22 | --patternlet hoist
23 | --ranges nospace
24 | --self remove
25 | --semicolons inline
26 | --stripunusedargs closure-only
27 | --trimwhitespace always
28 | --wraparguments after-first
29 | --wrapcollections before-first
30 | --enable blankLinesBetweenScopes
31 | --enable redundantVoidReturnType
32 | --enable strongifiedSelf
33 | --enable trailingClosures
34 | --enable trailingSpace
35 | --enable typeSugar
36 | --enable spaceInsideParens
37 | --enable spaceInsideBrackets
38 | --enable spaceInsideBraces
39 | --enable spaceAroundOperators
40 | --enable spaceAroundBraces
41 | --enable redundantParens
42 | --enable redundantNilInit
43 | --enable consecutiveSpaces
44 | --enable anyObjectProtocol
45 | --disable isEmpty
--------------------------------------------------------------------------------
/.swiftlint.yml:
--------------------------------------------------------------------------------
1 | disabled_rules:
2 | - trailing_whitespace
3 | - trailing_comma
4 | - large_tuple
5 | - nesting
6 | - todo
7 | - operator_whitespace
8 | - colon
9 | - identifier_name
10 |
11 | opt_in_rules: # some rules are only opt-in
12 | - empty_count
13 | - yoda_condition
14 | # Find all the available rules by running:
15 | # swiftlint rules
16 |
17 | included:
18 | - Sources
19 | - Tests
20 | - Examples/RxAlamofireDemo-iOS
21 | - Examples/RxAlamofireDemo-tvOS
22 |
23 | # excluded: # paths to ignore during linting. Takes precedence over `included`.
24 |
25 | # configurable rules can be customized from this configuration file
26 | # binary rules can set their severity level
27 | force_cast: warning # implicitly
28 | force_try:
29 | severity: warning # explicitly
30 | # rules that have both warning and error levels, can set just the warning level
31 | # implicitly
32 | line_length: 180
33 | # they can set both implicitly with an array
34 | function_body_length: 120
35 | type_body_length:
36 | - 400 # warning
37 | - 500 # error
38 | # or they can set both explicitly
39 | file_length:
40 | warning: 500
41 | error: 1200
42 | # naming rules can set warnings/errors for min_length and max_length
43 | # additionally they can set excluded names
44 | generic_type_name:
45 | min_length: 1 # only warning
46 | max_length: 30
47 |
48 | type_name:
49 | min_length: 2 # only warning
50 | max_length: # warning and error
51 | warning: 100
52 | error: 120
53 | excluded: iPhone # excluded via string
54 | identifier_name:
55 | min_length:
56 | warning: 1
57 | reporter: "xcode"
58 |
--------------------------------------------------------------------------------
/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.versionrc:
--------------------------------------------------------------------------------
1 | {
2 | "releaseCommitMessageFormat": "chore(release): {{currentTag}} [skip ci]",
3 | "compareUrlFormat": "{{host}}/{{owner}}/{{repository}}/branches/compare/{{currentTag}}%0D{{previousTag}}",
4 | "commitUrlFormat": "{{host}}/{{owner}}/{{repository}}/commits/{{hash}}"
5 | }
6 |
--------------------------------------------------------------------------------
/Brewfile:
--------------------------------------------------------------------------------
1 | brew "xcodegen"
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4 |
5 | ### [6.1.2](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v6.1.2%0Dv6.1.1) (2021-06-07)
6 |
7 |
8 | ### Bug Fixes
9 |
10 | * Bump version script fix ([e3f47f4](https://github.com/RxSwiftCommunity/RxAlamofire/commits/e3f47f480432f305403cc9cefcd65bb346268377))
11 | * Carthage project files ([85249da](https://github.com/RxSwiftCommunity/RxAlamofire/commits/85249da4129c28fadcbc64d111469a0493f608f8))
12 | * remove unused step ([b233d56](https://github.com/RxSwiftCommunity/RxAlamofire/commits/b233d56929c9166835dd4b0f8b84c8c13e881cd9))
13 | * support RxSwift 6.2 for Carthage ([6c6508e](https://github.com/RxSwiftCommunity/RxAlamofire/commits/6c6508e0e389ac91718ebfe0c72eb469533c5d08))
14 |
15 | ### [6.1.2](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v6.1.2%0Dv6.1.1) (2021-06-07)
16 |
17 |
18 | ### Bug Fixes
19 |
20 | * Bump version script fix ([e3f47f4](https://github.com/RxSwiftCommunity/RxAlamofire/commits/e3f47f480432f305403cc9cefcd65bb346268377))
21 | * Carthage project files ([85249da](https://github.com/RxSwiftCommunity/RxAlamofire/commits/85249da4129c28fadcbc64d111469a0493f608f8))
22 | * remove unused step ([b233d56](https://github.com/RxSwiftCommunity/RxAlamofire/commits/b233d56929c9166835dd4b0f8b84c8c13e881cd9))
23 | * support RxSwift 6.2 for Carthage ([6c6508e](https://github.com/RxSwiftCommunity/RxAlamofire/commits/6c6508e0e389ac91718ebfe0c72eb469533c5d08))
24 |
25 | ### [6.1.2](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v6.1.2%0Dv6.1.1) (2021-01-05)
26 |
27 |
28 | ### Bug Fixes
29 |
30 | * Bump version script fix ([e3f47f4](https://github.com/RxSwiftCommunity/RxAlamofire/commits/e3f47f480432f305403cc9cefcd65bb346268377))
31 | * remove unused step ([b233d56](https://github.com/RxSwiftCommunity/RxAlamofire/commits/b233d56929c9166835dd4b0f8b84c8c13e881cd9))
32 |
33 | ### [6.1.1](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v6.1.1%0Dv6.1.0) (2021-01-03)
34 |
35 | ## [6.1.0](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v6.1.0%0Dv6.0.0) (2021-01-03)
36 |
37 |
38 | ### Features
39 |
40 | * Enable XCFramework ([cbb899c](https://github.com/RxSwiftCommunity/RxAlamofire/commits/cbb899ca8712ea50d60110484ce0b12de99ab8da))
41 |
42 | ## [6.0.0](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v6.0.0%0Dv5.7.1) (2021-01-02)
43 |
44 |
45 | ### ⚠ BREAKING CHANGES
46 |
47 | * RxSwift 6
48 |
49 | * RxSwift 6 ready ([a193df7](https://github.com/RxSwiftCommunity/RxAlamofire/commits/a193df78808b9c61bfccf5a1530c5614dbe7ff18))
50 |
51 | ### [5.7.1](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.7.1%0Dv5.7.0) (2020-12-05)
52 |
53 | ## [5.7.0](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.7.0%0Dv5.6.2) (2020-12-05)
54 |
55 |
56 | ### Features
57 |
58 | * Validate successful response made non-default behavior on request ([6ec9800](https://github.com/RxSwiftCommunity/RxAlamofire/commits/6ec9800b3c5f24cb52f1b1eacefbdd7633cc67e5))
59 |
60 |
61 | ### Bug Fixes
62 |
63 | * Carthage Xcode 12 Workaround ([f15b911](https://github.com/RxSwiftCommunity/RxAlamofire/commits/f15b9119b4a052faeb808f5c803b3e4280becea0))
64 | * Deprecated set-env command in GA ([e3761f3](https://github.com/RxSwiftCommunity/RxAlamofire/commits/e3761f3a4f5c450f2ec28287d54a857638b8a25f))
65 |
66 | ### [5.6.2](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.6.2%0Dv5.6.1) (2020-09-28)
67 |
68 |
69 | ### Bug Fixes
70 |
71 | * yaml typo ([cfb433e](https://github.com/RxSwiftCommunity/RxAlamofire/commits/cfb433ee562bebe7c40d81efbc9a21e8ddb72273))
72 |
73 | ### [5.6.1](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.6.1%0Dv5.6.0) (2020-09-03)
74 |
75 | ## [5.6.0](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.6.0%0Dv5.5.0) (2020-07-07)
76 |
77 |
78 | ### Features
79 |
80 | * **#186:** Create Rx extensions mapping to Alamofire response method ([c04ea5b](https://github.com/RxSwiftCommunity/RxAlamofire/commits/c04ea5bfb0f0f7306742f266e24c5f09a12d0f9e)), closes [#186](https://github.com/RxSwiftCommunity/RxAlamofire/issues/186)
81 |
82 | ## [5.5.0](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.5.0%0Dv5.4.0) (2020-06-22)
83 |
84 |
85 | ### Features
86 |
87 | * **#183:** Upload extensions ([4db992c](https://github.com/RxSwiftCommunity/RxAlamofire/commits/4db992c6ff1179d957075687f407fcf9e8a28845)), closes [#183](https://github.com/RxSwiftCommunity/RxAlamofire/issues/183)
88 |
89 | ## [5.4.0](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.4.0%0Dv5.3.2) (2020-06-21)
90 |
91 |
92 | ### Features
93 |
94 | * **#185:** Support Alamofire Interceptor ([f059d88](https://github.com/RxSwiftCommunity/RxAlamofire/commits/f059d88212e4191ef16567211fdcd3632215c819)), closes [#185](https://github.com/RxSwiftCommunity/RxAlamofire/issues/185)
95 |
96 | ### [5.3.2](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.3.2%0Dv5.3.1) (2020-06-10)
97 |
98 |
99 | ### Bug Fixes
100 |
101 | * indentation ([e475215](https://github.com/RxSwiftCommunity/RxAlamofire/commits/e47521554cb501e4a935459da70b63af28f51200))
102 | * To include tag version in buildflow ([de1058d](https://github.com/RxSwiftCommunity/RxAlamofire/commits/de1058d827b131273505d115b3d4404a33887c78))
103 |
104 | ### [5.3.1](https://github.com/RxSwiftCommunity/RxAlamofire/branches/compare/v5.3.1%0Dv5.3.0) (2020-05-25)
105 |
106 | ## 5.3.0 (2020-05-25)
107 |
108 |
109 | ### Features
110 |
111 | * **#173:** Implement danger and improve PR pipeline ([c75b0ef](https://github.com/RxSwiftCommunity/RxAlamofire/commits/c75b0efd37cd0ae90b465d4f7772ff4ee276b5b3)), closes [#173](https://github.com/RxSwiftCommunity/RxAlamofire/issues/173)
112 | * **#173:** Regenerate project ([ebbfdbe](https://github.com/RxSwiftCommunity/RxAlamofire/commits/ebbfdbe588aa26a1a4b0623e4e68a41c4857d5d5)), closes [#173](https://github.com/RxSwiftCommunity/RxAlamofire/issues/173)
113 | * **#174:** Build pipeline to run on feature and PR ([78115aa](https://github.com/RxSwiftCommunity/RxAlamofire/commits/78115aac1941852ab1f4b8a3d369782948acaf68)), closes [#174](https://github.com/RxSwiftCommunity/RxAlamofire/issues/174)
114 |
115 | ### 1.0.1 (2020-05-25)
116 |
117 | ## 5.2.0 (2020-04-18)
118 |
119 | #### Updated
120 | * Uses Alamafire 5.1.0
121 | * Uses RxSwift 5.1.0
122 | * Upgrade project to Swift 5.1
123 |
124 | ## 5.1.0
125 |
126 | #### Updated
127 |
128 | * Add response methods for `Observable`.
129 |
130 | #### Fixed
131 |
132 | * Fixed exchange rate api error in example project
133 |
134 | ## 5.0.0
135 |
136 | #### Updated
137 | * Support macOS and watchOS through Carthage
138 | * Added Example projects for macOS and watchOS
139 | * Uses RxSwift 5.0.0
140 | * Upgrade project to Swift 5.0
141 |
142 | ## 4.5.0
143 |
144 | #### Fixed
145 | * Minimum Swift version is 4.2 (More details in #144)
146 |
147 | ## 4.4.1
148 |
149 | #### Updated
150 | * RxSwift updated to 4.5.0 to officially support Xcode 10.2.
151 |
152 | ## 4.4.0
153 |
154 | #### Updated
155 | * Example project now compatible with Swift 5.0.
156 |
157 | ## 4.3.0
158 |
159 | #### Updated
160 | * Project updated to Xcode 10.0.
161 | * Example project now compatible with Swift 4.2.
162 |
163 | #### Fixed
164 |
165 | ## 4.2.0
166 |
167 | #### Updated
168 | * Project updated to Xcode 9.3.
169 |
170 | #### Fixed
171 | * Fix progress() to correctly support all request types.
172 |
173 | ## 4.1.0
174 |
175 | #### Updated
176 |
177 | * Rename `RxProgress.totalBytesWritten` to `RxProgress.bytesRemaining`.
178 | * Rename `RxProgress.totalBytesExpectedToWrite` to `RxProgress.totalBytes`.
179 | * Convert `RxProgress.bytesRemaining` from a stored- to a computed-property.
180 | * Convert `RxProgress.floatValue` from a function to a computed-property.
181 | * Add `Equatable` conformation to `RxProgress`.
182 | * Add Swift Package Manager support.
183 | * Add helper methods for validation to `Observable`.
184 | * Add helper methods for common response types to `Observable`.
185 |
186 | #### Fixed
187 |
188 | * Fix SPM Support
189 | * Unify download and upload progress handling.
190 | * Fix `Reactive.progress` logic so it actually completes.
191 |
--------------------------------------------------------------------------------
/Cartfile:
--------------------------------------------------------------------------------
1 | github "ReactiveX/RxSwift" ~> 6.0.0
2 | github "Alamofire/Alamofire" ~> 5.4
3 |
--------------------------------------------------------------------------------
/Cartfile.private:
--------------------------------------------------------------------------------
1 | github "AliSoftware/OHHTTPStubs" ~> 9.1
2 |
--------------------------------------------------------------------------------
/Cartfile.resolved:
--------------------------------------------------------------------------------
1 | github "Alamofire/Alamofire" "5.4.3"
2 | github "AliSoftware/OHHTTPStubs" "9.1.0"
3 | github "ReactiveX/RxSwift" "6.2.0"
4 |
--------------------------------------------------------------------------------
/Dangerfile:
--------------------------------------------------------------------------------
1 | # Sometimes it's a README fix, or something like that - which isn't relevant for
2 | # including in a project's CHANGELOG for example
3 | declared_trivial = (github.pr_title + github.pr_body).include?("#trivial")
4 |
5 | # Make it more obvious that a PR is a work in progress and shouldn't be merged yet
6 | warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
7 |
8 | # Warn summary on pull request
9 | if github.pr_body.length < 5
10 | warn "Please provide a summary in the Pull Request description"
11 | end
12 |
13 | # If these are all empty something has gone wrong, better to raise it in a comment
14 | if git.modified_files.empty? && git.added_files.empty? && git.deleted_files.empty?
15 | fail "This PR has no changes at all, this is likely a developer issue."
16 | end
17 |
18 | # Warn when there is a big PR
19 | message("Big PR") if git.lines_of_code > 500
20 | warn("Huge PR") if git.lines_of_code > 1000
21 | fail("Enormous PR. Please split this pull request.") if git.lines_of_code > 3000
22 |
23 | # Warn Cartfile changes
24 | message("Cartfile changed") if git.modified_files.include?("Cartfile")
25 | message("Cartfile.resolved changed") if git.modified_files.include?("Cartfile.resolved")
26 |
27 | # Lint
28 | swiftlint.lint_all_files = true
29 | swiftlint.max_num_violations = 20
30 | swiftlint.config_file = ".swiftlint.yml"
31 | swiftlint.lint_files fail_on_error: true
32 |
33 | # xcov.report(
34 | # scheme: "RxAlamofire iOS",
35 | # project: "RxAlamofire.xcodeproj",
36 | # include_targets: "RxAlamofire.framework",
37 | # minimum_coverage_percentage: 20.0,
38 | # derived_data_path: "Build/",
39 | # )
40 |
--------------------------------------------------------------------------------
/Examples/Podfile:
--------------------------------------------------------------------------------
1 | source "https://cdn.cocoapods.org/"
2 | project "RxAlamofireDemo.xcodeproj"
3 | use_frameworks!
4 |
5 | def common
6 | pod "RxAlamofire/RxCocoa", :path => "../"
7 | end
8 |
9 | def common_tests
10 | pod "OHHTTPStubs", "~> 9.1"
11 | pod "OHHTTPStubs/Swift", "~> 9.1"
12 | pod "RxBlocking", "~> 6.0"
13 | end
14 |
15 | target "RxAlamofireDemo-iOS" do
16 | platform :ios, "10.0"
17 | common
18 | end
19 |
20 | # target "RxAlamofireDemo-macOS" do
21 | # platform :osx, "10.12"
22 | # common
23 | # end
24 |
25 | target "RxAlamofireDemo-tvOS" do
26 | platform :tvos, "10.0"
27 | common
28 | end
29 |
--------------------------------------------------------------------------------
/Examples/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Alamofire (5.4.1)
3 | - RxAlamofire/Core (5.7.1):
4 | - Alamofire (~> 5.4)
5 | - RxSwift (~> 6.0)
6 | - RxAlamofire/RxCocoa (5.7.1):
7 | - RxAlamofire/Core
8 | - RxCocoa (~> 6.0)
9 | - RxCocoa (6.0.0):
10 | - RxRelay (= 6.0.0)
11 | - RxSwift (= 6.0.0)
12 | - RxRelay (6.0.0):
13 | - RxSwift (= 6.0.0)
14 | - RxSwift (6.0.0)
15 |
16 | DEPENDENCIES:
17 | - RxAlamofire/RxCocoa (from `../`)
18 |
19 | SPEC REPOS:
20 | trunk:
21 | - Alamofire
22 | - RxCocoa
23 | - RxRelay
24 | - RxSwift
25 |
26 | EXTERNAL SOURCES:
27 | RxAlamofire:
28 | :path: "../"
29 |
30 | SPEC CHECKSUMS:
31 | Alamofire: 2291f7d21ca607c491dd17642e5d40fdcda0e65c
32 | RxAlamofire: 2dbdd68051f7e7779fdd2b7bda9b93ac1e533a19
33 | RxCocoa: 3f79328fafa3645b34600f37c31e64c73ae3a80e
34 | RxRelay: 8d593be109c06ea850df027351beba614b012ffb
35 | RxSwift: c14e798c59b9f6e9a2df8fd235602e85cc044295
36 |
37 | PODFILE CHECKSUM: a7610a5168228508e279f8c77f56aa8c67f26640
38 |
39 | COCOAPODS: 1.10.0
40 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-iOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | @UIApplicationMain
4 | class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
5 | var window: UIWindow?
6 |
7 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
8 | // Override point for customization after application launch.
9 | return true
10 | }
11 |
12 | func applicationWillResignActive(_ application: UIApplication) {
13 | // Sent when the application is about to move from active to inactive state. This can occur for
14 | // certain types of temporary interruptions (such as an incoming phone call or SMS message) or when
15 | // the user quits the application and it begins the transition to the background state.
16 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame
17 | // rates. Games should use this method to pause the game.
18 | }
19 |
20 | func applicationDidEnterBackground(_ application: UIApplication) {
21 | // Use this method to release shared resources, save user data, invalidate timers, and store enough
22 | // application state information to restore your application to its current state in case it is
23 | // terminated later.
24 | // If your application supports background execution, this method is called instead of
25 | // applicationWillTerminate: when the user quits.
26 | }
27 |
28 | func applicationWillEnterForeground(_ application: UIApplication) {
29 | // Called as part of the transition from the background to the inactive state; here you can
30 | // undo many of the changes made on entering the background.
31 | }
32 |
33 | func applicationDidBecomeActive(_ application: UIApplication) {
34 | // Restart any tasks that were paused (or not yet started) while the application was inactive.
35 | // If the application was previously in the background, optionally refresh the user interface.
36 | }
37 |
38 | func applicationWillTerminate(_ application: UIApplication) {
39 | // Called when the application is about to terminate. Save data if appropriate.
40 | // See also applicationDidEnterBackground:.
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "size" : "1024x1024",
46 | "scale" : "1x"
47 | }
48 | ],
49 | "info" : {
50 | "version" : 1,
51 | "author" : "xcode"
52 | }
53 | }
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-iOS/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-iOS/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
55 |
69 |
75 |
76 |
77 |
78 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | NSAppTransportSecurity
26 |
27 | NSAllowsArbitraryLoads
28 |
29 |
30 | UILaunchStoryboardName
31 | LaunchScreen
32 | UIMainStoryboardFile
33 | Main
34 | UIRequiredDeviceCapabilities
35 |
36 | armv7
37 |
38 | UIStatusBarTintParameters
39 |
40 | UINavigationBar
41 |
42 | Style
43 | UIBarStyleDefault
44 | Translucent
45 |
46 |
47 |
48 | UISupportedInterfaceOrientations
49 |
50 | UIInterfaceOrientationPortrait
51 | UIInterfaceOrientationLandscapeLeft
52 | UIInterfaceOrientationLandscapeRight
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-iOS/MasterViewController.swift:
--------------------------------------------------------------------------------
1 | import Alamofire
2 | import RxAlamofire
3 | import RxSwift
4 | import UIKit
5 |
6 | enum APIError: Error {
7 | case invalidInput
8 | case badResponse
9 |
10 | func toNSError() -> NSError {
11 | let domain = "com.github.rxswiftcommunity.rxalamofire"
12 | switch self {
13 | case .invalidInput:
14 | return NSError(domain: domain, code: -1, userInfo: [NSLocalizedDescriptionKey: "Input should be a valid number"])
15 | case .badResponse:
16 | return NSError(domain: domain, code: -2, userInfo: [NSLocalizedDescriptionKey: "Bad response"])
17 | }
18 | }
19 | }
20 |
21 | class MasterViewController: UIViewController, UITextFieldDelegate {
22 | let disposeBag = DisposeBag()
23 | let exchangeRateEndpoint = "https://api.exchangeratesapi.io/latest?base=EUR&symbols=USD"
24 |
25 | @IBOutlet var fromTextField: UITextField!
26 | @IBOutlet var toTextField: UITextField!
27 | @IBOutlet var convertBtn: UIButton!
28 | @IBOutlet var dummyDataBtn: UIButton!
29 | @IBOutlet var dummyDataTextView: UITextView!
30 |
31 | override func viewDidLoad() {
32 | super.viewDidLoad()
33 | }
34 |
35 | // MARK: - UI Actions
36 |
37 | @IBAction func convertPressed(_ sender: UIButton) {
38 | fromTextField.resignFirstResponder()
39 |
40 | guard let fromText = fromTextField.text, let fromValue = Double(fromText) else {
41 | displayError(APIError.invalidInput.toNSError())
42 | return
43 | }
44 |
45 | requestJSON(.get, exchangeRateEndpoint)
46 | .debug()
47 | .flatMap { (_, json) -> Observable in
48 | guard
49 | let body = json as? [String: Any],
50 | let rates = body["rates"] as? [String: Any],
51 | let rate = rates["USD"] as? Double
52 | else {
53 | return .error(APIError.badResponse.toNSError())
54 | }
55 | return .just(rate)
56 | }
57 | .subscribe(onNext: { [weak self] rate in
58 | self?.toTextField.text = "\(rate * fromValue)"
59 | }, onError: { [weak self] e in
60 | self?.displayError(e as NSError)
61 | })
62 | .disposed(by: disposeBag)
63 | }
64 |
65 | func exampleUsages() {
66 | let stringURL = ""
67 | // MARK: NSURLSession simple and fast
68 | let session = URLSession.shared
69 | _ = session.rx
70 | .json(.get, stringURL)
71 | .observeOn(MainScheduler.instance)
72 | .subscribe { print($0) }
73 |
74 | _ = session
75 | .rx.json(.get, stringURL)
76 | .observeOn(MainScheduler.instance)
77 | .subscribe { print($0) }
78 |
79 | _ = session
80 | .rx.data(.get, stringURL)
81 | .observeOn(MainScheduler.instance)
82 | .subscribe { print($0) }
83 |
84 | // MARK: With Alamofire engine
85 |
86 | _ = json(.get, stringURL)
87 | .observeOn(MainScheduler.instance)
88 | .subscribe { print($0) }
89 |
90 | _ = request(.get, stringURL)
91 | .flatMap { request in
92 | request.validate(statusCode: 200..<300)
93 | .validate(contentType: ["text/json"])
94 | .rx.json()
95 | }
96 | .observeOn(MainScheduler.instance)
97 | .subscribe { print($0) }
98 |
99 | // progress
100 | _ = request(.get, stringURL)
101 | .flatMap {
102 | $0
103 | .validate(statusCode: 200..<300)
104 | .validate(contentType: ["text/json"])
105 | .rx.progress()
106 | }
107 | .observeOn(MainScheduler.instance)
108 | .subscribe { print($0) }
109 |
110 | // just fire upload and display progress
111 | if let urlRequest = try? urlRequest(.get, stringURL) {
112 | _ = upload(Data(), urlRequest: urlRequest)
113 | .flatMap {
114 | $0
115 | .validate(statusCode: 200..<300)
116 | .validate(contentType: ["text/json"])
117 | .rx.progress()
118 | }
119 | .observeOn(MainScheduler.instance)
120 | .subscribe { print($0) }
121 | }
122 |
123 | // progress and final result
124 | // uploading files with progress showing is processing intensive operation anyway, so
125 | // this doesn't add much overhead
126 | _ = request(.get, stringURL)
127 | .flatMap { request -> Observable<(Data?, RxProgress)> in
128 | let validatedRequest = request
129 | .validate(statusCode: 200..<300)
130 | .validate(contentType: ["text/json"])
131 |
132 | let dataPart = validatedRequest
133 | .rx.data()
134 | .map { d -> Data? in d }
135 | .startWith(nil as Data?)
136 | let progressPart = validatedRequest.rx.progress()
137 | return Observable.combineLatest(dataPart, progressPart) { ($0, $1) }
138 | }
139 | .observeOn(MainScheduler.instance)
140 | .subscribe { print($0) }
141 |
142 | // MARK: Alamofire manager
143 | // same methods with any alamofire manager
144 | let manager = Session.default
145 |
146 | // simple case
147 | _ = manager.rx.json(.get, stringURL)
148 | .observeOn(MainScheduler.instance)
149 | .subscribe { print($0) }
150 |
151 | // NSURLHTTPResponse + JSON
152 | _ = manager.rx.responseJSON(.get, stringURL)
153 | .observeOn(MainScheduler.instance)
154 | .subscribe { print($0) }
155 |
156 | // NSURLHTTPResponse + String
157 | _ = manager.rx.responseString(.get, stringURL)
158 | .observeOn(MainScheduler.instance)
159 | .subscribe { print($0) }
160 |
161 | // NSURLHTTPResponse + Validation + String
162 | _ = manager.rx.request(.get, stringURL)
163 | .flatMap {
164 | $0
165 | .validate(statusCode: 200..<300)
166 | .validate(contentType: ["text/json"])
167 | .rx.string()
168 | }
169 | .observeOn(MainScheduler.instance)
170 | .subscribe { print($0) }
171 |
172 | // NSURLHTTPResponse + Validation + NSURLHTTPResponse + String
173 | _ = manager.rx.request(.get, stringURL)
174 | .flatMap {
175 | $0
176 | .validate(statusCode: 200..<300)
177 | .validate(contentType: ["text/json"])
178 | .rx.responseString()
179 | }
180 | .observeOn(MainScheduler.instance)
181 | .subscribe { print($0) }
182 |
183 | // NSURLHTTPResponse + Validation + NSURLHTTPResponse + String + Progress
184 | _ = manager.rx.request(.get, stringURL)
185 | .flatMap { request -> Observable<(String?, RxProgress)> in
186 | let validatedRequest = request
187 | .validate(statusCode: 200..<300)
188 | .validate(contentType: ["text/something"])
189 |
190 | let stringPart = validatedRequest
191 | .rx.string()
192 | .map { d -> String? in d }
193 | .startWith(nil as String?)
194 | let progressPart = validatedRequest.rx.progress()
195 | return Observable.combineLatest(stringPart, progressPart) { ($0, $1) }
196 | }
197 | .observeOn(MainScheduler.instance)
198 | .subscribe { print($0) }
199 | }
200 |
201 | @IBAction func getDummyDataPressed(_ sender: UIButton) {
202 | let dummyPostURLString = "http://jsonplaceholder.typicode.com/posts/1"
203 | let dummyCommentsURLString = "http://jsonplaceholder.typicode.com/posts/1/comments"
204 |
205 | let postObservable = json(.get, dummyPostURLString)
206 | let commentsObservable = json(.get, dummyCommentsURLString)
207 | dummyDataTextView.text = "Loading..."
208 | Observable.zip(postObservable, commentsObservable) { postJSON, commentsJSON in
209 | (postJSON, commentsJSON)
210 | }
211 | .observeOn(MainScheduler.instance)
212 | .subscribe(onNext: { postJSON, commentsJSON in
213 |
214 | let postInfo = NSMutableString()
215 | if let postDict = postJSON as? [String: AnyObject],
216 | let commentsArray = commentsJSON as? [[String: AnyObject]],
217 | let postTitle = postDict["title"] as? String,
218 | let postBody = postDict["body"] as? String {
219 | postInfo.append("Title: ")
220 | postInfo.append(postTitle)
221 | postInfo.append("\n\n")
222 | postInfo.append(postBody)
223 | postInfo.append("\n\n\nComments:\n")
224 | for comment in commentsArray {
225 | if let email = comment["email"] as? String,
226 | let body = comment["body"] as? String {
227 | postInfo.append(email)
228 | postInfo.append(": ")
229 | postInfo.append(body)
230 | postInfo.append("\n\n")
231 | }
232 | }
233 | }
234 |
235 | self.dummyDataTextView.text = String(postInfo)
236 | }, onError: { e in
237 | self.dummyDataTextView.text = "An Error Occurred"
238 | self.displayError(e as NSError)
239 | }).disposed(by: disposeBag)
240 | }
241 |
242 | // MARK: - Utils
243 |
244 | func displayError(_ error: NSError?) {
245 | if let e = error {
246 | let alertController = UIAlertController(title: "Error", message: e.localizedDescription, preferredStyle: .alert)
247 | let okAction = UIAlertAction(title: "OK", style: .default) { _ in
248 | // do nothing...
249 | }
250 | alertController.addAction(okAction)
251 | present(alertController, animated: true, completion: nil)
252 | }
253 | }
254 | }
255 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | @UIApplicationMain
4 | class AppDelegate: UIResponder, UIApplicationDelegate {
5 | var window: UIWindow?
6 |
7 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
8 | // Override point for customization after application launch.
9 | return true
10 | }
11 |
12 | func applicationWillResignActive(_ application: UIApplication) {
13 | // Sent when the application is about to move from active to inactive state. This can occur for
14 | // certain types of temporary interruptions (such as an incoming phone call or SMS message) or when
15 | // the user quits the application and it begins the transition to the background state.
16 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame
17 | // rates. Games should use this method to pause the game.
18 | }
19 |
20 | func applicationDidEnterBackground(_ application: UIApplication) {
21 | // Use this method to release shared resources, save user data, invalidate timers, and store enough
22 | // application state information to restore your application to its current state in case it is
23 | // terminated later.
24 | // If your application supports background execution, this method is called instead of
25 | // applicationWillTerminate: when the user quits.
26 | }
27 |
28 | func applicationWillEnterForeground(_ application: UIApplication) {
29 | // Called as part of the transition from the background to the inactive state; here you can
30 | // undo many of the changes made on entering the background.
31 | }
32 |
33 | func applicationDidBecomeActive(_ application: UIApplication) {
34 | // Restart any tasks that were paused (or not yet started) while the application was inactive.
35 | // If the application was previously in the background, optionally refresh the user interface.
36 | }
37 |
38 | func applicationWillTerminate(_ application: UIApplication) {
39 | // Called when the application is about to terminate. Save data if appropriate.
40 | // See also applicationDidEnterBackground:.
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "layers" : [
7 | {
8 | "filename" : "Front.imagestacklayer"
9 | },
10 | {
11 | "filename" : "Middle.imagestacklayer"
12 | },
13 | {
14 | "filename" : "Back.imagestacklayer"
15 | }
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | }
11 | ],
12 | "info" : {
13 | "author" : "xcode",
14 | "version" : 1
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "assets" : [
3 | {
4 | "filename" : "App Icon - App Store.imagestack",
5 | "idiom" : "tv",
6 | "role" : "primary-app-icon",
7 | "size" : "1280x768"
8 | },
9 | {
10 | "filename" : "App Icon.imagestack",
11 | "idiom" : "tv",
12 | "role" : "primary-app-icon",
13 | "size" : "400x240"
14 | },
15 | {
16 | "filename" : "Top Shelf Image Wide.imageset",
17 | "idiom" : "tv",
18 | "role" : "top-shelf-image-wide",
19 | "size" : "2320x720"
20 | },
21 | {
22 | "filename" : "Top Shelf Image.imageset",
23 | "idiom" : "tv",
24 | "role" : "top-shelf-image",
25 | "size" : "1920x720"
26 | }
27 | ],
28 | "info" : {
29 | "author" : "xcode",
30 | "version" : 1
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | },
11 | {
12 | "idiom" : "tv-marketing",
13 | "scale" : "1x"
14 | },
15 | {
16 | "idiom" : "tv-marketing",
17 | "scale" : "2x"
18 | }
19 | ],
20 | "info" : {
21 | "author" : "xcode",
22 | "version" : 1
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "tv",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "tv",
9 | "scale" : "2x"
10 | },
11 | {
12 | "idiom" : "tv-marketing",
13 | "scale" : "1x"
14 | },
15 | {
16 | "idiom" : "tv-marketing",
17 | "scale" : "2x"
18 | }
19 | ],
20 | "info" : {
21 | "author" : "xcode",
22 | "version" : 1
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | arm64
30 |
31 | UIUserInterfaceStyle
32 | Automatic
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo-tvOS/ViewController.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 |
3 | class ViewController: UIViewController {
4 | override func viewDidLoad() {
5 | super.viewDidLoad()
6 | // Do any additional setup after loading the view.
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 51;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 3460F8DAD7982D3245EB9D3E /* Pods_RxAlamofireDemo_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7CAA17105F512DF2C550970 /* Pods_RxAlamofireDemo_tvOS.framework */; };
11 | 3F29C1D238D7440D6E0C8BCE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7271A4F80C948F936313DBE /* Assets.xcassets */; };
12 | 5984886F7C56B240AED03C2C /* Pods_RxAlamofireDemo_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FE2161AB4378B4B1CA41AA54 /* Pods_RxAlamofireDemo_iOS.framework */; };
13 | 64DA349C9D9674EE13A63AC7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DE9DC7445276BFFE3FB7CE3A /* LaunchScreen.storyboard */; };
14 | 73F2E935F51EDE70A109B9AC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7FA475134236412946FFBA69 /* Main.storyboard */; };
15 | 9A25F858A46BD64153B1F306 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3877B88F53D476595CB50DFA /* LaunchScreen.storyboard */; };
16 | A14200E42DB3E318983D2229 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD4E7F4114A7052FFD8A2A9F /* AppDelegate.swift */; };
17 | A27C12EFDC6101039332DF18 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FFCA4FD6D17BA390A457D5BF /* Assets.xcassets */; };
18 | AB379D985FDEA4918C2D5775 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E6C90E12C4D1ABA5ADDB027E /* Main.storyboard */; };
19 | AE9A737EC3B3616AC8619D05 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8915C664E1FB811EDB084220 /* AppDelegate.swift */; };
20 | D3C37A8C5995404D21F836BE /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DE7FEAF2E41466297683B1 /* MasterViewController.swift */; };
21 | ED85E8F8234D9445CEA660A1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF3DDF93C31550723B3770EC /* ViewController.swift */; };
22 | /* End PBXBuildFile section */
23 |
24 | /* Begin PBXFileReference section */
25 | 0A2A2D9FA25B2A97196125B1 /* Pods-RxAlamofireDemo-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxAlamofireDemo-iOS.debug.xcconfig"; path = "Target Support Files/Pods-RxAlamofireDemo-iOS/Pods-RxAlamofireDemo-iOS.debug.xcconfig"; sourceTree = ""; };
26 | 1F1A0AAE3B789DB38B483CCD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
27 | 3745E1AB21E401142C5AEBE8 /* RxAlamofireDemo-iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "RxAlamofireDemo-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
28 | 50DE7FEAF2E41466297683B1 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = ""; };
29 | 575397FA1B61CDE8AF29E3F6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
30 | 747F06E9DCFB616D5F0AF9C7 /* Pods-RxAlamofireDemo-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxAlamofireDemo-iOS.release.xcconfig"; path = "Target Support Files/Pods-RxAlamofireDemo-iOS/Pods-RxAlamofireDemo-iOS.release.xcconfig"; sourceTree = ""; };
31 | 7F8CFA6BD5CB48EA9D147CC4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
32 | 8915C664E1FB811EDB084220 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
33 | A76B7B529DFFA371EC2B66CC /* RxAlamofireDemo-tvOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "RxAlamofireDemo-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
34 | B5C3AAD32AF4EDA297F1E750 /* Pods-RxAlamofireDemo-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxAlamofireDemo-tvOS.release.xcconfig"; path = "Target Support Files/Pods-RxAlamofireDemo-tvOS/Pods-RxAlamofireDemo-tvOS.release.xcconfig"; sourceTree = ""; };
35 | B92CF7C6121B35EBF20E5647 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
36 | BD4E7F4114A7052FFD8A2A9F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
37 | C1694F27957F7BF4A7F515F7 /* Pods-RxAlamofireDemo-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RxAlamofireDemo-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-RxAlamofireDemo-tvOS/Pods-RxAlamofireDemo-tvOS.debug.xcconfig"; sourceTree = ""; };
38 | C88A13BAA77B9E31B2EF0A5C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
39 | DF3DDF93C31550723B3770EC /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
40 | F7271A4F80C948F936313DBE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
41 | F7CAA17105F512DF2C550970 /* Pods_RxAlamofireDemo_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RxAlamofireDemo_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
42 | FC2BE5FB8EE4BCEAB84AB1D1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
43 | FE2161AB4378B4B1CA41AA54 /* Pods_RxAlamofireDemo_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RxAlamofireDemo_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
44 | FFCA4FD6D17BA390A457D5BF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 8992C23ADE5B3BB5D1C6BB0F /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | 5984886F7C56B240AED03C2C /* Pods_RxAlamofireDemo_iOS.framework in Frameworks */,
53 | );
54 | runOnlyForDeploymentPostprocessing = 0;
55 | };
56 | BFD6F5C88D7FB23B942792EE /* Frameworks */ = {
57 | isa = PBXFrameworksBuildPhase;
58 | buildActionMask = 2147483647;
59 | files = (
60 | 3460F8DAD7982D3245EB9D3E /* Pods_RxAlamofireDemo_tvOS.framework in Frameworks */,
61 | );
62 | runOnlyForDeploymentPostprocessing = 0;
63 | };
64 | /* End PBXFrameworksBuildPhase section */
65 |
66 | /* Begin PBXGroup section */
67 | 0A6E32C10D235946CC53C953 /* Pods */ = {
68 | isa = PBXGroup;
69 | children = (
70 | 0A2A2D9FA25B2A97196125B1 /* Pods-RxAlamofireDemo-iOS.debug.xcconfig */,
71 | 747F06E9DCFB616D5F0AF9C7 /* Pods-RxAlamofireDemo-iOS.release.xcconfig */,
72 | C1694F27957F7BF4A7F515F7 /* Pods-RxAlamofireDemo-tvOS.debug.xcconfig */,
73 | B5C3AAD32AF4EDA297F1E750 /* Pods-RxAlamofireDemo-tvOS.release.xcconfig */,
74 | );
75 | name = Pods;
76 | path = Pods;
77 | sourceTree = "";
78 | };
79 | 46214C933C431B9650A43422 = {
80 | isa = PBXGroup;
81 | children = (
82 | B073605EBCAB374097F4EEEE /* RxAlamofireDemo-iOS */,
83 | A83B3E7D5AE013777F3FA15E /* RxAlamofireDemo-tvOS */,
84 | AF4F1B3199D5B36C7FDE5A7D /* Products */,
85 | 0A6E32C10D235946CC53C953 /* Pods */,
86 | BEA41D23354996401EA602BD /* Frameworks */,
87 | );
88 | indentWidth = 2;
89 | sourceTree = "";
90 | tabWidth = 2;
91 | usesTabs = 0;
92 | };
93 | A83B3E7D5AE013777F3FA15E /* RxAlamofireDemo-tvOS */ = {
94 | isa = PBXGroup;
95 | children = (
96 | BD4E7F4114A7052FFD8A2A9F /* AppDelegate.swift */,
97 | FFCA4FD6D17BA390A457D5BF /* Assets.xcassets */,
98 | C88A13BAA77B9E31B2EF0A5C /* Info.plist */,
99 | DE9DC7445276BFFE3FB7CE3A /* LaunchScreen.storyboard */,
100 | E6C90E12C4D1ABA5ADDB027E /* Main.storyboard */,
101 | DF3DDF93C31550723B3770EC /* ViewController.swift */,
102 | );
103 | path = "RxAlamofireDemo-tvOS";
104 | sourceTree = "";
105 | };
106 | AF4F1B3199D5B36C7FDE5A7D /* Products */ = {
107 | isa = PBXGroup;
108 | children = (
109 | 3745E1AB21E401142C5AEBE8 /* RxAlamofireDemo-iOS.app */,
110 | A76B7B529DFFA371EC2B66CC /* RxAlamofireDemo-tvOS.app */,
111 | );
112 | name = Products;
113 | sourceTree = "";
114 | };
115 | B073605EBCAB374097F4EEEE /* RxAlamofireDemo-iOS */ = {
116 | isa = PBXGroup;
117 | children = (
118 | 8915C664E1FB811EDB084220 /* AppDelegate.swift */,
119 | F7271A4F80C948F936313DBE /* Assets.xcassets */,
120 | B92CF7C6121B35EBF20E5647 /* Info.plist */,
121 | 3877B88F53D476595CB50DFA /* LaunchScreen.storyboard */,
122 | 7FA475134236412946FFBA69 /* Main.storyboard */,
123 | 50DE7FEAF2E41466297683B1 /* MasterViewController.swift */,
124 | );
125 | path = "RxAlamofireDemo-iOS";
126 | sourceTree = "";
127 | };
128 | BEA41D23354996401EA602BD /* Frameworks */ = {
129 | isa = PBXGroup;
130 | children = (
131 | FE2161AB4378B4B1CA41AA54 /* Pods_RxAlamofireDemo_iOS.framework */,
132 | F7CAA17105F512DF2C550970 /* Pods_RxAlamofireDemo_tvOS.framework */,
133 | );
134 | name = Frameworks;
135 | sourceTree = "";
136 | };
137 | /* End PBXGroup section */
138 |
139 | /* Begin PBXNativeTarget section */
140 | 43F2A9EEB1528D3A39E60222 /* RxAlamofireDemo-tvOS */ = {
141 | isa = PBXNativeTarget;
142 | buildConfigurationList = 424A81A30577F4B87602EEE2 /* Build configuration list for PBXNativeTarget "RxAlamofireDemo-tvOS" */;
143 | buildPhases = (
144 | 63DF1C1537F6781DE65C2998 /* [CP] Check Pods Manifest.lock */,
145 | 59E4F1333C1BDED174EFEDE4 /* Sources */,
146 | 8B84663C33E52BAADAEC7708 /* Resources */,
147 | BFD6F5C88D7FB23B942792EE /* Frameworks */,
148 | FF9229FFD62C0233F3F402FA /* [CP] Embed Pods Frameworks */,
149 | );
150 | buildRules = (
151 | );
152 | dependencies = (
153 | );
154 | name = "RxAlamofireDemo-tvOS";
155 | productName = "RxAlamofireDemo-tvOS";
156 | productReference = A76B7B529DFFA371EC2B66CC /* RxAlamofireDemo-tvOS.app */;
157 | productType = "com.apple.product-type.application";
158 | };
159 | 6F0AE579261CA64B8B140F9C /* RxAlamofireDemo-iOS */ = {
160 | isa = PBXNativeTarget;
161 | buildConfigurationList = 0DC9C8FA99500E79BF744747 /* Build configuration list for PBXNativeTarget "RxAlamofireDemo-iOS" */;
162 | buildPhases = (
163 | 56D3DAD7EEAE1DA5AF0C5082 /* [CP] Check Pods Manifest.lock */,
164 | 632B9F06FAB36677B4F42678 /* Sources */,
165 | EFC235935020AB88C22A5865 /* Resources */,
166 | 8992C23ADE5B3BB5D1C6BB0F /* Frameworks */,
167 | E3732E7E561251C11457C5A3 /* [CP] Embed Pods Frameworks */,
168 | );
169 | buildRules = (
170 | );
171 | dependencies = (
172 | );
173 | name = "RxAlamofireDemo-iOS";
174 | productName = "RxAlamofireDemo-iOS";
175 | productReference = 3745E1AB21E401142C5AEBE8 /* RxAlamofireDemo-iOS.app */;
176 | productType = "com.apple.product-type.application";
177 | };
178 | /* End PBXNativeTarget section */
179 |
180 | /* Begin PBXProject section */
181 | ECB84811D5C45696FC6ACAC1 /* Project object */ = {
182 | isa = PBXProject;
183 | attributes = {
184 | LastUpgradeCheck = 1140;
185 | ORGANIZATIONNAME = RxSwiftCommunity;
186 | TargetAttributes = {
187 | };
188 | };
189 | buildConfigurationList = 910FD569A572566BA711E9E4 /* Build configuration list for PBXProject "RxAlamofireDemo" */;
190 | compatibilityVersion = "Xcode 10.0";
191 | developmentRegion = en;
192 | hasScannedForEncodings = 0;
193 | knownRegions = (
194 | Base,
195 | en,
196 | );
197 | mainGroup = 46214C933C431B9650A43422;
198 | productRefGroup = AF4F1B3199D5B36C7FDE5A7D /* Products */;
199 | projectDirPath = "";
200 | projectRoot = "";
201 | targets = (
202 | 6F0AE579261CA64B8B140F9C /* RxAlamofireDemo-iOS */,
203 | 43F2A9EEB1528D3A39E60222 /* RxAlamofireDemo-tvOS */,
204 | );
205 | };
206 | /* End PBXProject section */
207 |
208 | /* Begin PBXResourcesBuildPhase section */
209 | 8B84663C33E52BAADAEC7708 /* Resources */ = {
210 | isa = PBXResourcesBuildPhase;
211 | buildActionMask = 2147483647;
212 | files = (
213 | A27C12EFDC6101039332DF18 /* Assets.xcassets in Resources */,
214 | 64DA349C9D9674EE13A63AC7 /* LaunchScreen.storyboard in Resources */,
215 | AB379D985FDEA4918C2D5775 /* Main.storyboard in Resources */,
216 | );
217 | runOnlyForDeploymentPostprocessing = 0;
218 | };
219 | EFC235935020AB88C22A5865 /* Resources */ = {
220 | isa = PBXResourcesBuildPhase;
221 | buildActionMask = 2147483647;
222 | files = (
223 | 3F29C1D238D7440D6E0C8BCE /* Assets.xcassets in Resources */,
224 | 9A25F858A46BD64153B1F306 /* LaunchScreen.storyboard in Resources */,
225 | 73F2E935F51EDE70A109B9AC /* Main.storyboard in Resources */,
226 | );
227 | runOnlyForDeploymentPostprocessing = 0;
228 | };
229 | /* End PBXResourcesBuildPhase section */
230 |
231 | /* Begin PBXShellScriptBuildPhase section */
232 | 56D3DAD7EEAE1DA5AF0C5082 /* [CP] Check Pods Manifest.lock */ = {
233 | isa = PBXShellScriptBuildPhase;
234 | buildActionMask = 2147483647;
235 | files = (
236 | );
237 | inputFileListPaths = (
238 | );
239 | inputPaths = (
240 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
241 | "${PODS_ROOT}/Manifest.lock",
242 | );
243 | name = "[CP] Check Pods Manifest.lock";
244 | outputFileListPaths = (
245 | );
246 | outputPaths = (
247 | "$(DERIVED_FILE_DIR)/Pods-RxAlamofireDemo-iOS-checkManifestLockResult.txt",
248 | );
249 | runOnlyForDeploymentPostprocessing = 0;
250 | shellPath = /bin/sh;
251 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
252 | showEnvVarsInLog = 0;
253 | };
254 | 63DF1C1537F6781DE65C2998 /* [CP] Check Pods Manifest.lock */ = {
255 | isa = PBXShellScriptBuildPhase;
256 | buildActionMask = 2147483647;
257 | files = (
258 | );
259 | inputFileListPaths = (
260 | );
261 | inputPaths = (
262 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
263 | "${PODS_ROOT}/Manifest.lock",
264 | );
265 | name = "[CP] Check Pods Manifest.lock";
266 | outputFileListPaths = (
267 | );
268 | outputPaths = (
269 | "$(DERIVED_FILE_DIR)/Pods-RxAlamofireDemo-tvOS-checkManifestLockResult.txt",
270 | );
271 | runOnlyForDeploymentPostprocessing = 0;
272 | shellPath = /bin/sh;
273 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
274 | showEnvVarsInLog = 0;
275 | };
276 | E3732E7E561251C11457C5A3 /* [CP] Embed Pods Frameworks */ = {
277 | isa = PBXShellScriptBuildPhase;
278 | buildActionMask = 2147483647;
279 | files = (
280 | );
281 | inputFileListPaths = (
282 | "${PODS_ROOT}/Target Support Files/Pods-RxAlamofireDemo-iOS/Pods-RxAlamofireDemo-iOS-frameworks-${CONFIGURATION}-input-files.xcfilelist",
283 | );
284 | name = "[CP] Embed Pods Frameworks";
285 | outputFileListPaths = (
286 | "${PODS_ROOT}/Target Support Files/Pods-RxAlamofireDemo-iOS/Pods-RxAlamofireDemo-iOS-frameworks-${CONFIGURATION}-output-files.xcfilelist",
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | shellPath = /bin/sh;
290 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RxAlamofireDemo-iOS/Pods-RxAlamofireDemo-iOS-frameworks.sh\"\n";
291 | showEnvVarsInLog = 0;
292 | };
293 | FF9229FFD62C0233F3F402FA /* [CP] Embed Pods Frameworks */ = {
294 | isa = PBXShellScriptBuildPhase;
295 | buildActionMask = 2147483647;
296 | files = (
297 | );
298 | inputFileListPaths = (
299 | "${PODS_ROOT}/Target Support Files/Pods-RxAlamofireDemo-tvOS/Pods-RxAlamofireDemo-tvOS-frameworks-${CONFIGURATION}-input-files.xcfilelist",
300 | );
301 | name = "[CP] Embed Pods Frameworks";
302 | outputFileListPaths = (
303 | "${PODS_ROOT}/Target Support Files/Pods-RxAlamofireDemo-tvOS/Pods-RxAlamofireDemo-tvOS-frameworks-${CONFIGURATION}-output-files.xcfilelist",
304 | );
305 | runOnlyForDeploymentPostprocessing = 0;
306 | shellPath = /bin/sh;
307 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RxAlamofireDemo-tvOS/Pods-RxAlamofireDemo-tvOS-frameworks.sh\"\n";
308 | showEnvVarsInLog = 0;
309 | };
310 | /* End PBXShellScriptBuildPhase section */
311 |
312 | /* Begin PBXSourcesBuildPhase section */
313 | 59E4F1333C1BDED174EFEDE4 /* Sources */ = {
314 | isa = PBXSourcesBuildPhase;
315 | buildActionMask = 2147483647;
316 | files = (
317 | A14200E42DB3E318983D2229 /* AppDelegate.swift in Sources */,
318 | ED85E8F8234D9445CEA660A1 /* ViewController.swift in Sources */,
319 | );
320 | runOnlyForDeploymentPostprocessing = 0;
321 | };
322 | 632B9F06FAB36677B4F42678 /* Sources */ = {
323 | isa = PBXSourcesBuildPhase;
324 | buildActionMask = 2147483647;
325 | files = (
326 | AE9A737EC3B3616AC8619D05 /* AppDelegate.swift in Sources */,
327 | D3C37A8C5995404D21F836BE /* MasterViewController.swift in Sources */,
328 | );
329 | runOnlyForDeploymentPostprocessing = 0;
330 | };
331 | /* End PBXSourcesBuildPhase section */
332 |
333 | /* Begin PBXVariantGroup section */
334 | 3877B88F53D476595CB50DFA /* LaunchScreen.storyboard */ = {
335 | isa = PBXVariantGroup;
336 | children = (
337 | 575397FA1B61CDE8AF29E3F6 /* Base */,
338 | );
339 | name = LaunchScreen.storyboard;
340 | sourceTree = "";
341 | };
342 | 7FA475134236412946FFBA69 /* Main.storyboard */ = {
343 | isa = PBXVariantGroup;
344 | children = (
345 | FC2BE5FB8EE4BCEAB84AB1D1 /* Base */,
346 | );
347 | name = Main.storyboard;
348 | sourceTree = "";
349 | };
350 | DE9DC7445276BFFE3FB7CE3A /* LaunchScreen.storyboard */ = {
351 | isa = PBXVariantGroup;
352 | children = (
353 | 7F8CFA6BD5CB48EA9D147CC4 /* Base */,
354 | );
355 | name = LaunchScreen.storyboard;
356 | sourceTree = "";
357 | };
358 | E6C90E12C4D1ABA5ADDB027E /* Main.storyboard */ = {
359 | isa = PBXVariantGroup;
360 | children = (
361 | 1F1A0AAE3B789DB38B483CCD /* Base */,
362 | );
363 | name = Main.storyboard;
364 | sourceTree = "";
365 | };
366 | /* End PBXVariantGroup section */
367 |
368 | /* Begin XCBuildConfiguration section */
369 | 1624C07873A55B02A4CC0A58 /* Debug */ = {
370 | isa = XCBuildConfiguration;
371 | baseConfigurationReference = 0A2A2D9FA25B2A97196125B1 /* Pods-RxAlamofireDemo-iOS.debug.xcconfig */;
372 | buildSettings = {
373 | ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON_NAME)";
374 | CODE_SIGN_IDENTITY = "iPhone Developer";
375 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
376 | INFOPLIST_FILE = "RxAlamofireDemo-iOS/Info.plist";
377 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
378 | LD_RUNPATH_SEARCH_PATHS = (
379 | "$(inherited)",
380 | "@executable_path/Frameworks",
381 | );
382 | OTHER_LDFLAGS = "-ObjC";
383 | PRODUCT_BUNDLE_IDENTIFIER = RxSwiftCommunity.RxAlamofire.iOSDemo;
384 | PRODUCT_NAME = "RxAlamofireDemo-iOS";
385 | SDKROOT = iphoneos;
386 | TARGETED_DEVICE_FAMILY = "1,2";
387 | };
388 | name = Debug;
389 | };
390 | 590629F869A7B154C408CBCE /* Debug */ = {
391 | isa = XCBuildConfiguration;
392 | buildSettings = {
393 | ALWAYS_SEARCH_USER_PATHS = NO;
394 | CLANG_ANALYZER_NONNULL = YES;
395 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
396 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
397 | CLANG_CXX_LIBRARY = "libc++";
398 | CLANG_ENABLE_MODULES = YES;
399 | CLANG_ENABLE_OBJC_ARC = YES;
400 | CLANG_ENABLE_OBJC_WEAK = YES;
401 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
402 | CLANG_WARN_BOOL_CONVERSION = YES;
403 | CLANG_WARN_COMMA = YES;
404 | CLANG_WARN_CONSTANT_CONVERSION = YES;
405 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
406 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
407 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
408 | CLANG_WARN_EMPTY_BODY = YES;
409 | CLANG_WARN_ENUM_CONVERSION = YES;
410 | CLANG_WARN_INFINITE_RECURSION = YES;
411 | CLANG_WARN_INT_CONVERSION = YES;
412 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
413 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
414 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
415 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
416 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
417 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
418 | CLANG_WARN_STRICT_PROTOTYPES = YES;
419 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
420 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
421 | CLANG_WARN_UNREACHABLE_CODE = YES;
422 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
423 | COPY_PHASE_STRIP = NO;
424 | DEBUG_INFORMATION_FORMAT = dwarf;
425 | ENABLE_STRICT_OBJC_MSGSEND = YES;
426 | ENABLE_TESTABILITY = YES;
427 | GCC_C_LANGUAGE_STANDARD = gnu11;
428 | GCC_DYNAMIC_NO_PIC = NO;
429 | GCC_NO_COMMON_BLOCKS = YES;
430 | GCC_OPTIMIZATION_LEVEL = 0;
431 | GCC_PREPROCESSOR_DEFINITIONS = (
432 | "$(inherited)",
433 | "DEBUG=1",
434 | );
435 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
436 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
437 | GCC_WARN_UNDECLARED_SELECTOR = YES;
438 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
439 | GCC_WARN_UNUSED_FUNCTION = YES;
440 | GCC_WARN_UNUSED_VARIABLE = YES;
441 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
442 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
443 | MTL_FAST_MATH = YES;
444 | ONLY_ACTIVE_ARCH = YES;
445 | PRODUCT_NAME = "$(TARGET_NAME)";
446 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
447 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
448 | SWIFT_VERSION = 5.0;
449 | };
450 | name = Debug;
451 | };
452 | 5E07E1993F6546162BE4CA6F /* Release */ = {
453 | isa = XCBuildConfiguration;
454 | buildSettings = {
455 | ALWAYS_SEARCH_USER_PATHS = NO;
456 | CLANG_ANALYZER_NONNULL = YES;
457 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
458 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
459 | CLANG_CXX_LIBRARY = "libc++";
460 | CLANG_ENABLE_MODULES = YES;
461 | CLANG_ENABLE_OBJC_ARC = YES;
462 | CLANG_ENABLE_OBJC_WEAK = YES;
463 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
464 | CLANG_WARN_BOOL_CONVERSION = YES;
465 | CLANG_WARN_COMMA = YES;
466 | CLANG_WARN_CONSTANT_CONVERSION = YES;
467 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
468 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
469 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
470 | CLANG_WARN_EMPTY_BODY = YES;
471 | CLANG_WARN_ENUM_CONVERSION = YES;
472 | CLANG_WARN_INFINITE_RECURSION = YES;
473 | CLANG_WARN_INT_CONVERSION = YES;
474 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
475 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
476 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
477 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
478 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
479 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
480 | CLANG_WARN_STRICT_PROTOTYPES = YES;
481 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
482 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
483 | CLANG_WARN_UNREACHABLE_CODE = YES;
484 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
485 | COPY_PHASE_STRIP = NO;
486 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
487 | ENABLE_NS_ASSERTIONS = NO;
488 | ENABLE_STRICT_OBJC_MSGSEND = YES;
489 | GCC_C_LANGUAGE_STANDARD = gnu11;
490 | GCC_NO_COMMON_BLOCKS = YES;
491 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
492 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
493 | GCC_WARN_UNDECLARED_SELECTOR = YES;
494 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
495 | GCC_WARN_UNUSED_FUNCTION = YES;
496 | GCC_WARN_UNUSED_VARIABLE = YES;
497 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
498 | MTL_ENABLE_DEBUG_INFO = NO;
499 | MTL_FAST_MATH = YES;
500 | PRODUCT_NAME = "$(TARGET_NAME)";
501 | SWIFT_COMPILATION_MODE = wholemodule;
502 | SWIFT_OPTIMIZATION_LEVEL = "-O";
503 | SWIFT_VERSION = 5.0;
504 | };
505 | name = Release;
506 | };
507 | 5E58EA97C86DBE5438EE92C7 /* Release */ = {
508 | isa = XCBuildConfiguration;
509 | baseConfigurationReference = 747F06E9DCFB616D5F0AF9C7 /* Pods-RxAlamofireDemo-iOS.release.xcconfig */;
510 | buildSettings = {
511 | ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON_NAME)";
512 | CODE_SIGN_IDENTITY = "iPhone Developer";
513 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
514 | INFOPLIST_FILE = "RxAlamofireDemo-iOS/Info.plist";
515 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
516 | LD_RUNPATH_SEARCH_PATHS = (
517 | "$(inherited)",
518 | "@executable_path/Frameworks",
519 | );
520 | OTHER_LDFLAGS = "-ObjC";
521 | PRODUCT_BUNDLE_IDENTIFIER = RxSwiftCommunity.RxAlamofire.iOSDemo;
522 | PRODUCT_NAME = "RxAlamofireDemo-iOS";
523 | SDKROOT = iphoneos;
524 | TARGETED_DEVICE_FAMILY = "1,2";
525 | };
526 | name = Release;
527 | };
528 | 6263A63E8232F10F3800C3B3 /* Release */ = {
529 | isa = XCBuildConfiguration;
530 | baseConfigurationReference = B5C3AAD32AF4EDA297F1E750 /* Pods-RxAlamofireDemo-tvOS.release.xcconfig */;
531 | buildSettings = {
532 | ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON_NAME)";
533 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
534 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
535 | INFOPLIST_FILE = "RxAlamofireDemo-tvOS/Info.plist";
536 | LD_RUNPATH_SEARCH_PATHS = (
537 | "$(inherited)",
538 | "@executable_path/Frameworks",
539 | );
540 | OTHER_LDFLAGS = "-ObjC";
541 | PRODUCT_BUNDLE_IDENTIFIER = RxSwiftCommunity.RxAlamofire.tvOSDemo;
542 | PRODUCT_NAME = "RxAlamofireDemo-tvOS";
543 | SDKROOT = appletvos;
544 | TARGETED_DEVICE_FAMILY = 3;
545 | TVOS_DEPLOYMENT_TARGET = 10.0;
546 | };
547 | name = Release;
548 | };
549 | 94CD077ECEDD6660F048EB3A /* Debug */ = {
550 | isa = XCBuildConfiguration;
551 | baseConfigurationReference = C1694F27957F7BF4A7F515F7 /* Pods-RxAlamofireDemo-tvOS.debug.xcconfig */;
552 | buildSettings = {
553 | ASSETCATALOG_COMPILER_APPICON_NAME = "$(APP_ICON_NAME)";
554 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
555 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
556 | INFOPLIST_FILE = "RxAlamofireDemo-tvOS/Info.plist";
557 | LD_RUNPATH_SEARCH_PATHS = (
558 | "$(inherited)",
559 | "@executable_path/Frameworks",
560 | );
561 | OTHER_LDFLAGS = "-ObjC";
562 | PRODUCT_BUNDLE_IDENTIFIER = RxSwiftCommunity.RxAlamofire.tvOSDemo;
563 | PRODUCT_NAME = "RxAlamofireDemo-tvOS";
564 | SDKROOT = appletvos;
565 | TARGETED_DEVICE_FAMILY = 3;
566 | TVOS_DEPLOYMENT_TARGET = 10.0;
567 | };
568 | name = Debug;
569 | };
570 | /* End XCBuildConfiguration section */
571 |
572 | /* Begin XCConfigurationList section */
573 | 0DC9C8FA99500E79BF744747 /* Build configuration list for PBXNativeTarget "RxAlamofireDemo-iOS" */ = {
574 | isa = XCConfigurationList;
575 | buildConfigurations = (
576 | 1624C07873A55B02A4CC0A58 /* Debug */,
577 | 5E58EA97C86DBE5438EE92C7 /* Release */,
578 | );
579 | defaultConfigurationIsVisible = 0;
580 | defaultConfigurationName = Release;
581 | };
582 | 424A81A30577F4B87602EEE2 /* Build configuration list for PBXNativeTarget "RxAlamofireDemo-tvOS" */ = {
583 | isa = XCConfigurationList;
584 | buildConfigurations = (
585 | 94CD077ECEDD6660F048EB3A /* Debug */,
586 | 6263A63E8232F10F3800C3B3 /* Release */,
587 | );
588 | defaultConfigurationIsVisible = 0;
589 | defaultConfigurationName = Release;
590 | };
591 | 910FD569A572566BA711E9E4 /* Build configuration list for PBXProject "RxAlamofireDemo" */ = {
592 | isa = XCConfigurationList;
593 | buildConfigurations = (
594 | 590629F869A7B154C408CBCE /* Debug */,
595 | 5E07E1993F6546162BE4CA6F /* Release */,
596 | );
597 | defaultConfigurationIsVisible = 0;
598 | defaultConfigurationName = Release;
599 | };
600 | /* End XCConfigurationList section */
601 | };
602 | rootObject = ECB84811D5C45696FC6ACAC1 /* Project object */;
603 | }
604 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo.xcodeproj/xcshareddata/xcschemes/RxAlamofireDemo-iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
40 |
41 |
42 |
43 |
53 |
55 |
61 |
62 |
63 |
64 |
65 |
66 |
72 |
74 |
80 |
81 |
82 |
83 |
84 |
85 |
87 |
88 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo.xcodeproj/xcshareddata/xcschemes/RxAlamofireDemo-tvOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
40 |
41 |
42 |
43 |
53 |
55 |
61 |
62 |
63 |
64 |
65 |
66 |
72 |
74 |
80 |
81 |
82 |
83 |
84 |
85 |
87 |
88 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Examples/RxAlamofireDemo.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Examples/pod_install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -eo pipefail
4 | export RELEASE_VERSION="$(git describe --abbrev=0 | tr -d '\n')"
5 | RELEASE_VERSION=${RELEASE_VERSION:1}
6 | xcodegen
7 | pod install --repo-update
8 | open RxAlamofireDemo.xcworkspace
--------------------------------------------------------------------------------
/Examples/project.yml:
--------------------------------------------------------------------------------
1 | name: RxAlamofireDemo
2 | options:
3 | minimumXcodeGenVersion: "2.15.1"
4 | developmentLanguage: en
5 | usesTabs: false
6 | indentWidth: 2
7 | tabWidth: 2
8 | xcodeVersion: "1140"
9 | deploymentTarget:
10 | iOS: "10.0"
11 | defaultConfig: "Release"
12 | configs:
13 | Debug: debug
14 | Release: release
15 | attributes:
16 | ORGANIZATIONNAME: RxSwiftCommunity
17 | schemes:
18 | RxAlamofireDemo-iOS:
19 | scheme: {}
20 | build:
21 | parallelizeBuild: true
22 | buildImplicitDependencies: true
23 | targets:
24 | RxAlamofireDemo-iOS: all
25 | run:
26 | config: Debug
27 | profile:
28 | config: Release
29 | analyze:
30 | config: Debug
31 | archive:
32 | config: Release
33 | revealArchiveInOrganizer: true
34 | RxAlamofireDemo-tvOS:
35 | scheme: {}
36 | build:
37 | parallelizeBuild: true
38 | buildImplicitDependencies: true
39 | targets:
40 | RxAlamofireDemo-tvOS: all
41 | run:
42 | config: Debug
43 | profile:
44 | config: Release
45 | analyze:
46 | config: Debug
47 | archive:
48 | config: Release
49 | revealArchiveInOrganizer: true
50 | targets:
51 | RxAlamofireDemo-iOS:
52 | type: application
53 | platform: iOS
54 | deploymentTarget: "10.0"
55 | sources: [RxAlamofireDemo-iOS]
56 | settings:
57 | INFOPLIST_FILE: RxAlamofireDemo-iOS/Info.plist
58 | PRODUCT_NAME: RxAlamofireDemo-iOS
59 | OTHER_LDFLAGS: -ObjC
60 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.iOSDemo
61 | ASSETCATALOG_COMPILER_APPICON_NAME: $(APP_ICON_NAME)
62 | DEBUG_INFORMATION_FORMAT: dwarf-with-dsym
63 | RxAlamofireDemo-tvOS:
64 | type: application
65 | platform: tvOS
66 | deploymentTarget: "10.0"
67 | sources: [RxAlamofireDemo-tvOS]
68 | settings:
69 | INFOPLIST_FILE: RxAlamofireDemo-tvOS/Info.plist
70 | PRODUCT_NAME: RxAlamofireDemo-tvOS
71 | OTHER_LDFLAGS: -ObjC
72 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.tvOSDemo
73 | ASSETCATALOG_COMPILER_APPICON_NAME: $(APP_ICON_NAME)
74 | DEBUG_INFORMATION_FORMAT: dwarf-with-dsym
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'cocoapods', '~> 1.10'
4 | gem 'danger', '~> 8.0'
5 | gem 'danger-swiftlint', '~> 0.20'
6 | gem 'jazzy', '~> 0.13'
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | CFPropertyList (3.0.3)
5 | activesupport (5.2.4.4)
6 | concurrent-ruby (~> 1.0, >= 1.0.2)
7 | i18n (>= 0.7, < 2)
8 | minitest (~> 5.1)
9 | tzinfo (~> 1.1)
10 | addressable (2.7.0)
11 | public_suffix (>= 2.0.2, < 5.0)
12 | algoliasearch (1.27.5)
13 | httpclient (~> 2.8, >= 2.8.3)
14 | json (>= 1.5.1)
15 | atomos (0.1.3)
16 | claide (1.0.3)
17 | claide-plugins (0.9.2)
18 | cork
19 | nap
20 | open4 (~> 1.3)
21 | cocoapods (1.10.0)
22 | addressable (~> 2.6)
23 | claide (>= 1.0.2, < 2.0)
24 | cocoapods-core (= 1.10.0)
25 | cocoapods-deintegrate (>= 1.0.3, < 2.0)
26 | cocoapods-downloader (>= 1.4.0, < 2.0)
27 | cocoapods-plugins (>= 1.0.0, < 2.0)
28 | cocoapods-search (>= 1.0.0, < 2.0)
29 | cocoapods-trunk (>= 1.4.0, < 2.0)
30 | cocoapods-try (>= 1.1.0, < 2.0)
31 | colored2 (~> 3.1)
32 | escape (~> 0.0.4)
33 | fourflusher (>= 2.3.0, < 3.0)
34 | gh_inspector (~> 1.0)
35 | molinillo (~> 0.6.6)
36 | nap (~> 1.0)
37 | ruby-macho (~> 1.4)
38 | xcodeproj (>= 1.19.0, < 2.0)
39 | cocoapods-core (1.10.0)
40 | activesupport (> 5.0, < 6)
41 | addressable (~> 2.6)
42 | algoliasearch (~> 1.0)
43 | concurrent-ruby (~> 1.1)
44 | fuzzy_match (~> 2.0.4)
45 | nap (~> 1.0)
46 | netrc (~> 0.11)
47 | public_suffix
48 | typhoeus (~> 1.0)
49 | cocoapods-deintegrate (1.0.4)
50 | cocoapods-downloader (1.4.0)
51 | cocoapods-plugins (1.0.0)
52 | nap
53 | cocoapods-search (1.0.0)
54 | cocoapods-trunk (1.5.0)
55 | nap (>= 0.8, < 2.0)
56 | netrc (~> 0.11)
57 | cocoapods-try (1.2.0)
58 | colored2 (3.1.2)
59 | concurrent-ruby (1.1.7)
60 | cork (0.3.0)
61 | colored2 (~> 3.1)
62 | danger (8.2.1)
63 | claide (~> 1.0)
64 | claide-plugins (>= 0.9.2)
65 | colored2 (~> 3.1)
66 | cork (~> 0.1)
67 | faraday (>= 0.9.0, < 2.0)
68 | faraday-http-cache (~> 2.0)
69 | git (~> 1.7)
70 | kramdown (~> 2.3)
71 | kramdown-parser-gfm (~> 1.0)
72 | no_proxy_fix
73 | octokit (~> 4.7)
74 | terminal-table (~> 1)
75 | danger-swiftlint (0.24.5)
76 | danger
77 | rake (> 10)
78 | thor (~> 0.19)
79 | escape (0.0.4)
80 | ethon (0.12.0)
81 | ffi (>= 1.3.0)
82 | faraday (1.3.0)
83 | faraday-net_http (~> 1.0)
84 | multipart-post (>= 1.2, < 3)
85 | ruby2_keywords
86 | faraday-http-cache (2.2.0)
87 | faraday (>= 0.8)
88 | faraday-net_http (1.0.0)
89 | ffi (1.14.2)
90 | fourflusher (2.3.1)
91 | fuzzy_match (2.0.4)
92 | gh_inspector (1.1.3)
93 | git (1.8.1)
94 | rchardet (~> 1.8)
95 | httpclient (2.8.3)
96 | i18n (1.8.6)
97 | concurrent-ruby (~> 1.0)
98 | jazzy (0.13.6)
99 | cocoapods (~> 1.5)
100 | mustache (~> 1.1)
101 | open4
102 | redcarpet (~> 3.4)
103 | rouge (>= 2.0.6, < 4.0)
104 | sassc (~> 2.1)
105 | sqlite3 (~> 1.3)
106 | xcinvoke (~> 0.3.0)
107 | json (2.5.1)
108 | kramdown (2.3.0)
109 | rexml
110 | kramdown-parser-gfm (1.1.0)
111 | kramdown (~> 2.0)
112 | liferaft (0.0.6)
113 | minitest (5.14.2)
114 | molinillo (0.6.6)
115 | multipart-post (2.1.1)
116 | mustache (1.1.1)
117 | nanaimo (0.3.0)
118 | nap (1.1.0)
119 | netrc (0.11.0)
120 | no_proxy_fix (0.1.2)
121 | octokit (4.20.0)
122 | faraday (>= 0.9)
123 | sawyer (~> 0.8.0, >= 0.5.3)
124 | open4 (1.3.4)
125 | public_suffix (4.0.6)
126 | rake (13.0.3)
127 | rchardet (1.8.0)
128 | redcarpet (3.5.1)
129 | rexml (3.2.4)
130 | rouge (3.26.0)
131 | ruby-macho (1.4.0)
132 | ruby2_keywords (0.0.2)
133 | sassc (2.4.0)
134 | ffi (~> 1.9)
135 | sawyer (0.8.2)
136 | addressable (>= 2.3.5)
137 | faraday (> 0.8, < 2.0)
138 | sqlite3 (1.4.2)
139 | terminal-table (1.8.0)
140 | unicode-display_width (~> 1.1, >= 1.1.1)
141 | thor (0.20.3)
142 | thread_safe (0.3.6)
143 | typhoeus (1.4.0)
144 | ethon (>= 0.9.0)
145 | tzinfo (1.2.9)
146 | thread_safe (~> 0.1)
147 | unicode-display_width (1.7.0)
148 | xcinvoke (0.3.0)
149 | liferaft (~> 0.0.6)
150 | xcodeproj (1.19.0)
151 | CFPropertyList (>= 2.3.3, < 4.0)
152 | atomos (~> 0.1.3)
153 | claide (>= 1.0.2, < 2.0)
154 | colored2 (~> 3.1)
155 | nanaimo (~> 0.3.0)
156 |
157 | PLATFORMS
158 | x86_64-darwin-20
159 |
160 | DEPENDENCIES
161 | cocoapods (~> 1.10)
162 | danger (~> 8.0)
163 | danger-swiftlint (~> 0.20)
164 | jazzy (~> 0.13)
165 |
166 | BUNDLED WITH
167 | 2.2.4
168 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Junior B.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.0
2 | // The swift-tools-version declares the minimum version of Swift required to build this package.
3 |
4 | import PackageDescription
5 |
6 | let package = Package(name: "RxAlamofire",
7 | platforms: [
8 | .macOS(.v10_12), .iOS(.v10), .tvOS(.v10), .watchOS(.v3)
9 | ],
10 | products: [
11 | // Products define the executables and libraries produced by a package, and make them visible to other packages.
12 | .library(name: "RxAlamofire",
13 | targets: ["RxAlamofire"])
14 | ],
15 |
16 | dependencies: [
17 | // Dependencies declare other packages that this package depends on.
18 | .package(url: "https://github.com/Alamofire/Alamofire.git", .upToNextMajor(from: "5.4.1")),
19 | .package(url: "https://github.com/ReactiveX/RxSwift.git", .upToNextMajor(from: "6.0.0")),
20 | .package(url: "https://github.com/AliSoftware/OHHTTPStubs.git", .upToNextMajor(from: "9.1.0"))
21 | ],
22 |
23 | targets: [
24 | // Targets are the basic building blocks of a package. A target can define a module or a test suite.
25 | // Targets can depend on other targets in this package, and on products in packages which this package depends on.
26 | .target(name: "RxAlamofire",
27 | dependencies: [
28 | .product(name: "RxSwift", package: "RxSwift"),
29 | .product(name: "Alamofire", package: "Alamofire"),
30 | .product(name: "RxCocoa", package: "RxSwift")
31 | ],
32 | path: "Sources"),
33 | .testTarget(name: "RxAlamofireTests",
34 | dependencies: [
35 | .byName(name: "RxAlamofire"),
36 | .product(name: "RxBlocking", package: "RxSwift"),
37 | .product(name: "OHHTTPStubs", package: "OHHTTPStubs"),
38 | .product(name: "OHHTTPStubsSwift", package: "OHHTTPStubs")
39 | ])
40 | ],
41 | swiftLanguageVersions: [.v5])
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | RxAlamofire
2 | ===
3 |
4 | RxAlamofire is a [RxSwift](https://github.com/ReactiveX/RxSwift) wrapper around the elegant HTTP networking in Swift [Alamofire](https://github.com/Alamofire/Alamofire).
5 |
6 | 
7 | [](http://cocoapods.org/pods/RxAlamofire)
8 | [](http://cocoapods.org/pods/RxAlamofire)
9 | [](http://cocoapods.org/pods/RxAlamofire)
10 | [](https://github.com/Carthage/Carthage)
11 |
12 | ## Getting Started
13 |
14 | Wrapping RxSwift around Alamofire makes working with network requests a smoother and nicer task. Alamofire is a very powerful framework and RxSwift add the ability to compose responses in a simple and effective way.
15 |
16 | A basic usage is (considering a simple currency converter):
17 |
18 | ```swift
19 | let formatter = NSNumberFormatter()
20 | formatter.numberStyle = .currencyStyle
21 | formatter.currencyCode = "USD"
22 | if let fromValue = NSNumberFormatter().numberFromString(self.fromTextField.text!) {
23 |
24 | RxAlamofire.requestJSON(.get, sourceStringURL)
25 | .debug()
26 | .subscribe(onNext: { [weak self] (r, json) in
27 | if let dict = json as? [String: AnyObject] {
28 | let valDict = dict["rates"] as! Dictionary
29 | if let conversionRate = valDict["USD"] as? Float {
30 | self?.toTextField.text = formatter
31 | .string(from: NSNumber(value: conversionRate * fromValue))
32 | }
33 | }
34 | }, onError: { [weak self] (error) in
35 | self?.displayError(error as NSError)
36 | })
37 | .disposed(by: disposeBag)
38 |
39 | } else {
40 | self.toTextField.text = "Invalid Input!"
41 | }
42 | ```
43 |
44 | ## Example Usages
45 |
46 | Currently, the library features the following extensions:
47 |
48 | ```swift
49 | let stringURL = ""
50 |
51 | // MARK: URLSession simple and fast
52 | let session = URLSession.shared()
53 |
54 | _ = session.rx
55 | .response(.get, stringURL)
56 | .observeOn(MainScheduler.instance)
57 | .subscribe { print($0) }
58 |
59 | _ = session.rx
60 | .json(.get, stringURL)
61 | .observeOn(MainScheduler.instance)
62 | .subscribe { print($0) }
63 |
64 | _ = session.rx
65 | .data(.get, stringURL)
66 | .observeOn(MainScheduler.instance)
67 | .subscribe { print($0) }
68 |
69 | // MARK: With Alamofire engine
70 |
71 | _ = json(.get, stringURL)
72 | .observeOn(MainScheduler.instance)
73 | .subscribe { print($0) }
74 |
75 | // validation
76 | _ = request(.get, stringURL)
77 | .validate(statusCode: 200..<300)
78 | .validate(contentType: ["application/json"])
79 | .responseJSON()
80 | .observeOn(MainScheduler.instance)
81 | .subscribe { print($0) }
82 |
83 | // progress
84 | _ = request(.get, stringURL)
85 | .progress()
86 | .observeOn(MainScheduler.instance)
87 | .subscribe { print($0) }
88 |
89 | // just fire upload and display progress
90 | _ = upload(Data(), urlRequest: try! RxAlamofire.urlRequest(.get, stringURL))
91 | .progress()
92 | .observeOn(MainScheduler.instance)
93 | .subscribe { print($0) }
94 |
95 | // progress and final result
96 | // uploading files with progress showing is processing intensive operation anyway, so
97 | // this doesn't add much overhead
98 | _ = request(.get, stringURL)
99 | .flatMap { request -> Observable<(Data?, RxProgress)> in
100 | let dataPart = request.rx
101 | .data()
102 | .map { d -> Data? in d }
103 | .startWith(nil as Data?)
104 | let progressPart = request.rx.progress()
105 | return Observable.combineLatest(dataPart, progressPart) { ($0, $1) }
106 | }
107 | .observeOn(MainScheduler.instance)
108 | .subscribe { print($0) }
109 |
110 |
111 | // MARK: Alamofire Session
112 | // same methods with any Alamofire Session
113 |
114 | let session = Session.default
115 |
116 | // simple case
117 | _ = session.rx.json(.get, stringURL)
118 | .observeOn(MainScheduler.instance)
119 | .subscribe { print($0) }
120 |
121 | // URLHTTPResponse + JSON
122 | _ = session.rx.responseJSON(.get, stringURL)
123 | .observeOn(MainScheduler.instance)
124 | .subscribe { print($0) }
125 |
126 | // URLHTTPResponse + String
127 | _ = session.rx.responseString(.get, stringURL)
128 | .observeOn(MainScheduler.instance)
129 | .subscribe { print($0) }
130 |
131 | // URLHTTPResponse + Validation + JSON
132 | _ = session.rx.request(.get, stringURL)
133 | .validate(statusCode: 200 ..< 300)
134 | .validate(contentType: ["text/json"])
135 | .json()
136 | .observeOn(MainScheduler.instance)
137 | .subscribe { print($0) }
138 |
139 | // URLHTTPResponse + Validation + URLHTTPResponse + JSON
140 | _ = session.rx.request(.get, stringURL)
141 | .validate(statusCode: 200 ..< 300)
142 | .validate(contentType: ["text/json"])
143 | .responseJSON()
144 | .observeOn(MainScheduler.instance)
145 | .subscribe { print($0) }
146 |
147 | // URLHTTPResponse + Validation + URLHTTPResponse + String + Progress
148 | _ = session.rx.request(.get, stringURL)
149 | .validate(statusCode: 200 ..< 300)
150 | .validate(contentType: ["text/something"])
151 | .flatMap { request -> Observable<(String?, RxProgress)> in
152 | let stringPart = request.rx
153 | .string()
154 | .map { d -> String? in d }
155 | .startWith(nil as String?)
156 | let progressPart = request.rx.progress()
157 | return Observable.combineLatest(stringPart, progressPart) { ($0, $1) }
158 | }
159 | .observeOn(MainScheduler.instance)
160 | .subscribe { print($0) }
161 |
162 | // Interceptor + URLHTTPResponse + Validation + JSON
163 | let adapter = // Some RequestAdapter
164 | let retrier = // Some RequestRetrier
165 | let interceptor = Interceptor(adapter: adapter, retrier: retrier)
166 | _ = session.rx.request(.get, stringURL)
167 | .validate()
168 | .validate(contentType: ["text/json"])
169 | .responseJSON()
170 | .observeOn(MainScheduler.instance)
171 | .subscribe { print($0) }
172 | ```
173 |
174 | ## Installation
175 |
176 | There are three ways to install RxAlamofire
177 |
178 | ### CocoaPods
179 |
180 | Just add to your project's `Podfile`:
181 |
182 | ```
183 | pod 'RxAlamofire'
184 | ```
185 |
186 | ### Carthage
187 |
188 | Add following to `Cartfile`:
189 |
190 | ```
191 | github "RxSwiftCommunity/RxAlamofire" ~> 6.1
192 | ```
193 |
194 | ### Swift Package manager
195 |
196 | Create a `Package.swift` file
197 |
198 | ```
199 | // swift-tools-version:5.0
200 |
201 | import PackageDescription
202 |
203 | let package = Package(
204 | name: "TestRxAlamofire",
205 |
206 | dependencies: [
207 | .package(url: "https://github.com/RxSwiftCommunity/RxAlamofire.git",
208 | from: "6.1.0"),
209 | ],
210 |
211 | targets: [
212 | .target(
213 | name: "TestRxAlamofire",
214 | dependencies: ["RxAlamofire"])
215 | ]
216 | )
217 |
218 | ```
219 |
220 | ### Manually
221 |
222 | To manual install this extension you should get the `RxAlamofire/Source/RxAlamofire.swift` imported into your project, alongside RxSwift and Alamofire.
223 |
224 | ## Requirements
225 |
226 | RxAlamofire requires Swift 5.1 and dedicated versions of Alamofire (5.4.1) and RxSwift (6.0.0).
227 |
228 | For the last RxSwift 5.1 support, please use RxAlamofire 5.7.1.
229 |
230 | For the last Swift 5.0 support, please use RxAlamofire 5.1.0.
231 |
232 | For the last Swift 4.2 support, please use RxAlamofire 4.5.0.
233 |
--------------------------------------------------------------------------------
/RxAlamofire.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "RxAlamofire"
3 | # Version to always follow latest tag, with fallback to major
4 | s.version = "6.1.2"
5 | s.license = "MIT"
6 | s.summary = "RxSwift wrapper around the elegant HTTP networking in Swift Alamofire"
7 | s.homepage = "https://github.com/RxSwiftCommunity/RxAlamofire"
8 | s.authors = { "RxSwift Community" => "community@rxswift.org" }
9 | s.source = { :git => "https://github.com/RxSwiftCommunity/RxAlamofire.git", :tag => "v" + s.version.to_s }
10 | s.swift_version = "5.1"
11 |
12 | s.ios.deployment_target = "10.0"
13 | s.osx.deployment_target = "10.12"
14 | s.tvos.deployment_target = "10.0"
15 | s.watchos.deployment_target = "3.0"
16 |
17 | s.requires_arc = true
18 |
19 | s.default_subspec = "Core"
20 |
21 | s.subspec "Core" do |ss|
22 | ss.source_files = "Sources/RxAlamofire/*.swift"
23 | ss.dependency "RxSwift", "~> 6.0"
24 | ss.dependency "Alamofire", "~> 5.4"
25 | ss.framework = "Foundation"
26 | end
27 |
28 | s.subspec "RxCocoa" do |ss|
29 | ss.source_files = "Sources/RxAlamofire/Cocoa/*.swift"
30 | ss.dependency "RxCocoa", "~> 6.0"
31 | ss.dependency "RxAlamofire/Core"
32 | end
33 | end
34 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 51;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 00DF98C0D4CBA60B141FF8C4 /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC59D347F5CBCF36203E9367 /* RxRelay.framework */; };
11 | 2CE896CED6E5BC0DBA1481B6 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 931E1AD90E72F0C52CC19CF5 /* Alamofire.framework */; };
12 | 2DAB45BE50D0B7605C82DF6A /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D138B2D5F6DC2191AE48CE45 /* RxSwift.framework */; };
13 | 4A34158ECC511B960D2F96A1 /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E5D0E682AEE25C42DECAE35B /* RxRelay.framework */; };
14 | 4BAFB0147A4F68B560720CFC /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A667FFDF5C13F30D164EB313 /* RxRelay.framework */; };
15 | 7D621525A60233EB51C9F894 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FE07489457BEA1242D97848 /* Alamofire.framework */; };
16 | 8213B0BD6E8DC445E3911950 /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82EA652B6CB44E1E382BEFCB /* RxRelay.framework */; };
17 | 88F830924B46A5FC8BA5F49E /* URLSession+RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC1B4133A55A47C529A248E /* URLSession+RxAlamofire.swift */; };
18 | 9FD976EDA7A88396AD5D1B59 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1F8EB0AB497650CFFB48E78 /* RxSwift.framework */; };
19 | AB13E710B077474DA7F0E87D /* RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3135F48C8341D861BB741107 /* RxAlamofire.swift */; };
20 | AC602334E96E22D8C0CB840C /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BDE5499DC3081B58EAE4C40 /* RxSwift.framework */; };
21 | AE1AAE1AC3C41E0E3EDF0B2B /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DE459EC5874DC8FE73207BE /* RxCocoa.framework */; };
22 | B363AE468B3D819F0768BC34 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0384DB51B432FCE57ECEEBB8 /* Alamofire.framework */; };
23 | B8261A5B587D10BE9D57B402 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7344131D11B109658CC96ACE /* Alamofire.framework */; };
24 | B9D98B0B75A04ACEF73E3CB7 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 760CB2E21D7F43071D30AB4E /* RxCocoa.framework */; };
25 | C0AD0BFFE6512531A91D5835 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B7A786B80FB8C562B7EE5E /* RxCocoa.framework */; };
26 | CB79F1BE459467ADE1D03A23 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24B3AB7F2678326B1319873 /* RxSwift.framework */; };
27 | CFECCEFADDF0C2DF2F716D02 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D73106E0BAB91899D303C43 /* RxCocoa.framework */; };
28 | D085A39F3AA5E73EA3040FD7 /* URLSession+RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC1B4133A55A47C529A248E /* URLSession+RxAlamofire.swift */; };
29 | D9EC6C5C0EA4F965F39C9441 /* RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3135F48C8341D861BB741107 /* RxAlamofire.swift */; };
30 | DA230BED4459CEA6CE50AE7D /* RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3135F48C8341D861BB741107 /* RxAlamofire.swift */; };
31 | DA31CEC2113A1063F1A8DCBA /* URLSession+RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC1B4133A55A47C529A248E /* URLSession+RxAlamofire.swift */; };
32 | E821D4A139E5030311C95C48 /* RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3135F48C8341D861BB741107 /* RxAlamofire.swift */; };
33 | EAAA66DCB09ED386F1E93873 /* URLSession+RxAlamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC1B4133A55A47C529A248E /* URLSession+RxAlamofire.swift */; };
34 | /* End PBXBuildFile section */
35 |
36 | /* Begin PBXFileReference section */
37 | 0384DB51B432FCE57ECEEBB8 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; };
38 | 0D73106E0BAB91899D303C43 /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxCocoa.framework; sourceTree = ""; };
39 | 0EC1B4133A55A47C529A248E /* URLSession+RxAlamofire.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URLSession+RxAlamofire.swift"; sourceTree = ""; };
40 | 1FE07489457BEA1242D97848 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; };
41 | 21B247CF1664B5268790D3A6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
42 | 3135F48C8341D861BB741107 /* RxAlamofire.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxAlamofire.swift; sourceTree = ""; };
43 | 33B7A786B80FB8C562B7EE5E /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxCocoa.framework; sourceTree = ""; };
44 | 3BDE5499DC3081B58EAE4C40 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxSwift.framework; sourceTree = ""; };
45 | 6B365935DDEE06324FC39C7D /* RxAlamofire watchOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "RxAlamofire watchOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
46 | 7344131D11B109658CC96ACE /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; };
47 | 760CB2E21D7F43071D30AB4E /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxCocoa.framework; sourceTree = ""; };
48 | 82EA652B6CB44E1E382BEFCB /* RxRelay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxRelay.framework; sourceTree = ""; };
49 | 8DE459EC5874DC8FE73207BE /* RxCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxCocoa.framework; sourceTree = ""; };
50 | 8FF0E111A2AA444531BBEF4E /* RxAlamofire iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "RxAlamofire iOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
51 | 931E1AD90E72F0C52CC19CF5 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; };
52 | 9E0A5D782C3C6C8F03FFF815 /* RxAlamofire tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "RxAlamofire tvOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
53 | A1F8EB0AB497650CFFB48E78 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxSwift.framework; sourceTree = ""; };
54 | A667FFDF5C13F30D164EB313 /* RxRelay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxRelay.framework; sourceTree = ""; };
55 | A959128E6F8E1C6D5C3C6F1D /* RxAlamofire macOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "RxAlamofire macOS.framework"; sourceTree = BUILT_PRODUCTS_DIR; };
56 | D138B2D5F6DC2191AE48CE45 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxSwift.framework; sourceTree = ""; };
57 | D24B3AB7F2678326B1319873 /* RxSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxSwift.framework; sourceTree = ""; };
58 | E5D0E682AEE25C42DECAE35B /* RxRelay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxRelay.framework; sourceTree = ""; };
59 | EC59D347F5CBCF36203E9367 /* RxRelay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = RxRelay.framework; sourceTree = ""; };
60 | /* End PBXFileReference section */
61 |
62 | /* Begin PBXFrameworksBuildPhase section */
63 | 2F9C629EA03BCF7DDD1AA41B /* Frameworks */ = {
64 | isa = PBXFrameworksBuildPhase;
65 | buildActionMask = 2147483647;
66 | files = (
67 | B8261A5B587D10BE9D57B402 /* Alamofire.framework in Frameworks */,
68 | CB79F1BE459467ADE1D03A23 /* RxSwift.framework in Frameworks */,
69 | C0AD0BFFE6512531A91D5835 /* RxCocoa.framework in Frameworks */,
70 | 4BAFB0147A4F68B560720CFC /* RxRelay.framework in Frameworks */,
71 | );
72 | runOnlyForDeploymentPostprocessing = 0;
73 | };
74 | 6608CC655EA915135D1AE003 /* Frameworks */ = {
75 | isa = PBXFrameworksBuildPhase;
76 | buildActionMask = 2147483647;
77 | files = (
78 | 2CE896CED6E5BC0DBA1481B6 /* Alamofire.framework in Frameworks */,
79 | 9FD976EDA7A88396AD5D1B59 /* RxSwift.framework in Frameworks */,
80 | AE1AAE1AC3C41E0E3EDF0B2B /* RxCocoa.framework in Frameworks */,
81 | 4A34158ECC511B960D2F96A1 /* RxRelay.framework in Frameworks */,
82 | );
83 | runOnlyForDeploymentPostprocessing = 0;
84 | };
85 | D1523943EC4332DF0E2052FC /* Frameworks */ = {
86 | isa = PBXFrameworksBuildPhase;
87 | buildActionMask = 2147483647;
88 | files = (
89 | 7D621525A60233EB51C9F894 /* Alamofire.framework in Frameworks */,
90 | AC602334E96E22D8C0CB840C /* RxSwift.framework in Frameworks */,
91 | CFECCEFADDF0C2DF2F716D02 /* RxCocoa.framework in Frameworks */,
92 | 8213B0BD6E8DC445E3911950 /* RxRelay.framework in Frameworks */,
93 | );
94 | runOnlyForDeploymentPostprocessing = 0;
95 | };
96 | D3792261E944C94152AC0097 /* Frameworks */ = {
97 | isa = PBXFrameworksBuildPhase;
98 | buildActionMask = 2147483647;
99 | files = (
100 | B363AE468B3D819F0768BC34 /* Alamofire.framework in Frameworks */,
101 | 2DAB45BE50D0B7605C82DF6A /* RxSwift.framework in Frameworks */,
102 | B9D98B0B75A04ACEF73E3CB7 /* RxCocoa.framework in Frameworks */,
103 | 00DF98C0D4CBA60B141FF8C4 /* RxRelay.framework in Frameworks */,
104 | );
105 | runOnlyForDeploymentPostprocessing = 0;
106 | };
107 | /* End PBXFrameworksBuildPhase section */
108 |
109 | /* Begin PBXGroup section */
110 | 08CA660D2122B2A9FBB18F38 /* Frameworks */ = {
111 | isa = PBXGroup;
112 | children = (
113 | 6042CCFAA359DB21409294E8 /* Carthage */,
114 | );
115 | name = Frameworks;
116 | sourceTree = "";
117 | };
118 | 152C4813CBF5E762077FF7CB /* watchOS */ = {
119 | isa = PBXGroup;
120 | children = (
121 | 7344131D11B109658CC96ACE /* Alamofire.framework */,
122 | 33B7A786B80FB8C562B7EE5E /* RxCocoa.framework */,
123 | A667FFDF5C13F30D164EB313 /* RxRelay.framework */,
124 | D24B3AB7F2678326B1319873 /* RxSwift.framework */,
125 | );
126 | path = watchOS;
127 | sourceTree = "";
128 | };
129 | 1BEC4E621B883F837B2BD913 /* Products */ = {
130 | isa = PBXGroup;
131 | children = (
132 | 8FF0E111A2AA444531BBEF4E /* RxAlamofire iOS.framework */,
133 | A959128E6F8E1C6D5C3C6F1D /* RxAlamofire macOS.framework */,
134 | 9E0A5D782C3C6C8F03FFF815 /* RxAlamofire tvOS.framework */,
135 | 6B365935DDEE06324FC39C7D /* RxAlamofire watchOS.framework */,
136 | );
137 | name = Products;
138 | sourceTree = "";
139 | };
140 | 217A3F0EDA9EF78E90C5278B /* Cocoa */ = {
141 | isa = PBXGroup;
142 | children = (
143 | 0EC1B4133A55A47C529A248E /* URLSession+RxAlamofire.swift */,
144 | );
145 | path = Cocoa;
146 | sourceTree = "";
147 | };
148 | 6042CCFAA359DB21409294E8 /* Carthage */ = {
149 | isa = PBXGroup;
150 | children = (
151 | DD0CAD1621F0934E688774CC /* iOS */,
152 | 949054E8D06BEB34E34F667C /* Mac */,
153 | DB8AAD0D7D9AB47BA825F4CB /* tvOS */,
154 | 152C4813CBF5E762077FF7CB /* watchOS */,
155 | );
156 | name = Carthage;
157 | path = Carthage/Build;
158 | sourceTree = "";
159 | };
160 | 949054E8D06BEB34E34F667C /* Mac */ = {
161 | isa = PBXGroup;
162 | children = (
163 | 1FE07489457BEA1242D97848 /* Alamofire.framework */,
164 | 0D73106E0BAB91899D303C43 /* RxCocoa.framework */,
165 | 82EA652B6CB44E1E382BEFCB /* RxRelay.framework */,
166 | 3BDE5499DC3081B58EAE4C40 /* RxSwift.framework */,
167 | );
168 | path = Mac;
169 | sourceTree = "";
170 | };
171 | A69D268E0F848FD62C75A15C = {
172 | isa = PBXGroup;
173 | children = (
174 | CEB3E900EFCAB3BD5EE63B8B /* RxAlamofire */,
175 | 08CA660D2122B2A9FBB18F38 /* Frameworks */,
176 | 1BEC4E621B883F837B2BD913 /* Products */,
177 | );
178 | indentWidth = 2;
179 | sourceTree = "";
180 | tabWidth = 2;
181 | usesTabs = 0;
182 | };
183 | CEB3E900EFCAB3BD5EE63B8B /* RxAlamofire */ = {
184 | isa = PBXGroup;
185 | children = (
186 | 21B247CF1664B5268790D3A6 /* Info.plist */,
187 | 3135F48C8341D861BB741107 /* RxAlamofire.swift */,
188 | 217A3F0EDA9EF78E90C5278B /* Cocoa */,
189 | );
190 | name = RxAlamofire;
191 | path = Sources/RxAlamofire;
192 | sourceTree = "";
193 | };
194 | DB8AAD0D7D9AB47BA825F4CB /* tvOS */ = {
195 | isa = PBXGroup;
196 | children = (
197 | 931E1AD90E72F0C52CC19CF5 /* Alamofire.framework */,
198 | 8DE459EC5874DC8FE73207BE /* RxCocoa.framework */,
199 | E5D0E682AEE25C42DECAE35B /* RxRelay.framework */,
200 | A1F8EB0AB497650CFFB48E78 /* RxSwift.framework */,
201 | );
202 | path = tvOS;
203 | sourceTree = "";
204 | };
205 | DD0CAD1621F0934E688774CC /* iOS */ = {
206 | isa = PBXGroup;
207 | children = (
208 | 0384DB51B432FCE57ECEEBB8 /* Alamofire.framework */,
209 | 760CB2E21D7F43071D30AB4E /* RxCocoa.framework */,
210 | EC59D347F5CBCF36203E9367 /* RxRelay.framework */,
211 | D138B2D5F6DC2191AE48CE45 /* RxSwift.framework */,
212 | );
213 | path = iOS;
214 | sourceTree = "";
215 | };
216 | /* End PBXGroup section */
217 |
218 | /* Begin PBXNativeTarget section */
219 | 73D12D3780EBC65D207E1F16 /* RxAlamofire iOS */ = {
220 | isa = PBXNativeTarget;
221 | buildConfigurationList = 8AC30854BE8A7F7F123AC733 /* Build configuration list for PBXNativeTarget "RxAlamofire iOS" */;
222 | buildPhases = (
223 | 454335A048E2BFFACEAAB20A /* Sources */,
224 | D3792261E944C94152AC0097 /* Frameworks */,
225 | );
226 | buildRules = (
227 | );
228 | dependencies = (
229 | );
230 | name = "RxAlamofire iOS";
231 | productName = "RxAlamofire iOS";
232 | productReference = 8FF0E111A2AA444531BBEF4E /* RxAlamofire iOS.framework */;
233 | productType = "com.apple.product-type.framework";
234 | };
235 | A776096A786BE57F11C5B9FA /* RxAlamofire tvOS */ = {
236 | isa = PBXNativeTarget;
237 | buildConfigurationList = 8728AF49150E382895170A83 /* Build configuration list for PBXNativeTarget "RxAlamofire tvOS" */;
238 | buildPhases = (
239 | 6CF49E70D65F08DC8027B280 /* Sources */,
240 | 6608CC655EA915135D1AE003 /* Frameworks */,
241 | );
242 | buildRules = (
243 | );
244 | dependencies = (
245 | );
246 | name = "RxAlamofire tvOS";
247 | productName = "RxAlamofire tvOS";
248 | productReference = 9E0A5D782C3C6C8F03FFF815 /* RxAlamofire tvOS.framework */;
249 | productType = "com.apple.product-type.framework";
250 | };
251 | FB3DDC45C3FBCB3CA0480999 /* RxAlamofire watchOS */ = {
252 | isa = PBXNativeTarget;
253 | buildConfigurationList = 45BDAC6C68D85F6F26580D96 /* Build configuration list for PBXNativeTarget "RxAlamofire watchOS" */;
254 | buildPhases = (
255 | 14A0427A21215DCCE43A2EA2 /* Sources */,
256 | 2F9C629EA03BCF7DDD1AA41B /* Frameworks */,
257 | );
258 | buildRules = (
259 | );
260 | dependencies = (
261 | );
262 | name = "RxAlamofire watchOS";
263 | productName = "RxAlamofire watchOS";
264 | productReference = 6B365935DDEE06324FC39C7D /* RxAlamofire watchOS.framework */;
265 | productType = "com.apple.product-type.framework";
266 | };
267 | FBF9C9788697890E5FADA871 /* RxAlamofire macOS */ = {
268 | isa = PBXNativeTarget;
269 | buildConfigurationList = 55B231F67223EC5BCB3275A6 /* Build configuration list for PBXNativeTarget "RxAlamofire macOS" */;
270 | buildPhases = (
271 | EE026B07F02531575B90AC07 /* Sources */,
272 | D1523943EC4332DF0E2052FC /* Frameworks */,
273 | );
274 | buildRules = (
275 | );
276 | dependencies = (
277 | );
278 | name = "RxAlamofire macOS";
279 | productName = "RxAlamofire macOS";
280 | productReference = A959128E6F8E1C6D5C3C6F1D /* RxAlamofire macOS.framework */;
281 | productType = "com.apple.product-type.framework";
282 | };
283 | /* End PBXNativeTarget section */
284 |
285 | /* Begin PBXProject section */
286 | 26A56EE735A9C247341EBA45 /* Project object */ = {
287 | isa = PBXProject;
288 | attributes = {
289 | LastUpgradeCheck = 1140;
290 | ORGANIZATIONNAME = RxSwiftCommunity;
291 | TargetAttributes = {
292 | };
293 | };
294 | buildConfigurationList = FE3A4B4109842298484A21D5 /* Build configuration list for PBXProject "RxAlamofire" */;
295 | compatibilityVersion = "Xcode 10.0";
296 | developmentRegion = en;
297 | hasScannedForEncodings = 0;
298 | knownRegions = (
299 | Base,
300 | en,
301 | );
302 | mainGroup = A69D268E0F848FD62C75A15C;
303 | projectDirPath = "";
304 | projectRoot = "";
305 | targets = (
306 | 73D12D3780EBC65D207E1F16 /* RxAlamofire iOS */,
307 | FBF9C9788697890E5FADA871 /* RxAlamofire macOS */,
308 | A776096A786BE57F11C5B9FA /* RxAlamofire tvOS */,
309 | FB3DDC45C3FBCB3CA0480999 /* RxAlamofire watchOS */,
310 | );
311 | };
312 | /* End PBXProject section */
313 |
314 | /* Begin PBXSourcesBuildPhase section */
315 | 14A0427A21215DCCE43A2EA2 /* Sources */ = {
316 | isa = PBXSourcesBuildPhase;
317 | buildActionMask = 2147483647;
318 | files = (
319 | DA230BED4459CEA6CE50AE7D /* RxAlamofire.swift in Sources */,
320 | DA31CEC2113A1063F1A8DCBA /* URLSession+RxAlamofire.swift in Sources */,
321 | );
322 | runOnlyForDeploymentPostprocessing = 0;
323 | };
324 | 454335A048E2BFFACEAAB20A /* Sources */ = {
325 | isa = PBXSourcesBuildPhase;
326 | buildActionMask = 2147483647;
327 | files = (
328 | AB13E710B077474DA7F0E87D /* RxAlamofire.swift in Sources */,
329 | EAAA66DCB09ED386F1E93873 /* URLSession+RxAlamofire.swift in Sources */,
330 | );
331 | runOnlyForDeploymentPostprocessing = 0;
332 | };
333 | 6CF49E70D65F08DC8027B280 /* Sources */ = {
334 | isa = PBXSourcesBuildPhase;
335 | buildActionMask = 2147483647;
336 | files = (
337 | E821D4A139E5030311C95C48 /* RxAlamofire.swift in Sources */,
338 | 88F830924B46A5FC8BA5F49E /* URLSession+RxAlamofire.swift in Sources */,
339 | );
340 | runOnlyForDeploymentPostprocessing = 0;
341 | };
342 | EE026B07F02531575B90AC07 /* Sources */ = {
343 | isa = PBXSourcesBuildPhase;
344 | buildActionMask = 2147483647;
345 | files = (
346 | D9EC6C5C0EA4F965F39C9441 /* RxAlamofire.swift in Sources */,
347 | D085A39F3AA5E73EA3040FD7 /* URLSession+RxAlamofire.swift in Sources */,
348 | );
349 | runOnlyForDeploymentPostprocessing = 0;
350 | };
351 | /* End PBXSourcesBuildPhase section */
352 |
353 | /* Begin XCBuildConfiguration section */
354 | 09E9D5CB0C0AA8D801E7ED87 /* Debug */ = {
355 | isa = XCBuildConfiguration;
356 | buildSettings = {
357 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
358 | CODE_SIGN_IDENTITY = "";
359 | CURRENT_PROJECT_VERSION = 1;
360 | DEFINES_MODULE = YES;
361 | DYLIB_COMPATIBILITY_VERSION = 1;
362 | DYLIB_CURRENT_VERSION = 1;
363 | DYLIB_INSTALL_NAME_BASE = "@rpath";
364 | FRAMEWORK_SEARCH_PATHS = (
365 | "$(inherited)",
366 | "$(PROJECT_DIR)/Carthage/Build/tvOS",
367 | );
368 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
369 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
370 | LD_RUNPATH_SEARCH_PATHS = (
371 | "$(inherited)",
372 | "@executable_path/Frameworks",
373 | );
374 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-tvOS";
375 | PRODUCT_NAME = RxAlamofire;
376 | SDKROOT = appletvos;
377 | SKIP_INSTALL = NO;
378 | TARGETED_DEVICE_FAMILY = 3;
379 | VERSIONING_SYSTEM = "apple-generic";
380 | };
381 | name = Debug;
382 | };
383 | 240A13B96272DD86C40BB0A6 /* Debug */ = {
384 | isa = XCBuildConfiguration;
385 | buildSettings = {
386 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
387 | CODE_SIGN_IDENTITY = "";
388 | CURRENT_PROJECT_VERSION = 1;
389 | DEFINES_MODULE = YES;
390 | DYLIB_COMPATIBILITY_VERSION = 1;
391 | DYLIB_CURRENT_VERSION = 1;
392 | DYLIB_INSTALL_NAME_BASE = "@rpath";
393 | FRAMEWORK_SEARCH_PATHS = (
394 | "$(inherited)",
395 | "$(PROJECT_DIR)/Carthage/Build/watchOS",
396 | );
397 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
398 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
399 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-watchOS";
400 | PRODUCT_NAME = RxAlamofire;
401 | SDKROOT = watchos;
402 | SKIP_INSTALL = NO;
403 | TARGETED_DEVICE_FAMILY = 4;
404 | VERSIONING_SYSTEM = "apple-generic";
405 | };
406 | name = Debug;
407 | };
408 | 3026FD9AF091FC2EF5C8A480 /* Debug */ = {
409 | isa = XCBuildConfiguration;
410 | buildSettings = {
411 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
412 | CODE_SIGN_IDENTITY = "";
413 | COMBINE_HIDPI_IMAGES = YES;
414 | CURRENT_PROJECT_VERSION = 1;
415 | DEFINES_MODULE = YES;
416 | DYLIB_COMPATIBILITY_VERSION = 1;
417 | DYLIB_CURRENT_VERSION = 1;
418 | DYLIB_INSTALL_NAME_BASE = "@rpath";
419 | FRAMEWORK_SEARCH_PATHS = (
420 | "$(inherited)",
421 | "$(PROJECT_DIR)/Carthage/Build/Mac",
422 | );
423 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
424 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
425 | LD_RUNPATH_SEARCH_PATHS = (
426 | "$(inherited)",
427 | "@executable_path/../Frameworks",
428 | );
429 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-macOS";
430 | PRODUCT_NAME = RxAlamofire;
431 | SDKROOT = macosx;
432 | SKIP_INSTALL = NO;
433 | VERSIONING_SYSTEM = "apple-generic";
434 | };
435 | name = Debug;
436 | };
437 | 39072B322A71963487E93F92 /* Release */ = {
438 | isa = XCBuildConfiguration;
439 | buildSettings = {
440 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
441 | CODE_SIGN_IDENTITY = "";
442 | CURRENT_PROJECT_VERSION = 1;
443 | DEFINES_MODULE = YES;
444 | DYLIB_COMPATIBILITY_VERSION = 1;
445 | DYLIB_CURRENT_VERSION = 1;
446 | DYLIB_INSTALL_NAME_BASE = "@rpath";
447 | FRAMEWORK_SEARCH_PATHS = (
448 | "$(inherited)",
449 | "$(PROJECT_DIR)/Carthage/Build/watchOS",
450 | );
451 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
452 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
453 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-watchOS";
454 | PRODUCT_NAME = RxAlamofire;
455 | SDKROOT = watchos;
456 | SKIP_INSTALL = NO;
457 | TARGETED_DEVICE_FAMILY = 4;
458 | VERSIONING_SYSTEM = "apple-generic";
459 | };
460 | name = Release;
461 | };
462 | 3CF1EEA2912CE0124C7965C1 /* Release */ = {
463 | isa = XCBuildConfiguration;
464 | buildSettings = {
465 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
466 | CODE_SIGN_IDENTITY = "";
467 | CURRENT_PROJECT_VERSION = 1;
468 | DEFINES_MODULE = YES;
469 | DYLIB_COMPATIBILITY_VERSION = 1;
470 | DYLIB_CURRENT_VERSION = 1;
471 | DYLIB_INSTALL_NAME_BASE = "@rpath";
472 | FRAMEWORK_SEARCH_PATHS = (
473 | "$(inherited)",
474 | "$(PROJECT_DIR)/Carthage/Build/tvOS",
475 | );
476 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
477 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
478 | LD_RUNPATH_SEARCH_PATHS = (
479 | "$(inherited)",
480 | "@executable_path/Frameworks",
481 | );
482 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-tvOS";
483 | PRODUCT_NAME = RxAlamofire;
484 | SDKROOT = appletvos;
485 | SKIP_INSTALL = NO;
486 | TARGETED_DEVICE_FAMILY = 3;
487 | VERSIONING_SYSTEM = "apple-generic";
488 | };
489 | name = Release;
490 | };
491 | 52AE2FBA3667D1D9A67F1020 /* Debug */ = {
492 | isa = XCBuildConfiguration;
493 | buildSettings = {
494 | ALWAYS_SEARCH_USER_PATHS = NO;
495 | CLANG_ANALYZER_NONNULL = YES;
496 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
497 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
498 | CLANG_CXX_LIBRARY = "libc++";
499 | CLANG_ENABLE_MODULES = YES;
500 | CLANG_ENABLE_OBJC_ARC = YES;
501 | CLANG_ENABLE_OBJC_WEAK = YES;
502 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
503 | CLANG_WARN_BOOL_CONVERSION = YES;
504 | CLANG_WARN_COMMA = YES;
505 | CLANG_WARN_CONSTANT_CONVERSION = YES;
506 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
507 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
508 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
509 | CLANG_WARN_EMPTY_BODY = YES;
510 | CLANG_WARN_ENUM_CONVERSION = YES;
511 | CLANG_WARN_INFINITE_RECURSION = YES;
512 | CLANG_WARN_INT_CONVERSION = YES;
513 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
514 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
515 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
516 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
517 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
518 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
519 | CLANG_WARN_STRICT_PROTOTYPES = YES;
520 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
521 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
522 | CLANG_WARN_UNREACHABLE_CODE = YES;
523 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
524 | COPY_PHASE_STRIP = NO;
525 | DEBUG_INFORMATION_FORMAT = dwarf;
526 | ENABLE_STRICT_OBJC_MSGSEND = YES;
527 | ENABLE_TESTABILITY = YES;
528 | GCC_C_LANGUAGE_STANDARD = gnu11;
529 | GCC_DYNAMIC_NO_PIC = NO;
530 | GCC_NO_COMMON_BLOCKS = YES;
531 | GCC_OPTIMIZATION_LEVEL = 0;
532 | GCC_PREPROCESSOR_DEFINITIONS = (
533 | "$(inherited)",
534 | "DEBUG=1",
535 | );
536 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
537 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
538 | GCC_WARN_UNDECLARED_SELECTOR = YES;
539 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
540 | GCC_WARN_UNUSED_FUNCTION = YES;
541 | GCC_WARN_UNUSED_VARIABLE = YES;
542 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
543 | MACOSX_DEPLOYMENT_TARGET = 10.12;
544 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
545 | MTL_FAST_MATH = YES;
546 | ONLY_ACTIVE_ARCH = YES;
547 | PRODUCT_NAME = "$(TARGET_NAME)";
548 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
549 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
550 | SWIFT_VERSION = 5.0;
551 | TVOS_DEPLOYMENT_TARGET = 10.0;
552 | WATCHOS_DEPLOYMENT_TARGET = 3.0;
553 | };
554 | name = Debug;
555 | };
556 | 5696B824894E06850090A14A /* Release */ = {
557 | isa = XCBuildConfiguration;
558 | buildSettings = {
559 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
560 | CODE_SIGN_IDENTITY = "";
561 | CURRENT_PROJECT_VERSION = 1;
562 | DEFINES_MODULE = YES;
563 | DYLIB_COMPATIBILITY_VERSION = 1;
564 | DYLIB_CURRENT_VERSION = 1;
565 | DYLIB_INSTALL_NAME_BASE = "@rpath";
566 | FRAMEWORK_SEARCH_PATHS = (
567 | "$(inherited)",
568 | "$(PROJECT_DIR)/Carthage/Build/iOS",
569 | );
570 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
571 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
572 | LD_RUNPATH_SEARCH_PATHS = (
573 | "$(inherited)",
574 | "@executable_path/Frameworks",
575 | );
576 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-iOS";
577 | PRODUCT_NAME = RxAlamofire;
578 | SDKROOT = iphoneos;
579 | SKIP_INSTALL = NO;
580 | SUPPORTS_MACCATALYST = NO;
581 | TARGETED_DEVICE_FAMILY = "1,2";
582 | VERSIONING_SYSTEM = "apple-generic";
583 | };
584 | name = Release;
585 | };
586 | 7935FE1A966F3A03CCA0B2C0 /* Release */ = {
587 | isa = XCBuildConfiguration;
588 | buildSettings = {
589 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
590 | CODE_SIGN_IDENTITY = "";
591 | COMBINE_HIDPI_IMAGES = YES;
592 | CURRENT_PROJECT_VERSION = 1;
593 | DEFINES_MODULE = YES;
594 | DYLIB_COMPATIBILITY_VERSION = 1;
595 | DYLIB_CURRENT_VERSION = 1;
596 | DYLIB_INSTALL_NAME_BASE = "@rpath";
597 | FRAMEWORK_SEARCH_PATHS = (
598 | "$(inherited)",
599 | "$(PROJECT_DIR)/Carthage/Build/Mac",
600 | );
601 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
602 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
603 | LD_RUNPATH_SEARCH_PATHS = (
604 | "$(inherited)",
605 | "@executable_path/../Frameworks",
606 | );
607 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-macOS";
608 | PRODUCT_NAME = RxAlamofire;
609 | SDKROOT = macosx;
610 | SKIP_INSTALL = NO;
611 | VERSIONING_SYSTEM = "apple-generic";
612 | };
613 | name = Release;
614 | };
615 | 8B25F905EA75E4D468B5866A /* Debug */ = {
616 | isa = XCBuildConfiguration;
617 | buildSettings = {
618 | BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
619 | CODE_SIGN_IDENTITY = "";
620 | CURRENT_PROJECT_VERSION = 1;
621 | DEFINES_MODULE = YES;
622 | DYLIB_COMPATIBILITY_VERSION = 1;
623 | DYLIB_CURRENT_VERSION = 1;
624 | DYLIB_INSTALL_NAME_BASE = "@rpath";
625 | FRAMEWORK_SEARCH_PATHS = (
626 | "$(inherited)",
627 | "$(PROJECT_DIR)/Carthage/Build/iOS",
628 | );
629 | INFOPLIST_FILE = Sources/RxAlamofire/Info.plist;
630 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
631 | LD_RUNPATH_SEARCH_PATHS = (
632 | "$(inherited)",
633 | "@executable_path/Frameworks",
634 | );
635 | PRODUCT_BUNDLE_IDENTIFIER = "RxSwiftCommunity.RxAlamofire.RxAlamofire-iOS";
636 | PRODUCT_NAME = RxAlamofire;
637 | SDKROOT = iphoneos;
638 | SKIP_INSTALL = NO;
639 | SUPPORTS_MACCATALYST = NO;
640 | TARGETED_DEVICE_FAMILY = "1,2";
641 | VERSIONING_SYSTEM = "apple-generic";
642 | };
643 | name = Debug;
644 | };
645 | 9B45762F5ACF785A959B630A /* Release */ = {
646 | isa = XCBuildConfiguration;
647 | buildSettings = {
648 | ALWAYS_SEARCH_USER_PATHS = NO;
649 | CLANG_ANALYZER_NONNULL = YES;
650 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
651 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
652 | CLANG_CXX_LIBRARY = "libc++";
653 | CLANG_ENABLE_MODULES = YES;
654 | CLANG_ENABLE_OBJC_ARC = YES;
655 | CLANG_ENABLE_OBJC_WEAK = YES;
656 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
657 | CLANG_WARN_BOOL_CONVERSION = YES;
658 | CLANG_WARN_COMMA = YES;
659 | CLANG_WARN_CONSTANT_CONVERSION = YES;
660 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
661 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
662 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
663 | CLANG_WARN_EMPTY_BODY = YES;
664 | CLANG_WARN_ENUM_CONVERSION = YES;
665 | CLANG_WARN_INFINITE_RECURSION = YES;
666 | CLANG_WARN_INT_CONVERSION = YES;
667 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
668 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
669 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
670 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
671 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
672 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
673 | CLANG_WARN_STRICT_PROTOTYPES = YES;
674 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
675 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
676 | CLANG_WARN_UNREACHABLE_CODE = YES;
677 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
678 | COPY_PHASE_STRIP = NO;
679 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
680 | ENABLE_NS_ASSERTIONS = NO;
681 | ENABLE_STRICT_OBJC_MSGSEND = YES;
682 | GCC_C_LANGUAGE_STANDARD = gnu11;
683 | GCC_NO_COMMON_BLOCKS = YES;
684 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
685 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
686 | GCC_WARN_UNDECLARED_SELECTOR = YES;
687 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
688 | GCC_WARN_UNUSED_FUNCTION = YES;
689 | GCC_WARN_UNUSED_VARIABLE = YES;
690 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
691 | MACOSX_DEPLOYMENT_TARGET = 10.12;
692 | MTL_ENABLE_DEBUG_INFO = NO;
693 | MTL_FAST_MATH = YES;
694 | PRODUCT_NAME = "$(TARGET_NAME)";
695 | SWIFT_COMPILATION_MODE = wholemodule;
696 | SWIFT_OPTIMIZATION_LEVEL = "-O";
697 | SWIFT_VERSION = 5.0;
698 | TVOS_DEPLOYMENT_TARGET = 10.0;
699 | WATCHOS_DEPLOYMENT_TARGET = 3.0;
700 | };
701 | name = Release;
702 | };
703 | /* End XCBuildConfiguration section */
704 |
705 | /* Begin XCConfigurationList section */
706 | 45BDAC6C68D85F6F26580D96 /* Build configuration list for PBXNativeTarget "RxAlamofire watchOS" */ = {
707 | isa = XCConfigurationList;
708 | buildConfigurations = (
709 | 240A13B96272DD86C40BB0A6 /* Debug */,
710 | 39072B322A71963487E93F92 /* Release */,
711 | );
712 | defaultConfigurationIsVisible = 0;
713 | defaultConfigurationName = Release;
714 | };
715 | 55B231F67223EC5BCB3275A6 /* Build configuration list for PBXNativeTarget "RxAlamofire macOS" */ = {
716 | isa = XCConfigurationList;
717 | buildConfigurations = (
718 | 3026FD9AF091FC2EF5C8A480 /* Debug */,
719 | 7935FE1A966F3A03CCA0B2C0 /* Release */,
720 | );
721 | defaultConfigurationIsVisible = 0;
722 | defaultConfigurationName = Release;
723 | };
724 | 8728AF49150E382895170A83 /* Build configuration list for PBXNativeTarget "RxAlamofire tvOS" */ = {
725 | isa = XCConfigurationList;
726 | buildConfigurations = (
727 | 09E9D5CB0C0AA8D801E7ED87 /* Debug */,
728 | 3CF1EEA2912CE0124C7965C1 /* Release */,
729 | );
730 | defaultConfigurationIsVisible = 0;
731 | defaultConfigurationName = Release;
732 | };
733 | 8AC30854BE8A7F7F123AC733 /* Build configuration list for PBXNativeTarget "RxAlamofire iOS" */ = {
734 | isa = XCConfigurationList;
735 | buildConfigurations = (
736 | 8B25F905EA75E4D468B5866A /* Debug */,
737 | 5696B824894E06850090A14A /* Release */,
738 | );
739 | defaultConfigurationIsVisible = 0;
740 | defaultConfigurationName = Release;
741 | };
742 | FE3A4B4109842298484A21D5 /* Build configuration list for PBXProject "RxAlamofire" */ = {
743 | isa = XCConfigurationList;
744 | buildConfigurations = (
745 | 52AE2FBA3667D1D9A67F1020 /* Debug */,
746 | 9B45762F5ACF785A959B630A /* Release */,
747 | );
748 | defaultConfigurationIsVisible = 0;
749 | defaultConfigurationName = Release;
750 | };
751 | /* End XCConfigurationList section */
752 | };
753 | rootObject = 26A56EE735A9C247341EBA45 /* Project object */;
754 | }
755 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/xcshareddata/xcschemes/RxAlamofire iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
38 |
39 |
40 |
41 |
42 |
43 |
53 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/xcshareddata/xcschemes/RxAlamofire macOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
38 |
39 |
40 |
41 |
42 |
43 |
53 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/xcshareddata/xcschemes/RxAlamofire tvOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
38 |
39 |
40 |
41 |
42 |
43 |
53 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/RxAlamofire.xcodeproj/xcshareddata/xcschemes/RxAlamofire watchOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
53 |
59 |
60 |
61 |
62 |
68 |
70 |
76 |
77 |
78 |
79 |
81 |
82 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/Sources/RxAlamofire/Cocoa/URLSession+RxAlamofire.swift:
--------------------------------------------------------------------------------
1 | #if os(iOS) || os(tvOS) || os(macOS) || os(watchOS)
2 | import Foundation
3 |
4 | import Alamofire
5 | import RxCocoa
6 | import RxSwift
7 |
8 | // MARK: NSURLSession extensions
9 |
10 | public extension Reactive where Base: URLSession {
11 | /**
12 | Creates an observable returning a decoded JSON object as `AnyObject`.
13 |
14 | - parameter method: Alamofire method object
15 | - parameter url: An object adopting `URLConvertible`
16 | - parameter parameters: A dictionary containing all necessary options
17 | - parameter encoding: The kind of encoding used to process parameters
18 | - parameter header: A dictionary containing all the additional headers
19 |
20 | - returns: An observable of a decoded JSON object as `AnyObject`
21 | */
22 | func json(_ method: Alamofire.HTTPMethod,
23 | _ url: URLConvertible,
24 | parameters: [String: Any]? = nil,
25 | encoding: ParameterEncoding = URLEncoding.default,
26 | headers: HTTPHeaders? = nil) -> Observable {
27 | do {
28 | let request = try urlRequest(method,
29 | url,
30 | parameters: parameters,
31 | encoding: encoding,
32 | headers: headers)
33 | return json(request: request)
34 | } catch {
35 | return Observable.error(error)
36 | }
37 | }
38 |
39 | /**
40 | Creates an observable returning a tuple of `(NSData!, NSURLResponse)`.
41 |
42 | - parameter method: Alamofire method object
43 | - parameter url: An object adopting `URLConvertible`
44 | - parameter parameters: A dictionary containing all necessary options
45 | - parameter encoding: The kind of encoding used to process parameters
46 | - parameter header: A dictionary containing all the additional headers
47 |
48 | - returns: An observable of a tuple containing data and the request
49 | */
50 | func response(method: Alamofire.HTTPMethod,
51 | _ url: URLConvertible,
52 | parameters: [String: Any]? = nil,
53 | encoding: ParameterEncoding = URLEncoding.default,
54 | headers: HTTPHeaders? = nil) -> Observable<(response: HTTPURLResponse, data: Data)> {
55 | do {
56 | let request = try urlRequest(method,
57 | url,
58 | parameters: parameters,
59 | encoding: encoding,
60 | headers: headers)
61 | return response(request: request)
62 | } catch {
63 | return Observable.error(error)
64 | }
65 | }
66 |
67 | /**
68 | Creates an observable of response's content as `NSData`.
69 |
70 | - parameter method: Alamofire method object
71 | - parameter url: An object adopting `URLConvertible`
72 | - parameter parameters: A dictionary containing all necessary options
73 | - parameter encoding: The kind of encoding used to process parameters
74 | - parameter header: A dictionary containing all the additional headers
75 |
76 | - returns: An observable of a data
77 | */
78 | func data(_ method: Alamofire.HTTPMethod,
79 | _ url: URLConvertible,
80 | parameters: [String: AnyObject]? = nil,
81 | encoding: ParameterEncoding = URLEncoding.default,
82 | headers: HTTPHeaders? = nil) -> Observable {
83 | do {
84 | let request = try urlRequest(method,
85 | url,
86 | parameters: parameters,
87 | encoding: encoding,
88 | headers: headers)
89 | return data(request: request)
90 | } catch {
91 | return Observable.error(error)
92 | }
93 | }
94 | }
95 | #endif
96 |
--------------------------------------------------------------------------------
/Sources/RxAlamofire/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Tests/LinuxMain.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 |
3 | import RxAlamofireTests
4 |
5 | var tests = [XCTestCaseEntry]()
6 | tests += RxAlamofireTests.__allTests()
7 |
8 | XCTMain(tests)
9 |
--------------------------------------------------------------------------------
/Tests/RxAlamofireTests/RxAlamofireTests.swift:
--------------------------------------------------------------------------------
1 | import Alamofire
2 | import OHHTTPStubs
3 | import RxAlamofire
4 | import RxBlocking
5 | import RxCocoa
6 | import RxSwift
7 | import XCTest
8 |
9 | private enum Dummy {
10 | static let DataStringContent = "Hello World"
11 | static let DataStringData = DataStringContent.data(using: String.Encoding.utf8)!
12 | static let DataJSONContent = "{\"hello\":\"world\", \"foo\":\"bar\", \"zero\": 0}"
13 | static let DataJSON = DataJSONContent.data(using: String.Encoding.utf8)!
14 | static let GithubURL = "http://github.com/RxSwiftCommunity"
15 |
16 | struct DecodableJSON: Decodable {
17 | let hello: String
18 | let foo: String
19 | let zero: Int
20 | }
21 | }
22 |
23 | class RxAlamofireSpec: XCTestCase {
24 | private func isHost(_ host: String) -> HTTPStubsTestBlock {
25 | return { req in req.url?.host == host }
26 | }
27 |
28 | var manager: Session!
29 |
30 | let testError = NSError(domain: "RxAlamofire Test Error", code: -1, userInfo: nil)
31 | let disposeBag = DisposeBag()
32 |
33 | // MARK: Configuration
34 | override func setUp() {
35 | super.setUp()
36 | manager = Session()
37 |
38 | _ = HTTPStubs.stubRequests(passingTest: isHost("mywebservice.com"), withStubResponse: { _ in
39 | HTTPStubsResponse(data: Dummy.DataStringData, statusCode: 200, headers: nil)
40 | })
41 |
42 | _ = HTTPStubs.stubRequests(passingTest: isHost("myjsondata.com"), withStubResponse: { _ in
43 | HTTPStubsResponse(data: Dummy.DataJSON, statusCode: 200, headers: ["Content-Type": "application/json"])
44 | })
45 |
46 | _ = HTTPStubs.stubRequests(passingTest: isHost("interceptor.com"), withStubResponse: { request in
47 | guard request.url?.path != "/retry" else {
48 | return HTTPStubsResponse(data: Dummy.DataJSON, statusCode: 401, headers: ["Content-Type": "application/json"])
49 | }
50 |
51 | return HTTPStubsResponse(data: Dummy.DataJSON, statusCode: 200, headers: ["Content-Type": "application/json"])
52 | })
53 | }
54 |
55 | override func tearDown() {
56 | super.tearDown()
57 | HTTPStubs.removeAllStubs()
58 | }
59 |
60 | // MARK: Tests
61 | func testBasicRequest() {
62 | do {
63 | let result = try requestResponse(HTTPMethod.get, "http://mywebservice.com").toBlocking().first()!
64 | XCTAssertEqual(result.statusCode, 200)
65 | } catch {
66 | XCTFail("\(error)")
67 | }
68 | }
69 |
70 | func testStringRequest() {
71 | do {
72 | let (result, string) = try requestString(HTTPMethod.get, "http://mywebservice.com").toBlocking().first()!
73 | XCTAssertEqual(result.statusCode, 200)
74 | XCTAssertEqual(string, Dummy.DataStringContent)
75 | } catch {
76 | XCTFail("\(error)")
77 | }
78 | }
79 |
80 | func testJSONRequest() {
81 | do {
82 | guard let (result, obj) = try requestJSON(HTTPMethod.get, "http://myjsondata.com").toBlocking().first(),
83 | let json = obj as? [String: Any],
84 | let res = json["hello"] as? String
85 | else {
86 | XCTFail("errored out")
87 | return
88 | }
89 | XCTAssertEqual(result.statusCode, 200)
90 | XCTAssertEqual(res, "world")
91 | } catch {
92 | XCTFail("\(error)")
93 | }
94 | }
95 |
96 | // TODO: In Alamofire 5 progress became immutable. Test logic should be completely changed.
97 | // func testProgress() {
98 | // do {
99 | // let dataRequest = try request(HTTPMethod.get, "http://myjsondata.com").toBlocking().first()!
100 | // let progressObservable = dataRequest.rx.progress().share(replay: 100, scope: .forever)
101 | // let _ = progressObservable.subscribe { }
102 | // let delegate = dataRequest.delegate as! DataTaskDelegate
103 | // let progressHandler = delegate.progressHandler!
104 | // [(1000, 4000), (4000, 4000)].forEach { completed, total in
105 | // let progress = Alamofire.Progress()
106 | // progress.completedUnitCount = Int64(completed)
107 | // progress.totalUnitCount = Int64(total)
108 | // progressHandler.closure(progress)
109 | // }
110 | // let actualEvents = try progressObservable.toBlocking().toArray()
111 | // let expectedEvents = [
112 | // RxProgress(bytesWritten: 0, totalBytes: 0),
113 | // RxProgress(bytesWritten: 1000, totalBytes: 4000),
114 | // RxProgress(bytesWritten: 4000, totalBytes: 4000),
115 | // ]
116 | // XCTAssertEqual(actualEvents.count, expectedEvents.count)
117 | // for i in 0..) -> Void) {
273 | if hasRetried {
274 | var request = URLRequest(url: URL(string: "http://interceptor.com")!)
275 | request.method = urlRequest.method
276 | request.headers = urlRequest.headers
277 | completion(.success(request))
278 | } else {
279 | completion(.success(urlRequest))
280 | }
281 |
282 | adapt += 1
283 | }
284 |
285 | func retry(_ request: Request, for session: Session, dueTo error: Error, completion: @escaping (RetryResult) -> Void) {
286 | completion(hasRetried ? .doNotRetry : .retry)
287 | hasRetried = true
288 | retry += 1
289 | }
290 | }
291 |
--------------------------------------------------------------------------------
/Tests/RxAlamofireTests/XCTestManifests.swift:
--------------------------------------------------------------------------------
1 | #if !canImport(ObjectiveC)
2 | import XCTest
3 |
4 | extension RxAlamofireSpec {
5 | // DO NOT MODIFY: This is autogenerated, use:
6 | // `swift test --generate-linuxmain`
7 | // to regenerate.
8 | static let __allTests__RxAlamofireSpec = [
9 | ("testBasicRequest", testBasicRequest),
10 | ("testDecodable", testDecodable),
11 | ("testDownloadResponse", testDownloadResponse),
12 | ("testDownloadResponseSerialized", testDownloadResponseSerialized),
13 | ("testInterceptorAdapt", testInterceptorAdapt),
14 | ("testInterceptorRetry", testInterceptorRetry),
15 | ("testJSONRequest", testJSONRequest),
16 | ("testRequestDecodable", testRequestDecodable),
17 | ("testRequestDecodableURLRequest", testRequestDecodableURLRequest),
18 | ("testRxProgress", testRxProgress),
19 | ("testStringRequest", testStringRequest)
20 | ]
21 | }
22 |
23 | public func __allTests() -> [XCTestCaseEntry] {
24 | return [
25 | testCase(RxAlamofireSpec.__allTests__RxAlamofireSpec)
26 | ]
27 | }
28 | #endif
29 |
--------------------------------------------------------------------------------
/cleanup.sh:
--------------------------------------------------------------------------------
1 | if which swiftformat >/dev/null; then
2 | `which swiftformat` "Sources" --config .swiftformat --quiet
3 | `which swiftformat` "Tests" --config .swiftformat --quiet
4 | `which swiftformat` "Examples/RxAlamofireDemo-tvOS" --config .swiftformat --quiet
5 | `which swiftformat` "Examples/RxAlamofireDemo-iOS" --config .swiftformat --quiet
6 | `which swiftformat` "Package.swift" --config .swiftformat --quiet
7 | else
8 | echo "error: swiftformat not installed, do `sh setup.sh` to install swiftformat."
9 | exit 1
10 | fi
11 |
12 | if which swiftlint >/dev/null; then
13 | `which swiftlint` autocorrect --quiet
14 | else
15 | echo "error: SwiftLint not installed, do `sh setup.sh` to install SwiftLint."
16 | exit 1
17 | fi
18 |
19 | if which xcodegen >/dev/null; then
20 | `which xcodegen` --spec project-carthage.yml
21 | else
22 | echo "error: XcodeGen not installed, do `sh setup.sh` to install XcodeGen."
23 | exit 1
24 | fi
--------------------------------------------------------------------------------
/pods.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eo pipefail
3 | export RELEASE_VERSION="$(git describe --abbrev=0 | tr -d '\n')"
4 | RELEASE_VERSION=${RELEASE_VERSION:1}
5 | pod lib lint --allow-warnings
6 | pod trunk push --allow-warnings
--------------------------------------------------------------------------------
/project-carthage.yml:
--------------------------------------------------------------------------------
1 | name: RxAlamofire
2 | options:
3 | minimumXcodeGenVersion: "2.15.1"
4 | developmentLanguage: en
5 | usesTabs: false
6 | indentWidth: 2
7 | tabWidth: 2
8 | xcodeVersion: "1140"
9 | deploymentTarget:
10 | iOS: "10.0"
11 | macOS: "10.12"
12 | tvOS: "10.0"
13 | watchOS: "3.0"
14 | carthageExecutablePath: "`which carthage`"
15 | defaultConfig: "Release"
16 | configs:
17 | Debug: debug
18 | Release: release
19 | attributes:
20 | ORGANIZATIONNAME: RxSwiftCommunity
21 | schemes:
22 | RxAlamofire iOS:
23 | scheme: {}
24 | build:
25 | parallelizeBuild: true
26 | buildImplicitDependencies: true
27 | targets:
28 | RxAlamofire iOS: all
29 | run:
30 | config: Debug
31 | test:
32 | config: Debug
33 | gatherCoverageData: true
34 | profile:
35 | config: Release
36 | analyze:
37 | config: Debug
38 | archive:
39 | config: Release
40 | revealArchiveInOrganizer: true
41 | RxAlamofire macOS:
42 | scheme: {}
43 | build:
44 | parallelizeBuild: true
45 | buildImplicitDependencies: true
46 | targets:
47 | RxAlamofire macOS: all
48 | run:
49 | config: Debug
50 | test:
51 | config: Debug
52 | gatherCoverageData: true
53 | profile:
54 | config: Release
55 | analyze:
56 | config: Debug
57 | archive:
58 | config: Release
59 | revealArchiveInOrganizer: true
60 | RxAlamofire watchOS:
61 | scheme: {}
62 | build:
63 | parallelizeBuild: true
64 | buildImplicitDependencies: true
65 | targets:
66 | RxAlamofire watchOS: all
67 | run:
68 | config: Debug
69 | profile:
70 | config: Release
71 | analyze:
72 | config: Debug
73 | archive:
74 | config: Release
75 | revealArchiveInOrganizer: true
76 | RxAlamofire tvOS:
77 | scheme: {}
78 | build:
79 | parallelizeBuild: true
80 | buildImplicitDependencies: true
81 | targets:
82 | RxAlamofire tvOS: all
83 | run:
84 | config: Debug
85 | test:
86 | config: Debug
87 | gatherCoverageData: true
88 | profile:
89 | config: Release
90 | analyze:
91 | config: Debug
92 | archive:
93 | config: Release
94 | revealArchiveInOrganizer: true
95 | targets:
96 | RxAlamofire iOS:
97 | settings:
98 | PRODUCT_NAME: RxAlamofire
99 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-iOS
100 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
101 | SKIP_INSTALL: NO
102 | SUPPORTS_MACCATALYST: NO
103 | platform: iOS
104 | type: framework
105 | sources:
106 | - Sources/RxAlamofire
107 | dependencies:
108 | - carthage: Alamofire
109 | - carthage: RxSwift
110 | - carthage: RxCocoa
111 | - carthage: RxRelay
112 | RxAlamofire macOS:
113 | settings:
114 | PRODUCT_NAME: RxAlamofire
115 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-macOS
116 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
117 | SKIP_INSTALL: NO
118 | platform: macOS
119 | type: framework
120 | sources:
121 | - Sources/RxAlamofire
122 | dependencies:
123 | - carthage: Alamofire
124 | - carthage: RxSwift
125 | - carthage: RxCocoa
126 | - carthage: RxRelay
127 | RxAlamofire tvOS:
128 | settings:
129 | PRODUCT_NAME: RxAlamofire
130 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-tvOS
131 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
132 | SKIP_INSTALL: NO
133 | platform: tvOS
134 | type: framework
135 | sources:
136 | - Sources/RxAlamofire
137 | dependencies:
138 | - carthage: Alamofire
139 | - carthage: RxSwift
140 | - carthage: RxCocoa
141 | - carthage: RxRelay
142 | RxAlamofire watchOS:
143 | settings:
144 | PRODUCT_NAME: RxAlamofire
145 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-watchOS
146 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
147 | SKIP_INSTALL: NO
148 | platform: watchOS
149 | type: framework
150 | sources:
151 | - Sources/RxAlamofire
152 | dependencies:
153 | - carthage: Alamofire
154 | - carthage: RxSwift
155 | - carthage: RxCocoa
156 | - carthage: RxRelay
157 |
--------------------------------------------------------------------------------
/project-spm.yml:
--------------------------------------------------------------------------------
1 | name: RxAlamofire-SPM
2 | options:
3 | minimumXcodeGenVersion: "2.15.1"
4 | developmentLanguage: en
5 | usesTabs: false
6 | indentWidth: 2
7 | tabWidth: 2
8 | xcodeVersion: "1140"
9 | deploymentTarget:
10 | iOS: "10.0"
11 | macOS: "10.12"
12 | tvOS: "10.0"
13 | watchOS: "3.0"
14 | carthageExecutablePath: "`which carthage`"
15 | defaultConfig: "Release"
16 | configs:
17 | Debug: debug
18 | Release: release
19 | attributes:
20 | ORGANIZATIONNAME: RxSwiftCommunity
21 | schemes:
22 | RxAlamofire iOS:
23 | scheme: {}
24 | build:
25 | parallelizeBuild: true
26 | buildImplicitDependencies: true
27 | targets:
28 | RxAlamofire iOS: all
29 | run:
30 | config: Debug
31 | test:
32 | config: Debug
33 | gatherCoverageData: true
34 | profile:
35 | config: Release
36 | analyze:
37 | config: Debug
38 | archive:
39 | config: Release
40 | revealArchiveInOrganizer: true
41 | RxAlamofire macOS:
42 | scheme: {}
43 | build:
44 | parallelizeBuild: true
45 | buildImplicitDependencies: true
46 | targets:
47 | RxAlamofire macOS: all
48 | run:
49 | config: Debug
50 | test:
51 | config: Debug
52 | gatherCoverageData: true
53 | profile:
54 | config: Release
55 | analyze:
56 | config: Debug
57 | archive:
58 | config: Release
59 | revealArchiveInOrganizer: true
60 | RxAlamofire watchOS:
61 | scheme: {}
62 | build:
63 | parallelizeBuild: true
64 | buildImplicitDependencies: true
65 | targets:
66 | RxAlamofire watchOS: all
67 | run:
68 | config: Debug
69 | profile:
70 | config: Release
71 | analyze:
72 | config: Debug
73 | archive:
74 | config: Release
75 | revealArchiveInOrganizer: true
76 | RxAlamofire tvOS:
77 | scheme: {}
78 | build:
79 | parallelizeBuild: true
80 | buildImplicitDependencies: true
81 | targets:
82 | RxAlamofire tvOS: all
83 | run:
84 | config: Debug
85 | test:
86 | config: Debug
87 | gatherCoverageData: true
88 | profile:
89 | config: Release
90 | analyze:
91 | config: Debug
92 | archive:
93 | config: Release
94 | revealArchiveInOrganizer: true
95 | packages:
96 | RxSwift:
97 | url: https://github.com/ReactiveX/RxSwift.git
98 | from: 6.0.0
99 | Alamofire:
100 | url: https://github.com/Alamofire/Alamofire.git
101 | from: 5.4.1
102 | targets:
103 | RxAlamofire iOS:
104 | settings:
105 | PRODUCT_NAME: RxAlamofire
106 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-iOS
107 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
108 | SKIP_INSTALL: NO
109 | SUPPORTS_MACCATALYST: NO
110 | platform: iOS
111 | type: framework
112 | sources:
113 | - Sources/RxAlamofire
114 | dependencies:
115 | - package: Alamofire
116 | - package: RxSwift
117 | product: RxSwift
118 | - package: RxSwift
119 | product: RxCocoa
120 | - package: RxSwift
121 | product: RxRelay
122 | RxAlamofire macOS:
123 | settings:
124 | PRODUCT_NAME: RxAlamofire
125 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-macOS
126 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
127 | SKIP_INSTALL: NO
128 | platform: macOS
129 | type: framework
130 | sources:
131 | - Sources/RxAlamofire
132 | dependencies:
133 | - package: Alamofire
134 | - package: RxSwift
135 | product: RxSwift
136 | - package: RxSwift
137 | product: RxCocoa
138 | - package: RxSwift
139 | product: RxRelay
140 | RxAlamofire tvOS:
141 | settings:
142 | PRODUCT_NAME: RxAlamofire
143 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-tvOS
144 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
145 | SKIP_INSTALL: NO
146 | platform: tvOS
147 | type: framework
148 | sources:
149 | - Sources/RxAlamofire
150 | dependencies:
151 | - package: Alamofire
152 | - package: RxSwift
153 | product: RxSwift
154 | - package: RxSwift
155 | product: RxCocoa
156 | - package: RxSwift
157 | product: RxRelay
158 | RxAlamofire watchOS:
159 | settings:
160 | PRODUCT_NAME: RxAlamofire
161 | PRODUCT_BUNDLE_IDENTIFIER: RxSwiftCommunity.RxAlamofire.RxAlamofire-watchOS
162 | BUILD_LIBRARY_FOR_DISTRIBUTION: YES
163 | SKIP_INSTALL: NO
164 | platform: watchOS
165 | type: framework
166 | sources:
167 | - Sources/RxAlamofire
168 | dependencies:
169 | - package: Alamofire
170 | - package: RxSwift
171 | product: RxSwift
172 | - package: RxSwift
173 | product: RxCocoa
174 | - package: RxSwift
175 | product: RxRelay
176 |
--------------------------------------------------------------------------------
/scripts/bump-version.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 | git config --global user.name "RxAlamofire Maintainers"
5 | git config --global user.email "rxalamofire@rxswift.org"
6 | npx standard-version
7 | echo "RELEASE_VERSION=$(git describe --abbrev=0 | tr -d '\n')" >> $GITHUB_ENV
8 | export VERSION="$(git describe --abbrev=0 | tr -d '\n')"
9 | VERSION=${VERSION:1}
10 | echo $VERSION
11 | npx podspec-bump -w -i "$VERSION"
12 | git add -A
13 | git commit --amend --no-edit
--------------------------------------------------------------------------------
/scripts/carthage.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # carthage.sh
4 | # Usage example: ./carthage.sh build --platform iOS
5 |
6 | set -euo pipefail
7 |
8 | xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX)
9 | trap 'rm -f "$xcconfig"' INT TERM HUP EXIT
10 |
11 | # For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise
12 | # the build will fail on lipo due to duplicate architectures.
13 |
14 | CURRENT_XCODE_VERSION=$(xcodebuild -version | grep "Build version" | cut -d' ' -f3)
15 | echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$CURRENT_XCODE_VERSION = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig
16 |
17 | echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$(XCODE_PRODUCT_BUILD_VERSION))' >> $xcconfig
18 | echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig
19 |
20 | export XCODE_XCCONFIG_FILE="$xcconfig"
21 | carthage build "$@"
--------------------------------------------------------------------------------
/scripts/xcframeworks.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 | rm -rf RxAlamofire-SPM.xcodeproj
5 | rm -rf xcarchives/*
6 | rm -rf RxAlamofire.xcframework.zip
7 | rm -rf RxAlamofire.xcframework
8 |
9 | brew bundle
10 |
11 | xcodegen --spec project-spm.yml
12 |
13 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire iOS" -destination "generic/platform=iOS" -archivePath "xcarchives/RxAlamofire-iOS" SKIP_INSTALL=NO SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
14 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire iOS" -destination "generic/platform=iOS Simulator" -archivePath "xcarchives/RxAlamofire-iOS-Simulator" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
15 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire tvOS" -destination "generic/platform=tvOS" -archivePath "xcarchives/RxAlamofire-tvOS" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
16 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire tvOS" -destination "generic/platform=tvOS Simulator" -archivePath "xcarchives/RxAlamofire-tvOS-Simulator" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
17 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire macOS" -destination "generic/platform=macOS" -archivePath "xcarchives/RxAlamofire-macOS" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
18 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire watchOS" -destination "generic/platform=watchOS" -archivePath "xcarchives/RxAlamofire-watchOS" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
19 | xcodebuild archive -quiet -project RxAlamofire-SPM.xcodeproj -configuration Release -scheme "RxAlamofire watchOS" -destination "generic/platform=watchOS Simulator" -archivePath "xcarchives/RxAlamofire-watchOS-Simulator" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE="bitcode" ENABLE_BITCODE=YES | xcpretty --color --simple
20 |
21 | xcodebuild -create-xcframework \
22 | -framework "xcarchives/RxAlamofire-iOS-Simulator.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
23 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-iOS-Simulator.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
24 | -framework "xcarchives/RxAlamofire-iOS.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
25 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-iOS.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
26 | -framework "xcarchives/RxAlamofire-tvOS-Simulator.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
27 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-tvOS-Simulator.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
28 | -framework "xcarchives/RxAlamofire-tvOS.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
29 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-tvOS.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
30 | -framework "xcarchives/RxAlamofire-macOS.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
31 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-macOS.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
32 | -framework "xcarchives/RxAlamofire-watchOS-Simulator.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
33 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-watchOS-Simulator.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
34 | -framework "xcarchives/RxAlamofire-watchOS.xcarchive/Products/Library/Frameworks/RxAlamofire.framework" \
35 | -debug-symbols ""$(pwd)"/xcarchives/RxAlamofire-watchOS.xcarchive/dSYMs/RxAlamofire.framework.dSYM" \
36 | -output "RxAlamofire.xcframework"
37 |
38 | zip -r RxAlamofire.xcframework.zip RxAlamofire.xcframework
39 | rm -rf xcarchives/*
40 | rm -rf RxAlamofire.xcframework
41 | rm -rf RxAlamofire-SPM.xcodeproj
42 |
--------------------------------------------------------------------------------