Skip to content

Commit 00bfc1f

Browse files
author
olivierapivideo
authored
feat(all): add watermarks & video clips
1 parent 7e29ebe commit 00bfc1f

24 files changed

+695
-8
lines changed

.openapi-generator/FILES

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Sources/APIs/PlayerThemesAPI.swift
1313
Sources/APIs/RawStatisticsAPI.swift
1414
Sources/APIs/UploadTokensAPI.swift
1515
Sources/APIs/VideosAPI.swift
16+
Sources/APIs/WatermarksAPI.swift
1617
Sources/APIs/WebhooksAPI.swift
1718
Sources/AlamofireImplementations.swift
1819
Sources/Auth/ApiVideoAuthenticator.swift
@@ -66,6 +67,7 @@ Sources/Models/TokenListResponse.swift
6667
Sources/Models/UploadToken.swift
6768
Sources/Models/Video.swift
6869
Sources/Models/VideoAssets.swift
70+
Sources/Models/VideoClip.swift
6971
Sources/Models/VideoCreationPayload.swift
7072
Sources/Models/VideoSession.swift
7173
Sources/Models/VideoSessionClient.swift
@@ -83,7 +85,10 @@ Sources/Models/VideoStatusEncodingMetadata.swift
8385
Sources/Models/VideoStatusIngest.swift
8486
Sources/Models/VideoThumbnailPickPayload.swift
8587
Sources/Models/VideoUpdatePayload.swift
88+
Sources/Models/VideoWatermark.swift
8689
Sources/Models/VideosListResponse.swift
90+
Sources/Models/Watermark.swift
91+
Sources/Models/WatermarksListResponse.swift
8792
Sources/Models/Webhook.swift
8893
Sources/Models/WebhooksCreationPayload.swift
8994
Sources/Models/WebhooksListResponse.swift
@@ -141,6 +146,7 @@ docs/UploadToken.md
141146
docs/UploadTokensAPI.md
142147
docs/Video.md
143148
docs/VideoAssets.md
149+
docs/VideoClip.md
144150
docs/VideoCreationPayload.md
145151
docs/VideoSession.md
146152
docs/VideoSessionClient.md
@@ -158,8 +164,12 @@ docs/VideoStatusEncodingMetadata.md
158164
docs/VideoStatusIngest.md
159165
docs/VideoThumbnailPickPayload.md
160166
docs/VideoUpdatePayload.md
167+
docs/VideoWatermark.md
161168
docs/VideosAPI.md
162169
docs/VideosListResponse.md
170+
docs/Watermark.md
171+
docs/WatermarksAPI.md
172+
docs/WatermarksListResponse.md
163173
docs/Webhook.md
164174
docs/WebhooksAPI.md
165175
docs/WebhooksCreationPayload.md
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
89d90eb8417142f456f0e11aab66e6714f24bea291cb3c8cbd38de96f1d52dbe
1+
d6524c62486df62e78c0e30682f41a3558bf7f6d8b618cc65a92913b36d06233

ApiVideoClient.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Pod::Spec.new do |s|
44
s.osx.deployment_target = '10.12'
55
s.tvos.deployment_target = '10.0'
66
s.watchos.deployment_target = '3.0'
7-
s.version = '0.1.2'
8-
s.source = { :git => 'https://github.com/apivideo/api.video-ios-client', :tag => 'v0.1.2' }
7+
s.version = '1.0.0'
8+
s.source = { :git => 'https://github.com/apivideo/api.video-ios-client', :tag => 'v1.0.0' }
99
s.authors = { 'Ecosystem Team' => 'ecosystem@api.video' }
1010
s.license = { :type => 'MIT' }
1111
s.homepage = 'https://docs.api.video'

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# Changelog
22
All changes to this project will be documented in this file.
33

4+
## [1.0.0] - 2022-01-07
5+
- Add watermark endpoints
6+
- Add video clips
7+
- Fix tags[] query parameter format of GET /videos
8+
- Correctly distinguish between "undefined", "defined" and "null" values if the playerId parameter of PATCH /videos/{videoId}
9+
410
## [0.1.2] - 2021-12-14
511
- Set protocol for progressive upload session visibility to public
612

README.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
- [RawStatisticsAPI](#RawStatisticsAPI)
2222
- [UploadTokensAPI](#UploadTokensAPI)
2323
- [VideosAPI](#VideosAPI)
24+
- [WatermarksAPI](#WatermarksAPI)
2425
- [WebhooksAPI](#WebhooksAPI)
2526
- [Models](#models)
2627
- [Authorization](#documentation-for-authorization)
@@ -41,14 +42,14 @@ api.video's iOS client streamlines the coding process. Chunking files is handled
4142
Specify it in your `Cartfile`:
4243

4344
```
44-
github "apivideo/api.video-ios-client" ~> 0.1.2
45+
github "apivideo/api.video-ios-client" ~> 1.0.0
4546
```
4647

4748
Run `carthage update`
4849

4950
### CocoaPods
5051

51-
Add `pod 'ApiVideoClient', '0.1.2'` in your `Podfile`
52+
Add `pod 'ApiVideoClient', '1.0.0'` in your `Podfile`
5253

5354
Run `pod install`
5455

@@ -227,6 +228,23 @@ Method | HTTP request | Description
227228
[**uploadThumbnail**](docs/VideosAPI.md#uploadThumbnail) | **POST** /videos/{videoId}/thumbnail | Upload a thumbnail
228229

229230

231+
### WatermarksAPI
232+
233+
#### Retrieve an instance of WatermarksAPI:
234+
235+
```swift
236+
WatermarksAPI
237+
```
238+
239+
#### Endpoints
240+
241+
Method | HTTP request | Description
242+
------------- | ------------- | -------------
243+
[**delete**](docs/WatermarksAPI.md#delete) | **DELETE** /watermarks/{watermarkId} | Delete a watermark
244+
[**list**](docs/WatermarksAPI.md#list) | **GET** /watermarks | List all watermarks
245+
[**upload**](docs/WatermarksAPI.md#upload) | **POST** /watermarks | Upload a watermark
246+
247+
230248
### WebhooksAPI
231249

232250
#### Retrieve an instance of WebhooksAPI:
@@ -289,6 +307,7 @@ Method | HTTP request | Description
289307
- [UploadToken](docs/UploadToken.md)
290308
- [Video](docs/Video.md)
291309
- [VideoAssets](docs/VideoAssets.md)
310+
- [VideoClip](docs/VideoClip.md)
292311
- [VideoCreationPayload](docs/VideoCreationPayload.md)
293312
- [VideoSession](docs/VideoSession.md)
294313
- [VideoSessionClient](docs/VideoSessionClient.md)
@@ -306,7 +325,10 @@ Method | HTTP request | Description
306325
- [VideoStatusIngest](docs/VideoStatusIngest.md)
307326
- [VideoThumbnailPickPayload](docs/VideoThumbnailPickPayload.md)
308327
- [VideoUpdatePayload](docs/VideoUpdatePayload.md)
328+
- [VideoWatermark](docs/VideoWatermark.md)
309329
- [VideosListResponse](docs/VideosListResponse.md)
330+
- [Watermark](docs/Watermark.md)
331+
- [WatermarksListResponse](docs/WatermarksListResponse.md)
310332
- [Webhook](docs/Webhook.md)
311333
- [WebhooksCreationPayload](docs/WebhooksCreationPayload.md)
312334
- [WebhooksListResponse](docs/WebhooksListResponse.md)

Sources/APIs/WatermarksAPI.swift

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
//
2+
// WatermarksAPI.swift
3+
//
4+
// Generated by openapi-generator
5+
// https://openapi-generator.tech
6+
//
7+
8+
import Foundation
9+
#if canImport(AnyCodable)
10+
import AnyCodable
11+
#endif
12+
13+
open class WatermarksAPI {
14+
15+
/**
16+
Delete a watermark
17+
18+
- parameter watermarkId: (path) The watermark ID for the watermark you want to delete.
19+
- parameter apiResponseQueue: The queue on which api response is dispatched.
20+
- parameter completion: completion handler to receive the data and the error objects.
21+
*/
22+
@discardableResult
23+
open class func delete(watermarkId: String, apiResponseQueue: DispatchQueue = ApiVideoClient.apiResponseQueue, completion: @escaping ((_ data: Void?, _ error: Error?) -> Void)) -> URLSessionTask? {
24+
return deleteWithRequestBuilder(watermarkId: watermarkId).execute(apiResponseQueue) { result in
25+
switch result {
26+
case .success:
27+
completion((), nil)
28+
case let .failure(error):
29+
completion(nil, error)
30+
}
31+
}
32+
}
33+
34+
35+
/**
36+
Delete a watermark
37+
- DELETE /watermarks/{watermarkId}
38+
- Delete a watermark. A watermark is a static image overlapping a video used as a \"stamp\" to limit leetching.
39+
- BASIC:
40+
- type: http
41+
- name: bearerAuth
42+
- parameter watermarkId: (path) The watermark ID for the watermark you want to delete.
43+
- returns: RequestBuilder<Void>
44+
*/
45+
open class func deleteWithRequestBuilder(watermarkId: String) -> RequestBuilder<Void> {
46+
var localVariablePath = "/watermarks/{watermarkId}"
47+
let watermarkIdPreEscape = "\(APIHelper.mapValueToPathItem(watermarkId))"
48+
let watermarkIdPostEscape = watermarkIdPreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
49+
localVariablePath = localVariablePath.replacingOccurrences(of: "{watermarkId}", with: watermarkIdPostEscape, options: .literal, range: nil)
50+
let localVariableURLString = ApiVideoClient.basePath + localVariablePath
51+
let localVariableParameters: [String: Any]? = nil
52+
53+
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
54+
55+
let localVariableNillableHeaders: [String: Any?] = [
56+
:
57+
]
58+
59+
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
60+
61+
let localVariableRequestBuilder: RequestBuilder<Void>.Type = ApiVideoClient.requestBuilderFactory.getNonDecodableBuilder()
62+
63+
return localVariableRequestBuilder.init(method: "DELETE", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters)
64+
}
65+
66+
67+
/**
68+
List all watermarks
69+
70+
- parameter sortBy: (query) Allowed: createdAt. You can search by the time watermark were created at. (optional)
71+
- parameter sortOrder: (query) Allowed: asc, desc. asc is ascending and sorts from A to Z. desc is descending and sorts from Z to A. (optional)
72+
- parameter currentPage: (query) Choose the number of search results to return per page. Minimum value: 1 (optional, default to 1)
73+
- parameter pageSize: (query) Results per page. Allowed values 1-100, default is 25. (optional, default to 25)
74+
- parameter apiResponseQueue: The queue on which api response is dispatched.
75+
- parameter completion: completion handler to receive the data and the error objects.
76+
*/
77+
@discardableResult
78+
open class func list(sortBy: String? = nil, sortOrder: String? = nil, currentPage: Int? = nil, pageSize: Int? = nil, apiResponseQueue: DispatchQueue = ApiVideoClient.apiResponseQueue, completion: @escaping ((_ data: WatermarksListResponse?, _ error: Error?) -> Void)) -> URLSessionTask? {
79+
return listWithRequestBuilder(sortBy: sortBy, sortOrder: sortOrder, currentPage: currentPage, pageSize: pageSize).execute(apiResponseQueue) { result in
80+
switch result {
81+
case let .success(response):
82+
completion(response.body, nil)
83+
case let .failure(error):
84+
completion(nil, error)
85+
}
86+
}
87+
}
88+
89+
90+
/**
91+
List all watermarks
92+
- GET /watermarks
93+
- List all watermarks. A watermark is a static image overlapping a video used as a \"stamp\" to limit leetching.
94+
- BASIC:
95+
- type: http
96+
- name: bearerAuth
97+
- parameter sortBy: (query) Allowed: createdAt. You can search by the time watermark were created at. (optional)
98+
- parameter sortOrder: (query) Allowed: asc, desc. asc is ascending and sorts from A to Z. desc is descending and sorts from Z to A. (optional)
99+
- parameter currentPage: (query) Choose the number of search results to return per page. Minimum value: 1 (optional, default to 1)
100+
- parameter pageSize: (query) Results per page. Allowed values 1-100, default is 25. (optional, default to 25)
101+
- returns: RequestBuilder<WatermarksListResponse>
102+
*/
103+
open class func listWithRequestBuilder(sortBy: String? = nil, sortOrder: String? = nil, currentPage: Int? = nil, pageSize: Int? = nil) -> RequestBuilder<WatermarksListResponse> {
104+
let localVariablePath = "/watermarks"
105+
let localVariableURLString = ApiVideoClient.basePath + localVariablePath
106+
let localVariableParameters: [String: Any]? = nil
107+
108+
var localVariableUrlComponents = URLComponents(string: localVariableURLString)
109+
localVariableUrlComponents?.queryItems = APIHelper.mapValuesToQueryItems([
110+
"sortBy": sortBy?.encodeToJSON(),
111+
"sortOrder": sortOrder?.encodeToJSON(),
112+
"currentPage": currentPage?.encodeToJSON(),
113+
"pageSize": pageSize?.encodeToJSON(),
114+
])
115+
116+
let localVariableNillableHeaders: [String: Any?] = [
117+
:
118+
]
119+
120+
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
121+
122+
let localVariableRequestBuilder: RequestBuilder<WatermarksListResponse>.Type = ApiVideoClient.requestBuilderFactory.getBuilder()
123+
124+
return localVariableRequestBuilder.init(method: "GET", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters)
125+
}
126+
127+
128+
/**
129+
Upload a watermark
130+
131+
- parameter file: (form) The .jpg or .png image to be added as a watermark.
132+
- parameter apiResponseQueue: The queue on which api response is dispatched.
133+
- parameter completion: completion handler to receive the data and the error objects.
134+
*/
135+
@discardableResult
136+
open class func upload(file: URL, apiResponseQueue: DispatchQueue = ApiVideoClient.apiResponseQueue, completion: @escaping ((_ data: Watermark?, _ error: Error?) -> Void)) -> URLSessionTask? {
137+
return uploadWithRequestBuilder(file: file).execute(apiResponseQueue) { result in
138+
switch result {
139+
case let .success(response):
140+
completion(response.body, nil)
141+
case let .failure(error):
142+
completion(nil, error)
143+
}
144+
}
145+
}
146+
147+
148+
/**
149+
Upload a watermark
150+
- POST /watermarks
151+
- Create a new watermark by uploading a .jpg or a .png image. A watermark is a static image overlapping a video used as a \"stamp\" to limit leetching.
152+
- BASIC:
153+
- type: http
154+
- name: bearerAuth
155+
- parameter file: (form) The .jpg or .png image to be added as a watermark.
156+
- returns: RequestBuilder<Watermark>
157+
*/
158+
open class func uploadWithRequestBuilder(file: URL) -> RequestBuilder<Watermark> {
159+
let localVariablePath = "/watermarks"
160+
let localVariableURLString = ApiVideoClient.basePath + localVariablePath
161+
let localVariableFormParams: [String: Any?] = [
162+
"file": file.encodeToJSON(),
163+
]
164+
let localVariableNonNullParameters = APIHelper.rejectNil(localVariableFormParams)
165+
let localVariableParameters = APIHelper.convertBoolToString(localVariableNonNullParameters)
166+
167+
let localVariableUrlComponents = URLComponents(string: localVariableURLString)
168+
169+
let localVariableNillableHeaders: [String: Any?] = [
170+
"Content-Type": "multipart/form-data",
171+
]
172+
173+
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
174+
175+
let localVariableRequestBuilder: RequestBuilder<Watermark>.Type = ApiVideoClient.requestBuilderFactory.getBuilder()
176+
177+
return localVariableRequestBuilder.init(method: "POST", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters)
178+
}
179+
180+
}

Sources/Models/VideoClip.swift

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//
2+
// VideoClip.swift
3+
//
4+
// Generated by openapi-generator
5+
// https://openapi-generator.tech
6+
//
7+
8+
import Foundation
9+
#if canImport(AnyCodable)
10+
import AnyCodable
11+
#endif
12+
13+
public struct VideoClip: Codable, Hashable {
14+
15+
public var startTimecode: String?
16+
public var endTimecode: String?
17+
18+
public init(startTimecode: String? = nil, endTimecode: String? = nil) {
19+
self.startTimecode = startTimecode
20+
self.endTimecode = endTimecode
21+
}
22+
23+
public enum CodingKeys: String, CodingKey, CaseIterable {
24+
case startTimecode
25+
case endTimecode
26+
}
27+
28+
// Encodable protocol methods
29+
30+
public func encode(to encoder: Encoder) throws {
31+
var container = encoder.container(keyedBy: CodingKeys.self)
32+
try container.encodeIfPresent(startTimecode, forKey: .startTimecode)
33+
try container.encodeIfPresent(endTimecode, forKey: .endTimecode)
34+
}
35+
}
36+

0 commit comments

Comments
 (0)