Skip to content

Commit 0bdcbe6

Browse files
authored
Merge pull request #11 from adborbas/adborbas/outputsize_param
Add outputsize param to daily adjusted timeseries
2 parents 4cf461e + 564d75f commit 0bdcbe6

File tree

6 files changed

+27
-6
lines changed

6 files changed

+27
-6
lines changed

Sources/AlphaSwiftage/Private/AlphaVantageAPI/AlphaVantageAPI.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ enum AlphaVantageAPI {
1414
case fromCurrency = "from_currency"
1515
case toCurrency = "to_currency"
1616
case keywords
17+
case outputSize = "outputsize"
1718
}
1819
}

Sources/AlphaSwiftage/Private/AlphaVantageAPI/AlphaVantageRequestBuilder.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ class AlphaVantageRequestBuilder {
3030
return request(for: parameters)
3131
}
3232

33-
func requestForDailyAdjustedTimeSeries(symbol: String) -> AlphaVantageRequest {
33+
func requestForDailyAdjustedTimeSeries(symbol: String, outputSize: OutputSize) -> AlphaVantageRequest {
3434
var parameters = Parameters()
3535
parameters.appendFunction(.dailyAdjustedTimeSeries)
3636
parameters.appendParameter(.symbol, value: symbol)
37+
parameters.appendParameter(.outputSize, value: outputSize.parameterValue)
3738
return request(for: parameters)
3839
}
3940

@@ -52,6 +53,7 @@ class AlphaVantageRequestBuilder {
5253
case fromCurrency = "from_currency"
5354
case toCurrency = "to_currency"
5455
case keywords
56+
case outputSize = "outputsize"
5557
}
5658
}
5759

@@ -70,3 +72,12 @@ fileprivate extension Parameters {
7072
}
7173
}
7274
}
75+
76+
fileprivate extension OutputSize {
77+
var parameterValue: String {
78+
switch self {
79+
case .compact: return "compact"
80+
case .full: return "full"
81+
}
82+
}
83+
}

Sources/AlphaSwiftage/Public/AlphaVantageService.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,15 @@ public class AlphaVantageService {
3838
.serializingAlphaVantageWrappedResponse(SearchSymbolResponse.self) { $0.matches }
3939
}
4040

41-
public func dailyAdjustedTimeSeries(for symbol: String) async -> Result<[String: EquityDailyData], AlphaVantageError> {
42-
let request = requestBuilder.requestForDailyAdjustedTimeSeries(symbol: symbol)
41+
public func dailyAdjustedTimeSeries(for symbol: String, outputSize: OutputSize) async -> Result<[String: EquityDailyData], AlphaVantageError> {
42+
let request = requestBuilder.requestForDailyAdjustedTimeSeries(symbol: symbol, outputSize: outputSize)
4343
return await session.request(request)
4444
.serializingAlphaVantageWrappedResponse(TimeSeriesResponse.self) { $0.dailyTimeSeries }
4545
}
46+
47+
public func dailyAdjustedTimeSeries(for symbol: String) async -> Result<[String: EquityDailyData], AlphaVantageError> {
48+
await dailyAdjustedTimeSeries(for: symbol, outputSize: .compact)
49+
}
4650
}
4751

4852
extension Session {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
public enum OutputSize {
2+
case compact
3+
case full
4+
}

Tests/AlphaVantageRequestBuilderTestCase.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,14 @@ class AlphaVantageRequestBuilderTestCase: XCTestCase {
5959
// Given
6060
let parameters: [String: Any] = [
6161
"function": "TIME_SERIES_DAILY_ADJUSTED",
62-
"symbol": "APPL"
62+
"symbol": "APPL",
63+
"outputsize": "full"
6364
]
6465
let expectedRequest = givenRequest(with: parameters)
6566
let requestBuilder = givenAlphaVantageRequestBuilder()
6667

6768
// When
68-
let actualRequest = requestBuilder.requestForDailyAdjustedTimeSeries(symbol: "APPL")
69+
let actualRequest = requestBuilder.requestForDailyAdjustedTimeSeries(symbol: "APPL", outputSize: .full)
6970

7071
// Then
7172
XCTAssertEqual(expectedRequest, actualRequest)

Tests/AlphaVantageServiceTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ final class AlphaVantageServiceTests: XCTestCase {
9999

100100
let symbol = "MSFT"
101101
let service = givenService()
102-
given(response: .dailyTimeSeriesSuccess, for: "\(mockAPIHost.absoluteBaseURL)?function=TIME_SERIES_DAILY_ADJUSTED&symbol=\(symbol)")
102+
given(response: .dailyTimeSeriesSuccess, for: "\(mockAPIHost.absoluteBaseURL)?function=TIME_SERIES_DAILY_ADJUSTED&outputsize=compact&symbol=\(symbol)")
103103

104104
// When
105105
let result = await service.dailyAdjustedTimeSeries(for: symbol)

0 commit comments

Comments
 (0)