-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'develop' of https://github.com/TeamNADA/NADA-iOS-ForRel…
- Loading branch information
Showing
16 changed files
with
616 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// | ||
// calculateTime.swift | ||
// NADA-iOS-forRelease | ||
// | ||
// Created by Yi Joon Choi on 2023/03/14. | ||
// | ||
|
||
import Foundation | ||
|
||
func calculateTime(sec: Int) -> String { | ||
let hour = sec / 3600 | ||
let minute = (sec % 3600) / 60 | ||
let second = (sec % 3600) % 60 | ||
return "\(String(format: "%02d", hour)):\(String(format: "%02d", minute)):\(String(format: "%02d", second))" | ||
} | ||
|
||
func calculateMinuteTime(sec: Int) -> String { | ||
let minute = (sec % 3600) / 60 | ||
let second = (sec % 3600) % 60 | ||
return "\(String(format: "%02d", minute)):\(String(format: "%02d", second))" | ||
} | ||
|
||
func calculateMinuteTimeToInt(time: String) -> Int { | ||
let components = time.split { $0 == ":" } .map { (x) -> Int in return Int(String(x))! } | ||
|
||
let minutes = components[0] | ||
let seconds = components[1] | ||
let secondsCaculated = minutes*60 + seconds | ||
return secondsCaculated | ||
} | ||
|
||
extension Date { | ||
|
||
static func - (recent: Date, previous: Date) -> (month: Int?, day: Int?, hour: Int?, minute: Int?, second: Int?) { | ||
let day = Calendar.current.dateComponents([.day], from: previous, to: recent).day | ||
let month = Calendar.current.dateComponents([.month], from: previous, to: recent).month | ||
let hour = Calendar.current.dateComponents([.hour], from: previous, to: recent).hour | ||
let minute = Calendar.current.dateComponents([.minute], from: previous, to: recent).minute | ||
let second = Calendar.current.dateComponents([.second], from: previous, to: recent).second | ||
|
||
return (month: month, day: day, hour: hour, minute: minute, second: second) | ||
} | ||
|
||
} | ||
|
||
extension String { | ||
func toDate() -> Date? { // "yyyy-MM-dd HH:mm:ss" | ||
let dateFormatter = DateFormatter() | ||
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" | ||
dateFormatter.timeZone = TimeZone(identifier: "UTC") | ||
if let date = dateFormatter.date(from: self) { | ||
return date | ||
} else { | ||
return nil | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
NADA-iOS-forRelease/Sources/NetworkModel/AroundMe/NearByRequest.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// | ||
// NearByRequest.swift | ||
// NADA-iOS-forRelease | ||
// | ||
// Created by Yi Joon Choi on 2023/05/02. | ||
// | ||
|
||
import Foundation | ||
|
||
// MARK: - NearByRequest | ||
struct NearByRequest: Codable { | ||
let cardUUID: String | ||
let isActive: Bool | ||
let latitude, longitude: Double | ||
|
||
enum CodingKeys: String, CodingKey { | ||
case cardUUID = "cardUuid" | ||
case isActive, latitude, longitude | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
NADA-iOS-forRelease/Sources/NetworkModel/AroundMe/NearByUUIDResponse.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
// | ||
// NearByUUIDResponse.swift | ||
// NADA-iOS-forRelease | ||
// | ||
// Created by Yi Joon Choi on 2023/05/02. | ||
// | ||
|
||
import Foundation | ||
|
||
// MARK: - NearByUUIDResponse | ||
struct NearByUUIDResponse: Codable { | ||
let activeTime, inactiveTime: String | ||
let isActive: Bool | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
80 changes: 80 additions & 0 deletions
80
NADA-iOS-forRelease/Sources/NetworkService/Nearby/NearbyAPI.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
// | ||
// NearbyAPI.swift | ||
// NADA-iOS-forRelease | ||
// | ||
// Created by Yi Joon Choi on 2023/04/24. | ||
// | ||
|
||
import Foundation | ||
import Moya | ||
|
||
public final class NearbyAPI { | ||
static let shared = NearbyAPI() | ||
private var nearbyProvider = MoyaProvider<NearbyService>(plugins: [MoyaLoggerPlugin()]) | ||
|
||
private init() { } | ||
|
||
func cardNearByFetch(longitde: Double, latitude: Double, completion: @escaping(NetworkResult<Any>) -> Void) { | ||
nearbyProvider.request(.cardNearByFetch(longitude: longitde, latitude: latitude)) { result in | ||
switch result { | ||
case .success(let response): | ||
let statusCode = response.statusCode | ||
let data = response.data | ||
|
||
let networkResult = self.judgeStatus(by: statusCode, data: data, type: [AroundMeResponse].self) | ||
completion(networkResult) | ||
case .failure(let err): | ||
print(err) | ||
} | ||
} | ||
} | ||
|
||
func postNearByCard(nearByRequest: NearByRequest, completion: @escaping(NetworkResult<Any>) -> Void) { | ||
nearbyProvider.request(.postNearByCard(nearByRequest: nearByRequest)) { result in | ||
switch result { | ||
case .success(let response): | ||
let statusCode = response.statusCode | ||
let data = response.data | ||
|
||
let networkResult = self.judgeStatus(by: statusCode, data: data, type: String.self) | ||
completion(networkResult) | ||
case .failure(let err): | ||
print(err) | ||
} | ||
} | ||
} | ||
|
||
func nearByUUIDFetch(cardUUID: String, completion: @escaping(NetworkResult<Any>) -> Void) { | ||
nearbyProvider.request(.nearByUUIDFetch(cardUUID: cardUUID)) { result in | ||
switch result { | ||
case .success(let response): | ||
let statusCode = response.statusCode | ||
let data = response.data | ||
|
||
let networkResult = self.judgeStatus(by: statusCode, data: data, type: NearByUUIDResponse.self) | ||
completion(networkResult) | ||
case .failure(let err): | ||
print(err) | ||
} | ||
} | ||
} | ||
|
||
// MARK: - judgeStatus methods | ||
|
||
private func judgeStatus<T: Codable>(by statusCode: Int, data: Data, type: T.Type) -> NetworkResult<Any> { | ||
let decoder = JSONDecoder() | ||
guard let decodedData = try? decoder.decode(GenericResponse<T>.self, from: data) | ||
else { return .pathErr } | ||
|
||
switch statusCode { | ||
case 200: | ||
return .success(decodedData.data ?? "None-Data") | ||
case 400..<500: | ||
return .requestErr(decodedData.message ?? "error message") | ||
case 500: | ||
return .serverErr | ||
default: | ||
return .networkFail | ||
} | ||
} | ||
} |
Oops, something went wrong.