Contents

roy-wonji/asyncurlsession

๐Ÿ’๐Ÿปโ€โ™‚๏ธ iOS15+ ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.<br>

์žฅ์ 

โœ… AsyncURLSession ์‚ฌ์šฉํ•˜๋ฉด, ๋„คํŠธ์›Œํ‚น ์ฝ”๋“œ๋ฅผ ์ข€๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์‚ฌ์šฉ ํ• ์ˆ˜ ์žˆ์–ด์š”!

๊ธฐ๋ฐ˜

์ด ํ”„๋กœ์ ํŠธ๋Š” URLSession์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.<br> ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”

Swift Package Manager(SPM) ์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/Roy-wonji/AsyncURLSession.git", from: "1.0.2")
    ],
    ...
)
import AsyncURLSession

async/await๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๊ตฌํ˜„ Service ๋ถ€๋ถ„

import AsyncURLSession

protocol BaseTargetType : TargetType { }

extension BaseTargetType {
    public var baseURL: URL {
        return URL(string: BaseAPI.baseURL.apiDesc)!
    }
    
    public var headers: [String : String]? {
        return APIHeader.baseHeader
    }
    
}
import AsyncURLSession

public enum TrackService {
    case trackEvent(event: Event)
}

extension TrackService : BaseTargetType {
    public var path: String {
        switch self {
        case .trackEvent:
            return TrackAPI.trackEvent.desc
        }
    }
    
    public var method: AsyncURLSession.HTTPMethod {
        switch self {
        case .trackEvent:
            return .post
        }
    }
    
    public var task: AsyncURLSession.NetworkTask {
        switch self {
        case .trackEvent(let event):
            return .requestParameters(parameters: event.toDictionary(), encoding: .json)
        }
    }
}

requestAsync ์‚ฌ์šฉ ๋ถ€๋ถ„

let provider = AsyncProvider<GitHub>()

 func getDate() async throws -> CurrentDate? {
    return try await provider.request(.getDate)
}

Log Use

๋กœ๊ทธ ๊ด€๋ จ ์‚ฌ์šฉ์€ LogMacro ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ  ํ•ด์ฃผ์„ธ์š”. <br>

Auther

์„œ์›์ง€(Roy) suhwj81@gmail.com

ํ•จ๊ป˜ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€์š”

๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ์—ด๋ ค์žˆ์Šต๋‹ˆ๋‹ค.<br> PullRequest๋ฅผ ํ†ตํ•ด ๊ธฐ์—ฌํ•ด์ฃผ์„ธ์š”. ๐Ÿ™

License

AsyncMoya ๋Š” MIT ๋ผ์ด์„ ์Šค๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ผ์ด์„ ์Šค ํŒŒ์ผ์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”.<br> AsyncMoya is available under the MIT license. See the LICENSE file for more info.

Package Metadata

Repository: roy-wonji/asyncurlsession

Default branch: main

README: README.md