tamar-file-hub-client 0.1.4__tar.gz → 0.1.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/PKG-INFO +67 -2
  2. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/README.md +66 -1
  3. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/file_service_pb2.py +30 -30
  4. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/interceptors.py +578 -580
  5. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/protos/file_service.proto +2 -1
  6. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/schemas/file.py +171 -170
  7. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/file/async_blob_service.py +25 -8
  8. tamar_file_hub_client-0.1.6/file_hub_client/services/file/base_file_service.py +317 -0
  9. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/file/sync_blob_service.py +25 -8
  10. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/__init__.py +10 -0
  11. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/logging.py +335 -318
  12. tamar_file_hub_client-0.1.6/file_hub_client/utils/mime_extension_mapper.py +158 -0
  13. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/upload_helper.py +36 -22
  14. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/setup.py +1 -1
  15. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/tamar_file_hub_client.egg-info/PKG-INFO +67 -2
  16. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/tamar_file_hub_client.egg-info/SOURCES.txt +1 -0
  17. tamar_file_hub_client-0.1.4/file_hub_client/services/file/base_file_service.py +0 -116
  18. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/MANIFEST.in +0 -0
  19. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/__init__.py +0 -0
  20. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/client.py +0 -0
  21. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/enums/__init__.py +0 -0
  22. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/enums/export_format.py +0 -0
  23. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/enums/role.py +0 -0
  24. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/enums/upload_mode.py +0 -0
  25. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/errors/__init__.py +0 -0
  26. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/errors/exceptions.py +0 -0
  27. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/py.typed +0 -0
  28. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/__init__.py +0 -0
  29. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/async_client.py +0 -0
  30. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/__init__.py +0 -0
  31. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/file_service_pb2_grpc.py +0 -0
  32. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/folder_service_pb2.py +0 -0
  33. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/folder_service_pb2_grpc.py +0 -0
  34. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/taple_service_pb2.py +0 -0
  35. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/gen/taple_service_pb2_grpc.py +0 -0
  36. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/protos/folder_service.proto +0 -0
  37. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/protos/taple_service.proto +0 -0
  38. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/rpc/sync_client.py +0 -0
  39. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/schemas/__init__.py +0 -0
  40. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/schemas/context.py +0 -0
  41. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/schemas/folder.py +0 -0
  42. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/schemas/taple.py +0 -0
  43. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/__init__.py +0 -0
  44. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/file/__init__.py +0 -0
  45. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/file/async_file_service.py +0 -0
  46. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/file/sync_file_service.py +0 -0
  47. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/folder/__init__.py +0 -0
  48. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/folder/async_folder_service.py +0 -0
  49. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/folder/sync_folder_service.py +0 -0
  50. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/taple/__init__.py +0 -0
  51. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/taple/async_taple_service.py +0 -0
  52. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/taple/base_taple_service.py +0 -0
  53. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/taple/idempotent_taple_mixin.py +0 -0
  54. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/services/taple/sync_taple_service.py +0 -0
  55. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/converter.py +0 -0
  56. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/download_helper.py +0 -0
  57. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/file_utils.py +0 -0
  58. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/idempotency.py +0 -0
  59. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/ip_detector.py +0 -0
  60. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/retry.py +0 -0
  61. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/file_hub_client/utils/smart_retry.py +0 -0
  62. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/setup.cfg +0 -0
  63. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/tamar_file_hub_client.egg-info/dependency_links.txt +0 -0
  64. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/tamar_file_hub_client.egg-info/requires.txt +0 -0
  65. {tamar_file_hub_client-0.1.4 → tamar_file_hub_client-0.1.6}/tamar_file_hub_client.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tamar-file-hub-client
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: A Python SDK for gRPC-based file management system
5
5
  Home-page: https://github.com/Tamar-Edge-AI/file-hub-client
6
6
  Author: Oscar Ou
@@ -55,6 +55,8 @@ Dynamic: summary
55
55
  - 📂 **文件夹管理**:支持文件夹的创建、重命名、移动、删除
56
56
  - 🔗 **文件分享**:支持生成分享链接,设置访问权限和密码
57
57
  - 🔄 **多种上传方式**:支持直传、断点续传、客户端直传到对象存储
58
+ - 🎯 **智能MIME类型检测**:支持26+种主流文件格式的魔术字节检测和扩展名推断
59
+ - 🤖 **AI生成文件支持**:完美支持AI模型输出的字节数据+MIME类型组合上传
58
60
  - 🛡️ **错误处理**:完善的异常体系和错误重试机制
59
61
  - 🔒 **TLS/SSL 支持**:支持安全的加密连接,保护数据传输
60
62
  - 🔁 **自动重试**:连接失败时自动重试,提高可靠性
@@ -615,6 +617,34 @@ async with AsyncTamarFileHubClient() as client:
615
617
  file_info = await client.blobs.upload(f)
616
618
  ```
617
619
 
620
+ #### AI生成文件上传(新功能)
621
+
622
+ ```python
623
+ from file_hub_client import AsyncTamarFileHubClient
624
+
625
+ async with AsyncTamarFileHubClient() as client:
626
+ # AI模型返回的字节数据(图片、音频、视频等)
627
+ # 场景:AI生图模型返回WebP格式图片
628
+ ai_image_data = b"\x52\x49\x46\x46...." # WebP格式的字节数据
629
+
630
+ # 方式1:显式指定MIME类型(推荐用于AI生成内容)
631
+ file_info = await client.blobs.upload(
632
+ file=ai_image_data,
633
+ mime_type="image/webp" # 明确指定MIME类型
634
+ )
635
+ print(f"AI生成图片上传成功: {file_info.file.file_name}") # upload_xxx.webp
636
+
637
+ # 方式2:自动检测MIME类型(支持26+种格式)
638
+ file_info = await client.blobs.upload(file=ai_image_data)
639
+ # 系统会自动检测magic bytes并推断为WebP格式
640
+
641
+ # 支持的AI生成内容格式:
642
+ # 🖼️ 图片: PNG, JPEG, WebP, GIF, BMP等
643
+ # 🎵 音频: MP3, WAV, FLAC, AAC, OGG等
644
+ # 🎥 视频: MP4, MOV, WebM, AVI等
645
+ # 📄 文档: PDF, TXT等
646
+ ```
647
+
618
648
  #### 大文件上传(流式上传和断点续传)
619
649
 
620
650
  ```python
@@ -743,7 +773,14 @@ async with AsyncTamarFileHubClient() as client:
743
773
  if url_info.error:
744
774
  print(f"文件 {url_info.file_id} 生成URL失败: {url_info.error}")
745
775
  else:
746
- print(f"文件 {url_info.file_id} 的下载URL: {url_info.url}")
776
+ print(f"文件 {url_info.file_id}:")
777
+ print(f" 下载URL: {url_info.url}")
778
+ print(f" MIME类型: {url_info.mime_type}")
779
+ # 根据MIME类型处理文件
780
+ if url_info.mime_type.startswith('image/'):
781
+ print(f" 这是一个图片文件")
782
+ elif url_info.mime_type == 'application/pdf':
783
+ print(f" 这是一个PDF文件")
747
784
  ```
748
785
 
749
786
  同步客户端示例:
@@ -760,6 +797,12 @@ with TamarFileHubClient() as client:
760
797
  )
761
798
  ```
762
799
 
800
+ **注意**:`batch_generate_download_url` 方法返回一个 `BatchDownloadUrlResponse` 对象,其中 `download_urls` 字段包含 `DownloadUrlInfo` 对象列表,每个对象包含:
801
+ - `file_id`: 文件ID
802
+ - `url`: 下载URL(如果成功生成)
803
+ - `mime_type`: 文件的MIME类型,便于正确处理文件内容
804
+ - `error`: 错误信息(如果生成失败)
805
+
763
806
  ##### 获取GCS URL
764
807
 
765
808
  对于需要直接访问Google Cloud Storage的场景,可以获取文件的GCS URL和MIME类型信息:
@@ -2314,6 +2357,11 @@ export TEST_USER_ID=test-user-456
2314
2357
  5. **错误处理**:妥善处理各种异常
2315
2358
  6. **资源清理**:使用 with 语句确保资源释放
2316
2359
  7. **并发控制**:合理使用并发避免服务器过载
2360
+ 8. **AI生成文件处理**:
2361
+ - ✅ **推荐**: 上传AI生成的字节数据时显式提供 `mime_type` 参数
2362
+ - ✅ **备选**: 依赖自动检测(支持26+种格式的magic bytes检测)
2363
+ - ✅ **兼容**: 无需修改现有代码,保持100%向下兼容
2364
+ - ⚠️ **注意**: 断点续传现已完全支持MIME类型传递
2317
2365
 
2318
2366
  ## 许可证
2319
2367
 
@@ -2325,6 +2373,21 @@ MIT License
2325
2373
 
2326
2374
  ## 更新日志
2327
2375
 
2376
+ ### v0.0.7 (2025-09)
2377
+ - **重大修复**: 修复MIME类型检测和文件扩展名推断功能
2378
+ - **断点续传修复**: 解决断点续传中的HTTP头部和签名验证问题
2379
+ - **AI生成文件支持**: 完善对AI生成内容(图片、视频、音频)的MIME类型处理
2380
+ - **新功能**: 新增 `mime_type` 参数支持,允许用户显式指定文件MIME类型
2381
+ - **魔术字节检测**: 增强内容检测,支持26+种主流文件格式的自动识别
2382
+ - **向下兼容**: 保持100%向下兼容,现有代码无需修改
2383
+ - **核心修复**:
2384
+ - 修复 `upload_helper.py` 中系统性拼写错误(`mine_type` → `mime_type`)
2385
+ - 修复断点续传缺失 `Cache-Control` 头部导致的400错误
2386
+ - 修复AI生成文件默认使用 `.dat` 扩展名的问题
2387
+ - 增强MIME类型到文件扩展名的映射(50+种MIME类型支持)
2388
+ - **文件格式支持**: PNG, JPEG, WebP, MP4, MP3, WAV, GIF, BMP, PDF等主流格式
2389
+ - **使用场景**: 完美支持AI模型输出的字节数据+MIME类型组合
2390
+
2328
2391
  ### v0.0.6 (2025-08)
2329
2392
  - 新增媒体文件压缩服务功能
2330
2393
  - 支持获取文件压缩状态 (get_compression_status)
@@ -2338,6 +2401,8 @@ MIT License
2338
2401
  ### v0.0.5 (2025-01)
2339
2402
  - 新增批量下载URL生成接口 (batch_generate_download_url)
2340
2403
  - 新增GCS URL获取接口 (get_gcs_url, batch_get_gcs_url)
2404
+ - **重要更新**: 批量下载URL接口 (BatchGenerateDownloadUrl) 现在返回MIME类型信息
2405
+ - **重要更新**: DownloadUrlInfo 结构新增 mime_type 字段,便于文件类型识别
2341
2406
  - GCS URL接口返回MIME类型信息,便于文件类型识别
2342
2407
  - 新增 keep_original_filename 参数支持保留原始文件名
2343
2408
  - 更新相关文档和测试用例
@@ -9,6 +9,8 @@
9
9
  - 📂 **文件夹管理**:支持文件夹的创建、重命名、移动、删除
10
10
  - 🔗 **文件分享**:支持生成分享链接,设置访问权限和密码
11
11
  - 🔄 **多种上传方式**:支持直传、断点续传、客户端直传到对象存储
12
+ - 🎯 **智能MIME类型检测**:支持26+种主流文件格式的魔术字节检测和扩展名推断
13
+ - 🤖 **AI生成文件支持**:完美支持AI模型输出的字节数据+MIME类型组合上传
12
14
  - 🛡️ **错误处理**:完善的异常体系和错误重试机制
13
15
  - 🔒 **TLS/SSL 支持**:支持安全的加密连接,保护数据传输
14
16
  - 🔁 **自动重试**:连接失败时自动重试,提高可靠性
@@ -569,6 +571,34 @@ async with AsyncTamarFileHubClient() as client:
569
571
  file_info = await client.blobs.upload(f)
570
572
  ```
571
573
 
574
+ #### AI生成文件上传(新功能)
575
+
576
+ ```python
577
+ from file_hub_client import AsyncTamarFileHubClient
578
+
579
+ async with AsyncTamarFileHubClient() as client:
580
+ # AI模型返回的字节数据(图片、音频、视频等)
581
+ # 场景:AI生图模型返回WebP格式图片
582
+ ai_image_data = b"\x52\x49\x46\x46...." # WebP格式的字节数据
583
+
584
+ # 方式1:显式指定MIME类型(推荐用于AI生成内容)
585
+ file_info = await client.blobs.upload(
586
+ file=ai_image_data,
587
+ mime_type="image/webp" # 明确指定MIME类型
588
+ )
589
+ print(f"AI生成图片上传成功: {file_info.file.file_name}") # upload_xxx.webp
590
+
591
+ # 方式2:自动检测MIME类型(支持26+种格式)
592
+ file_info = await client.blobs.upload(file=ai_image_data)
593
+ # 系统会自动检测magic bytes并推断为WebP格式
594
+
595
+ # 支持的AI生成内容格式:
596
+ # 🖼️ 图片: PNG, JPEG, WebP, GIF, BMP等
597
+ # 🎵 音频: MP3, WAV, FLAC, AAC, OGG等
598
+ # 🎥 视频: MP4, MOV, WebM, AVI等
599
+ # 📄 文档: PDF, TXT等
600
+ ```
601
+
572
602
  #### 大文件上传(流式上传和断点续传)
573
603
 
574
604
  ```python
@@ -697,7 +727,14 @@ async with AsyncTamarFileHubClient() as client:
697
727
  if url_info.error:
698
728
  print(f"文件 {url_info.file_id} 生成URL失败: {url_info.error}")
699
729
  else:
700
- print(f"文件 {url_info.file_id} 的下载URL: {url_info.url}")
730
+ print(f"文件 {url_info.file_id}:")
731
+ print(f" 下载URL: {url_info.url}")
732
+ print(f" MIME类型: {url_info.mime_type}")
733
+ # 根据MIME类型处理文件
734
+ if url_info.mime_type.startswith('image/'):
735
+ print(f" 这是一个图片文件")
736
+ elif url_info.mime_type == 'application/pdf':
737
+ print(f" 这是一个PDF文件")
701
738
  ```
702
739
 
703
740
  同步客户端示例:
@@ -714,6 +751,12 @@ with TamarFileHubClient() as client:
714
751
  )
715
752
  ```
716
753
 
754
+ **注意**:`batch_generate_download_url` 方法返回一个 `BatchDownloadUrlResponse` 对象,其中 `download_urls` 字段包含 `DownloadUrlInfo` 对象列表,每个对象包含:
755
+ - `file_id`: 文件ID
756
+ - `url`: 下载URL(如果成功生成)
757
+ - `mime_type`: 文件的MIME类型,便于正确处理文件内容
758
+ - `error`: 错误信息(如果生成失败)
759
+
717
760
  ##### 获取GCS URL
718
761
 
719
762
  对于需要直接访问Google Cloud Storage的场景,可以获取文件的GCS URL和MIME类型信息:
@@ -2268,6 +2311,11 @@ export TEST_USER_ID=test-user-456
2268
2311
  5. **错误处理**:妥善处理各种异常
2269
2312
  6. **资源清理**:使用 with 语句确保资源释放
2270
2313
  7. **并发控制**:合理使用并发避免服务器过载
2314
+ 8. **AI生成文件处理**:
2315
+ - ✅ **推荐**: 上传AI生成的字节数据时显式提供 `mime_type` 参数
2316
+ - ✅ **备选**: 依赖自动检测(支持26+种格式的magic bytes检测)
2317
+ - ✅ **兼容**: 无需修改现有代码,保持100%向下兼容
2318
+ - ⚠️ **注意**: 断点续传现已完全支持MIME类型传递
2271
2319
 
2272
2320
  ## 许可证
2273
2321
 
@@ -2279,6 +2327,21 @@ MIT License
2279
2327
 
2280
2328
  ## 更新日志
2281
2329
 
2330
+ ### v0.0.7 (2025-09)
2331
+ - **重大修复**: 修复MIME类型检测和文件扩展名推断功能
2332
+ - **断点续传修复**: 解决断点续传中的HTTP头部和签名验证问题
2333
+ - **AI生成文件支持**: 完善对AI生成内容(图片、视频、音频)的MIME类型处理
2334
+ - **新功能**: 新增 `mime_type` 参数支持,允许用户显式指定文件MIME类型
2335
+ - **魔术字节检测**: 增强内容检测,支持26+种主流文件格式的自动识别
2336
+ - **向下兼容**: 保持100%向下兼容,现有代码无需修改
2337
+ - **核心修复**:
2338
+ - 修复 `upload_helper.py` 中系统性拼写错误(`mine_type` → `mime_type`)
2339
+ - 修复断点续传缺失 `Cache-Control` 头部导致的400错误
2340
+ - 修复AI生成文件默认使用 `.dat` 扩展名的问题
2341
+ - 增强MIME类型到文件扩展名的映射(50+种MIME类型支持)
2342
+ - **文件格式支持**: PNG, JPEG, WebP, MP4, MP3, WAV, GIF, BMP, PDF等主流格式
2343
+ - **使用场景**: 完美支持AI模型输出的字节数据+MIME类型组合
2344
+
2282
2345
  ### v0.0.6 (2025-08)
2283
2346
  - 新增媒体文件压缩服务功能
2284
2347
  - 支持获取文件压缩状态 (get_compression_status)
@@ -2292,6 +2355,8 @@ MIT License
2292
2355
  ### v0.0.5 (2025-01)
2293
2356
  - 新增批量下载URL生成接口 (batch_generate_download_url)
2294
2357
  - 新增GCS URL获取接口 (get_gcs_url, batch_get_gcs_url)
2358
+ - **重要更新**: 批量下载URL接口 (BatchGenerateDownloadUrl) 现在返回MIME类型信息
2359
+ - **重要更新**: DownloadUrlInfo 结构新增 mime_type 字段,便于文件类型识别
2295
2360
  - GCS URL接口返回MIME类型信息,便于文件类型识别
2296
2361
  - 新增 keep_original_filename 参数支持保留原始文件名
2297
2362
  - 更新相关文档和测试用例
@@ -26,7 +26,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
26
26
  from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
27
27
 
28
28
 
29
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12\x66ile_service.proto\x12\x04\x66ile\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xab\x01\n\x04\x46ile\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tfolder_id\x18\x02 \x01(\t\x12\x11\n\tfile_name\x18\x03 \x01(\t\x12\x11\n\tfile_type\x18\x04 \x01(\t\x12.\n\ncreated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xb7\x02\n\nUploadFile\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tfolder_id\x18\x02 \x01(\t\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\t\x12\x14\n\x0cstorage_type\x18\x04 \x01(\t\x12\x13\n\x0bstored_name\x18\x05 \x01(\t\x12\x13\n\x0bstored_path\x18\x06 \x01(\t\x12\x11\n\tfile_name\x18\x07 \x01(\t\x12\x11\n\tfile_size\x18\x08 \x01(\x03\x12\x10\n\x08\x66ile_ext\x18\t \x01(\t\x12\x11\n\tmime_type\x18\n \x01(\t\x12\x0e\n\x06status\x18\x0b \x01(\t\x12.\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x9f\x02\n\x11UploadFileRequest\x12\x16\n\tfolder_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tfile_name\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\x0c\x12\x11\n\tfile_type\x18\x04 \x01(\t\x12\x11\n\tmime_type\x18\x05 \x01(\t\x12\x19\n\x0cis_temporary\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x07 \x01(\x05H\x02\x88\x01\x01\x12#\n\x16keep_original_filename\x18\x08 \x01(\x08H\x03\x88\x01\x01\x42\x0c\n\n_folder_idB\x0f\n\r_is_temporaryB\x11\n\x0f_expire_secondsB\x19\n\x17_keep_original_filename\"\xb3\x02\n\x10UploadUrlRequest\x12\x16\n\tfolder_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tfile_name\x18\x02 \x01(\t\x12\x11\n\tfile_type\x18\x03 \x01(\t\x12\x11\n\tmime_type\x18\x04 \x01(\t\x12\x11\n\tfile_size\x18\x05 \x01(\x03\x12\x11\n\tfile_hash\x18\x06 \x01(\t\x12\x19\n\x0cis_temporary\x18\x07 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x08 \x01(\x05H\x02\x88\x01\x01\x12#\n\x16keep_original_filename\x18\t \x01(\x08H\x03\x88\x01\x01\x42\x0c\n\n_folder_idB\x0f\n\r_is_temporaryB\x11\n\x0f_expire_secondsB\x19\n\x17_keep_original_filename\")\n\x16UploadCompletedRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"u\n\x12\x44ownloadUrlRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x13\n\x06is_cdn\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\t\n\x07_is_cdnB\x11\n\x0f_expire_seconds\"\xd4\x01\n\x10ShareLinkRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x11\n\tis_public\x18\x02 \x01(\x08\x12\x14\n\x0c\x61\x63\x63\x65ss_scope\x18\x03 \x01(\t\x12\x1b\n\x0e\x65xpire_seconds\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x17\n\nmax_access\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x1b\n\x0eshare_password\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x11\n\x0f_expire_secondsB\r\n\x0b_max_accessB\x11\n\x0f_share_password\"\x82\x01\n\x10\x46ileVisitRequest\x12\x15\n\rfile_share_id\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63\x63\x65ss_type\x18\x02 \x01(\t\x12\x17\n\x0f\x61\x63\x63\x65ss_duration\x18\x03 \x01(\x05\x12)\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"!\n\x0eGetFileRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"6\n\x11RenameFileRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"$\n\x11\x44\x65leteFileRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"\x8d\x02\n\x10ListFilesRequest\x12\x16\n\tfolder_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tfile_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x11\n\tfile_type\x18\x03 \x03(\t\x12\x1c\n\x0f\x63reated_by_role\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x17\n\ncreated_by\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x16\n\tpage_size\x18\x06 \x01(\x05H\x04\x88\x01\x01\x12\x11\n\x04page\x18\x07 \x01(\x05H\x05\x88\x01\x01\x42\x0c\n\n_folder_idB\x0c\n\n_file_nameB\x12\n\x10_created_by_roleB\r\n\x0b_created_byB\x0c\n\n_page_sizeB\x07\n\x05_page\"{\n\x17\x42\x61tchDownloadUrlRequest\x12\x10\n\x08\x66ile_ids\x18\x01 \x03(\t\x12\x13\n\x06is_cdn\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x03 \x01(\x05H\x01\x88\x01\x01\x42\t\n\x07_is_cdnB\x11\n\x0f_expire_seconds\"#\n\x10GetGcsUrlRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\")\n\x15\x42\x61tchGetGcsUrlRequest\x12\x10\n\x08\x66ile_ids\x18\x01 \x03(\t\"U\n\x12UploadFileResponse\x12\x18\n\x04\x66ile\x18\x01 \x01(\x0b\x32\n.file.File\x12%\n\x0bupload_file\x18\x02 \x01(\x0b\x32\x10.file.UploadFile\"a\n\x11UploadUrlResponse\x12\x18\n\x04\x66ile\x18\x01 \x01(\x0b\x32\n.file.File\x12%\n\x0bupload_file\x18\x02 \x01(\x0b\x32\x10.file.UploadFile\x12\x0b\n\x03url\x18\x03 \x01(\t\"\"\n\x13\x44ownloadUrlResponse\x12\x0b\n\x03url\x18\x01 \x01(\t\"*\n\x11ShareLinkResponse\x12\x15\n\rfile_share_id\x18\x01 \x01(\t\"-\n\x10\x46ileListResponse\x12\x19\n\x05\x66iles\x18\x01 \x03(\x0b\x32\n.file.File\"g\n\x0fGetFileResponse\x12\x18\n\x04\x66ile\x18\x01 \x01(\x0b\x32\n.file.File\x12*\n\x0bupload_file\x18\x02 \x01(\x0b\x32\x10.file.UploadFileH\x00\x88\x01\x01\x42\x0e\n\x0c_upload_file\"H\n\x18\x42\x61tchDownloadUrlResponse\x12,\n\rdownload_urls\x18\x01 \x03(\x0b\x32\x15.file.DownloadUrlInfo\"M\n\x0f\x44ownloadUrlInfo\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x12\n\x05\x65rror\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"7\n\x11GetGcsUrlResponse\x12\x0f\n\x07gcs_url\x18\x01 \x01(\t\x12\x11\n\tmime_type\x18\x02 \x01(\t\"<\n\x16\x42\x61tchGetGcsUrlResponse\x12\"\n\x08gcs_urls\x18\x01 \x03(\x0b\x32\x10.file.GcsUrlInfo\"_\n\nGcsUrlInfo\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x0f\n\x07gcs_url\x18\x02 \x01(\t\x12\x11\n\tmime_type\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"+\n\x18\x43ompressionStatusRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"\x84\x01\n\x19\x43ompressionStatusResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x1a\n\rerror_message\x18\x02 \x01(\tH\x00\x88\x01\x01\x12)\n\x08variants\x18\x03 \x03(\x0b\x32\x17.file.CompressedVariantB\x10\n\x0e_error_message\"Q\n\x12GetVariantsRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x19\n\x0cvariant_type\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0f\n\r_variant_type\"@\n\x13GetVariantsResponse\x12)\n\x08variants\x18\x01 \x03(\x0b\x32\x17.file.CompressedVariant\"\xc7\x02\n\x11\x43ompressedVariant\x12\x14\n\x0cvariant_name\x18\x01 \x01(\t\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\nmedia_type\x18\x03 \x01(\t\x12\r\n\x05width\x18\x04 \x01(\x05\x12\x0e\n\x06height\x18\x05 \x01(\x05\x12\x11\n\tfile_size\x18\x06 \x01(\x03\x12\x0e\n\x06\x66ormat\x18\x07 \x01(\t\x12\x14\n\x07quality\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x15\n\x08\x64uration\x18\t \x01(\x01H\x01\x88\x01\x01\x12\x14\n\x07\x62itrate\x18\n \x01(\x03H\x02\x88\x01\x01\x12\x10\n\x03\x66ps\x18\x0b \x01(\x05H\x03\x88\x01\x01\x12\x19\n\x11\x63ompression_ratio\x18\x0c \x01(\x01\x12\x13\n\x0bstored_path\x18\r \x01(\tB\n\n\x08_qualityB\x0b\n\t_durationB\n\n\x08_bitrateB\x06\n\x04_fps\"Y\n\x14RecompressionRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x1c\n\x0f\x66orce_reprocess\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_force_reprocess\"8\n\x15RecompressionResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \x01(\t\"\x92\x01\n\x19VariantDownloadUrlRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x14\n\x0cvariant_name\x18\x02 \x01(\t\x12\x1b\n\x0e\x65xpire_seconds\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x13\n\x06is_cdn\x18\x04 \x01(\x08H\x01\x88\x01\x01\x42\x11\n\x0f_expire_secondsB\t\n\x07_is_cdn\"\x8c\x01\n\x1aVariantDownloadUrlResponse\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x32\n\x0cvariant_info\x18\x03 \x01(\x0b\x32\x17.file.CompressedVariantH\x01\x88\x01\x01\x42\x08\n\x06_errorB\x0f\n\r_variant_info\"\x07\n\x05\x45mpty2\x87\n\n\x0b\x46ileService\x12?\n\nUploadFile\x12\x17.file.UploadFileRequest\x1a\x18.file.UploadFileResponse\x12\x44\n\x11GenerateUploadUrl\x12\x16.file.UploadUrlRequest\x1a\x17.file.UploadUrlResponse\x12M\n\x1aGenerateResumableUploadUrl\x12\x16.file.UploadUrlRequest\x1a\x17.file.UploadUrlResponse\x12\x43\n\x16\x43onfirmUploadCompleted\x12\x1c.file.UploadCompletedRequest\x1a\x0b.file.Empty\x12J\n\x13GenerateDownloadUrl\x12\x18.file.DownloadUrlRequest\x1a\x19.file.DownloadUrlResponse\x12Y\n\x18\x42\x61tchGenerateDownloadUrl\x12\x1d.file.BatchDownloadUrlRequest\x1a\x1e.file.BatchDownloadUrlResponse\x12<\n\tGetGcsUrl\x12\x16.file.GetGcsUrlRequest\x1a\x17.file.GetGcsUrlResponse\x12K\n\x0e\x42\x61tchGetGcsUrl\x12\x1b.file.BatchGetGcsUrlRequest\x1a\x1c.file.BatchGetGcsUrlResponse\x12\x44\n\x11GenerateShareLink\x12\x16.file.ShareLinkRequest\x1a\x17.file.ShareLinkResponse\x12\x30\n\tVisitFile\x12\x16.file.FileVisitRequest\x1a\x0b.file.Empty\x12\x36\n\x07GetFile\x12\x14.file.GetFileRequest\x1a\x15.file.GetFileResponse\x12\x31\n\nRenameFile\x12\x17.file.RenameFileRequest\x1a\n.file.File\x12\x32\n\nDeleteFile\x12\x17.file.DeleteFileRequest\x1a\x0b.file.Empty\x12;\n\tListFiles\x12\x16.file.ListFilesRequest\x1a\x16.file.FileListResponse\x12W\n\x14GetCompressionStatus\x12\x1e.file.CompressionStatusRequest\x1a\x1f.file.CompressionStatusResponse\x12L\n\x15GetCompressedVariants\x12\x18.file.GetVariantsRequest\x1a\x19.file.GetVariantsResponse\x12O\n\x14TriggerRecompression\x12\x1a.file.RecompressionRequest\x1a\x1b.file.RecompressionResponse\x12_\n\x1aGenerateVariantDownloadUrl\x12\x1f.file.VariantDownloadUrlRequest\x1a .file.VariantDownloadUrlResponseb\x06proto3')
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12\x66ile_service.proto\x12\x04\x66ile\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xab\x01\n\x04\x46ile\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tfolder_id\x18\x02 \x01(\t\x12\x11\n\tfile_name\x18\x03 \x01(\t\x12\x11\n\tfile_type\x18\x04 \x01(\t\x12.\n\ncreated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xb7\x02\n\nUploadFile\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tfolder_id\x18\x02 \x01(\t\x12\x0f\n\x07\x66ile_id\x18\x03 \x01(\t\x12\x14\n\x0cstorage_type\x18\x04 \x01(\t\x12\x13\n\x0bstored_name\x18\x05 \x01(\t\x12\x13\n\x0bstored_path\x18\x06 \x01(\t\x12\x11\n\tfile_name\x18\x07 \x01(\t\x12\x11\n\tfile_size\x18\x08 \x01(\x03\x12\x10\n\x08\x66ile_ext\x18\t \x01(\t\x12\x11\n\tmime_type\x18\n \x01(\t\x12\x0e\n\x06status\x18\x0b \x01(\t\x12.\n\ncreated_at\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x9f\x02\n\x11UploadFileRequest\x12\x16\n\tfolder_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tfile_name\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\x0c\x12\x11\n\tfile_type\x18\x04 \x01(\t\x12\x11\n\tmime_type\x18\x05 \x01(\t\x12\x19\n\x0cis_temporary\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x07 \x01(\x05H\x02\x88\x01\x01\x12#\n\x16keep_original_filename\x18\x08 \x01(\x08H\x03\x88\x01\x01\x42\x0c\n\n_folder_idB\x0f\n\r_is_temporaryB\x11\n\x0f_expire_secondsB\x19\n\x17_keep_original_filename\"\xb3\x02\n\x10UploadUrlRequest\x12\x16\n\tfolder_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tfile_name\x18\x02 \x01(\t\x12\x11\n\tfile_type\x18\x03 \x01(\t\x12\x11\n\tmime_type\x18\x04 \x01(\t\x12\x11\n\tfile_size\x18\x05 \x01(\x03\x12\x11\n\tfile_hash\x18\x06 \x01(\t\x12\x19\n\x0cis_temporary\x18\x07 \x01(\x08H\x01\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x08 \x01(\x05H\x02\x88\x01\x01\x12#\n\x16keep_original_filename\x18\t \x01(\x08H\x03\x88\x01\x01\x42\x0c\n\n_folder_idB\x0f\n\r_is_temporaryB\x11\n\x0f_expire_secondsB\x19\n\x17_keep_original_filename\")\n\x16UploadCompletedRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"u\n\x12\x44ownloadUrlRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x13\n\x06is_cdn\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\t\n\x07_is_cdnB\x11\n\x0f_expire_seconds\"\xd4\x01\n\x10ShareLinkRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x11\n\tis_public\x18\x02 \x01(\x08\x12\x14\n\x0c\x61\x63\x63\x65ss_scope\x18\x03 \x01(\t\x12\x1b\n\x0e\x65xpire_seconds\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x17\n\nmax_access\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x1b\n\x0eshare_password\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x11\n\x0f_expire_secondsB\r\n\x0b_max_accessB\x11\n\x0f_share_password\"\x82\x01\n\x10\x46ileVisitRequest\x12\x15\n\rfile_share_id\x18\x01 \x01(\t\x12\x13\n\x0b\x61\x63\x63\x65ss_type\x18\x02 \x01(\t\x12\x17\n\x0f\x61\x63\x63\x65ss_duration\x18\x03 \x01(\x05\x12)\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\"!\n\x0eGetFileRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"6\n\x11RenameFileRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\"$\n\x11\x44\x65leteFileRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"\x8d\x02\n\x10ListFilesRequest\x12\x16\n\tfolder_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tfile_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x11\n\tfile_type\x18\x03 \x03(\t\x12\x1c\n\x0f\x63reated_by_role\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x17\n\ncreated_by\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x16\n\tpage_size\x18\x06 \x01(\x05H\x04\x88\x01\x01\x12\x11\n\x04page\x18\x07 \x01(\x05H\x05\x88\x01\x01\x42\x0c\n\n_folder_idB\x0c\n\n_file_nameB\x12\n\x10_created_by_roleB\r\n\x0b_created_byB\x0c\n\n_page_sizeB\x07\n\x05_page\"{\n\x17\x42\x61tchDownloadUrlRequest\x12\x10\n\x08\x66ile_ids\x18\x01 \x03(\t\x12\x13\n\x06is_cdn\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12\x1b\n\x0e\x65xpire_seconds\x18\x03 \x01(\x05H\x01\x88\x01\x01\x42\t\n\x07_is_cdnB\x11\n\x0f_expire_seconds\"#\n\x10GetGcsUrlRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\")\n\x15\x42\x61tchGetGcsUrlRequest\x12\x10\n\x08\x66ile_ids\x18\x01 \x03(\t\"U\n\x12UploadFileResponse\x12\x18\n\x04\x66ile\x18\x01 \x01(\x0b\x32\n.file.File\x12%\n\x0bupload_file\x18\x02 \x01(\x0b\x32\x10.file.UploadFile\"a\n\x11UploadUrlResponse\x12\x18\n\x04\x66ile\x18\x01 \x01(\x0b\x32\n.file.File\x12%\n\x0bupload_file\x18\x02 \x01(\x0b\x32\x10.file.UploadFile\x12\x0b\n\x03url\x18\x03 \x01(\t\"\"\n\x13\x44ownloadUrlResponse\x12\x0b\n\x03url\x18\x01 \x01(\t\"*\n\x11ShareLinkResponse\x12\x15\n\rfile_share_id\x18\x01 \x01(\t\"-\n\x10\x46ileListResponse\x12\x19\n\x05\x66iles\x18\x01 \x03(\x0b\x32\n.file.File\"g\n\x0fGetFileResponse\x12\x18\n\x04\x66ile\x18\x01 \x01(\x0b\x32\n.file.File\x12*\n\x0bupload_file\x18\x02 \x01(\x0b\x32\x10.file.UploadFileH\x00\x88\x01\x01\x42\x0e\n\x0c_upload_file\"H\n\x18\x42\x61tchDownloadUrlResponse\x12,\n\rdownload_urls\x18\x01 \x03(\x0b\x32\x15.file.DownloadUrlInfo\"`\n\x0f\x44ownloadUrlInfo\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x11\n\tmime_type\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"7\n\x11GetGcsUrlResponse\x12\x0f\n\x07gcs_url\x18\x01 \x01(\t\x12\x11\n\tmime_type\x18\x02 \x01(\t\"<\n\x16\x42\x61tchGetGcsUrlResponse\x12\"\n\x08gcs_urls\x18\x01 \x03(\x0b\x32\x10.file.GcsUrlInfo\"_\n\nGcsUrlInfo\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x0f\n\x07gcs_url\x18\x02 \x01(\t\x12\x11\n\tmime_type\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"+\n\x18\x43ompressionStatusRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\"\x84\x01\n\x19\x43ompressionStatusResponse\x12\x0e\n\x06status\x18\x01 \x01(\t\x12\x1a\n\rerror_message\x18\x02 \x01(\tH\x00\x88\x01\x01\x12)\n\x08variants\x18\x03 \x03(\x0b\x32\x17.file.CompressedVariantB\x10\n\x0e_error_message\"Q\n\x12GetVariantsRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x19\n\x0cvariant_type\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0f\n\r_variant_type\"@\n\x13GetVariantsResponse\x12)\n\x08variants\x18\x01 \x03(\x0b\x32\x17.file.CompressedVariant\"\xc7\x02\n\x11\x43ompressedVariant\x12\x14\n\x0cvariant_name\x18\x01 \x01(\t\x12\x14\n\x0cvariant_type\x18\x02 \x01(\t\x12\x12\n\nmedia_type\x18\x03 \x01(\t\x12\r\n\x05width\x18\x04 \x01(\x05\x12\x0e\n\x06height\x18\x05 \x01(\x05\x12\x11\n\tfile_size\x18\x06 \x01(\x03\x12\x0e\n\x06\x66ormat\x18\x07 \x01(\t\x12\x14\n\x07quality\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x15\n\x08\x64uration\x18\t \x01(\x01H\x01\x88\x01\x01\x12\x14\n\x07\x62itrate\x18\n \x01(\x03H\x02\x88\x01\x01\x12\x10\n\x03\x66ps\x18\x0b \x01(\x05H\x03\x88\x01\x01\x12\x19\n\x11\x63ompression_ratio\x18\x0c \x01(\x01\x12\x13\n\x0bstored_path\x18\r \x01(\tB\n\n\x08_qualityB\x0b\n\t_durationB\n\n\x08_bitrateB\x06\n\x04_fps\"Y\n\x14RecompressionRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x1c\n\x0f\x66orce_reprocess\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x12\n\x10_force_reprocess\"8\n\x15RecompressionResponse\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \x01(\t\"\x92\x01\n\x19VariantDownloadUrlRequest\x12\x0f\n\x07\x66ile_id\x18\x01 \x01(\t\x12\x14\n\x0cvariant_name\x18\x02 \x01(\t\x12\x1b\n\x0e\x65xpire_seconds\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x13\n\x06is_cdn\x18\x04 \x01(\x08H\x01\x88\x01\x01\x42\x11\n\x0f_expire_secondsB\t\n\x07_is_cdn\"\x8c\x01\n\x1aVariantDownloadUrlResponse\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x32\n\x0cvariant_info\x18\x03 \x01(\x0b\x32\x17.file.CompressedVariantH\x01\x88\x01\x01\x42\x08\n\x06_errorB\x0f\n\r_variant_info\"\x07\n\x05\x45mpty2\x87\n\n\x0b\x46ileService\x12?\n\nUploadFile\x12\x17.file.UploadFileRequest\x1a\x18.file.UploadFileResponse\x12\x44\n\x11GenerateUploadUrl\x12\x16.file.UploadUrlRequest\x1a\x17.file.UploadUrlResponse\x12M\n\x1aGenerateResumableUploadUrl\x12\x16.file.UploadUrlRequest\x1a\x17.file.UploadUrlResponse\x12\x43\n\x16\x43onfirmUploadCompleted\x12\x1c.file.UploadCompletedRequest\x1a\x0b.file.Empty\x12J\n\x13GenerateDownloadUrl\x12\x18.file.DownloadUrlRequest\x1a\x19.file.DownloadUrlResponse\x12Y\n\x18\x42\x61tchGenerateDownloadUrl\x12\x1d.file.BatchDownloadUrlRequest\x1a\x1e.file.BatchDownloadUrlResponse\x12<\n\tGetGcsUrl\x12\x16.file.GetGcsUrlRequest\x1a\x17.file.GetGcsUrlResponse\x12K\n\x0e\x42\x61tchGetGcsUrl\x12\x1b.file.BatchGetGcsUrlRequest\x1a\x1c.file.BatchGetGcsUrlResponse\x12\x44\n\x11GenerateShareLink\x12\x16.file.ShareLinkRequest\x1a\x17.file.ShareLinkResponse\x12\x30\n\tVisitFile\x12\x16.file.FileVisitRequest\x1a\x0b.file.Empty\x12\x36\n\x07GetFile\x12\x14.file.GetFileRequest\x1a\x15.file.GetFileResponse\x12\x31\n\nRenameFile\x12\x17.file.RenameFileRequest\x1a\n.file.File\x12\x32\n\nDeleteFile\x12\x17.file.DeleteFileRequest\x1a\x0b.file.Empty\x12;\n\tListFiles\x12\x16.file.ListFilesRequest\x1a\x16.file.FileListResponse\x12W\n\x14GetCompressionStatus\x12\x1e.file.CompressionStatusRequest\x1a\x1f.file.CompressionStatusResponse\x12L\n\x15GetCompressedVariants\x12\x18.file.GetVariantsRequest\x1a\x19.file.GetVariantsResponse\x12O\n\x14TriggerRecompression\x12\x1a.file.RecompressionRequest\x1a\x1b.file.RecompressionResponse\x12_\n\x1aGenerateVariantDownloadUrl\x12\x1f.file.VariantDownloadUrlRequest\x1a .file.VariantDownloadUrlResponseb\x06proto3')
30
30
 
31
31
  _globals = globals()
32
32
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -78,33 +78,33 @@ if not _descriptor._USE_C_DESCRIPTORS:
78
78
  _globals['_BATCHDOWNLOADURLRESPONSE']._serialized_start=2713
79
79
  _globals['_BATCHDOWNLOADURLRESPONSE']._serialized_end=2785
80
80
  _globals['_DOWNLOADURLINFO']._serialized_start=2787
81
- _globals['_DOWNLOADURLINFO']._serialized_end=2864
82
- _globals['_GETGCSURLRESPONSE']._serialized_start=2866
83
- _globals['_GETGCSURLRESPONSE']._serialized_end=2921
84
- _globals['_BATCHGETGCSURLRESPONSE']._serialized_start=2923
85
- _globals['_BATCHGETGCSURLRESPONSE']._serialized_end=2983
86
- _globals['_GCSURLINFO']._serialized_start=2985
87
- _globals['_GCSURLINFO']._serialized_end=3080
88
- _globals['_COMPRESSIONSTATUSREQUEST']._serialized_start=3082
89
- _globals['_COMPRESSIONSTATUSREQUEST']._serialized_end=3125
90
- _globals['_COMPRESSIONSTATUSRESPONSE']._serialized_start=3128
91
- _globals['_COMPRESSIONSTATUSRESPONSE']._serialized_end=3260
92
- _globals['_GETVARIANTSREQUEST']._serialized_start=3262
93
- _globals['_GETVARIANTSREQUEST']._serialized_end=3343
94
- _globals['_GETVARIANTSRESPONSE']._serialized_start=3345
95
- _globals['_GETVARIANTSRESPONSE']._serialized_end=3409
96
- _globals['_COMPRESSEDVARIANT']._serialized_start=3412
97
- _globals['_COMPRESSEDVARIANT']._serialized_end=3739
98
- _globals['_RECOMPRESSIONREQUEST']._serialized_start=3741
99
- _globals['_RECOMPRESSIONREQUEST']._serialized_end=3830
100
- _globals['_RECOMPRESSIONRESPONSE']._serialized_start=3832
101
- _globals['_RECOMPRESSIONRESPONSE']._serialized_end=3888
102
- _globals['_VARIANTDOWNLOADURLREQUEST']._serialized_start=3891
103
- _globals['_VARIANTDOWNLOADURLREQUEST']._serialized_end=4037
104
- _globals['_VARIANTDOWNLOADURLRESPONSE']._serialized_start=4040
105
- _globals['_VARIANTDOWNLOADURLRESPONSE']._serialized_end=4180
106
- _globals['_EMPTY']._serialized_start=4182
107
- _globals['_EMPTY']._serialized_end=4189
108
- _globals['_FILESERVICE']._serialized_start=4192
109
- _globals['_FILESERVICE']._serialized_end=5479
81
+ _globals['_DOWNLOADURLINFO']._serialized_end=2883
82
+ _globals['_GETGCSURLRESPONSE']._serialized_start=2885
83
+ _globals['_GETGCSURLRESPONSE']._serialized_end=2940
84
+ _globals['_BATCHGETGCSURLRESPONSE']._serialized_start=2942
85
+ _globals['_BATCHGETGCSURLRESPONSE']._serialized_end=3002
86
+ _globals['_GCSURLINFO']._serialized_start=3004
87
+ _globals['_GCSURLINFO']._serialized_end=3099
88
+ _globals['_COMPRESSIONSTATUSREQUEST']._serialized_start=3101
89
+ _globals['_COMPRESSIONSTATUSREQUEST']._serialized_end=3144
90
+ _globals['_COMPRESSIONSTATUSRESPONSE']._serialized_start=3147
91
+ _globals['_COMPRESSIONSTATUSRESPONSE']._serialized_end=3279
92
+ _globals['_GETVARIANTSREQUEST']._serialized_start=3281
93
+ _globals['_GETVARIANTSREQUEST']._serialized_end=3362
94
+ _globals['_GETVARIANTSRESPONSE']._serialized_start=3364
95
+ _globals['_GETVARIANTSRESPONSE']._serialized_end=3428
96
+ _globals['_COMPRESSEDVARIANT']._serialized_start=3431
97
+ _globals['_COMPRESSEDVARIANT']._serialized_end=3758
98
+ _globals['_RECOMPRESSIONREQUEST']._serialized_start=3760
99
+ _globals['_RECOMPRESSIONREQUEST']._serialized_end=3849
100
+ _globals['_RECOMPRESSIONRESPONSE']._serialized_start=3851
101
+ _globals['_RECOMPRESSIONRESPONSE']._serialized_end=3907
102
+ _globals['_VARIANTDOWNLOADURLREQUEST']._serialized_start=3910
103
+ _globals['_VARIANTDOWNLOADURLREQUEST']._serialized_end=4056
104
+ _globals['_VARIANTDOWNLOADURLRESPONSE']._serialized_start=4059
105
+ _globals['_VARIANTDOWNLOADURLRESPONSE']._serialized_end=4199
106
+ _globals['_EMPTY']._serialized_start=4201
107
+ _globals['_EMPTY']._serialized_end=4208
108
+ _globals['_FILESERVICE']._serialized_start=4211
109
+ _globals['_FILESERVICE']._serialized_end=5498
110
110
  # @@protoc_insertion_point(module_scope)