qiniu / rust-sdk

Generic Qiniu Resource Storage SDK
MIT License
26 stars 7 forks source link

资源列举接口返回标记有marker,但ListBuilder获取不到返回json中的marker参数 #13

Closed zy97 closed 2 years ago

zy97 commented 2 years ago

想要获取这个marker必须通过httpclient模块自己获取吗 ListBuilder同步获取打印结构体,里面的marker字段也是没有任何值的 ListIter { params: ListParams { bucket: Bucket(BucketInner { name: "xxx", objects_manager: ObjectsManager(ObjectsManagerInner { client: Client(HttpClient { inner: HttpClientInner { use_https: true, appended_user_agent: "", http_caller: Client { client: Agent { config: AgentConfig { proxy: None, timeout_connect: Some(30s), timeout_read: None, timeout_write: None, timeout: None, https_only: false, no_delay: true, redirects: 5, redirect_auth_headers: Never, user_agent: "ureq/2.5.0", tls_config: TlsConfig }, state: AgentState { pool: ConnectionPool { max_idle: 100, max_idle_per_host: 1, connections: 0 }, resolver: ArcResolver(...), .. } } }, request_retrier: LimitedRetrier { retries: 2, target: LimitCurrentEndpoint, retrier: ErrorRetrier }, backoff: LimitedBackoff { max_backoff: 300s, min_backoff: 0ns, base_backoff: RandomizedBackoff { minification: Ratio { numer: 1, denom: 2 }, magnification: Ratio { numer: 3, denom: 2 }, base_backoff: ExponentialBackoff { base_number: 2, base_delay: 100ms } } }, chooser: NeverEmptyHandedChooser { random_choose_ratio: Ratio { numer: 1, denom: 2 }, inner_chooser: ShuffledChooser { chooser: SubnetChooser { inner: SubnetChooserInner { blacklist: {}, lock: Mutex { data: LockedData { last_shrink_at: Instant { t: 698596.3511853s } }, poisoned: false, .. }, block_duration: 30s, shrink_interval: 120s, ipv4_netmask_prefix_length: 24, ipv6_netmask_prefix_length: 64 } } } }, resolver: ShuffledResolver { base_resolver: CachedResolver { resolver: ChainedResolver { resolvers: [TimeoutResolver { inner: TimeoutResolverInner { timeout: 5s, resolver: SimpleResolver } }] }, cache: Cache { inner: CacheInner { cache: OnceCell(Uninit), cache_lifetime: 120s, shrink_interval: 120s } } } }, callbacks: Callbacks { on_uploading_progress: 0, on_receive_response_status: 0, on_receive_response_header: 0, on_to_resolve_domain: 0, on_domain_resolved: 0, on_to_choose_ips: 0, on_ips_chosen: 0, on_before_request_signed: 0, on_after_request_signed: 0, on_response: 0, on_error: 0, on_before_backoff: 0, on_after_backoff: 0 } } }), credential: Credential { access_key: "xxxx", secret_key: "xxxx" }, queryer: BucketRegionsQueryer { http_client: HttpClient { inner: HttpClientInner { use_https: true, appended_user_agent: "", http_caller: Client { client: Agent { config: AgentConfig { proxy: None, timeout_connect: Some(30s), timeout_read: None, timeout_write: None, timeout: None, https_only: false, no_delay: true, redirects: 5, redirect_auth_headers: Never, user_agent: "ureq/2.5.0", tls_config: TlsConfig }, state: AgentState { pool: ConnectionPool { max_idle: 100, max_idle_per_host: 1, connections: 0 }, resolver: ArcResolver(...), .. } } }, request_retrier: LimitedRetrier { retries: 2, target: LimitCurrentEndpoint, retrier: ErrorRetrier }, backoff: LimitedBackoff { max_backoff: 300s, min_backoff: 0ns, base_backoff: RandomizedBackoff { minification: Ratio { numer: 1, denom: 2 }, magnification: Ratio { numer: 3, denom: 2 }, base_backoff: ExponentialBackoff { base_number: 2, base_delay: 100ms } } }, chooser: NeverEmptyHandedChooser { random_choose_ratio: Ratio { numer: 1, denom: 2 }, inner_chooser: ShuffledChooser { chooser: SubnetChooser { inner: SubnetChooserInner { blacklist: {}, lock: Mutex { data: LockedData { last_shrink_at: Instant { t: 698596.3512441s } }, poisoned: false, .. }, block_duration: 30s, shrink_interval: 120s, ipv4_netmask_prefix_length: 24, ipv6_netmask_prefix_length: 64 } } } }, resolver: ShuffledResolver { base_resolver: CachedResolver { resolver: ChainedResolver { resolvers: [TimeoutResolver { inner: TimeoutResolverInner { timeout: 5s, resolver: SimpleResolver } }] }, cache: Cache { inner: CacheInner { cache: OnceCell(Uninit), cache_lifetime: 120s, shrink_interval: 120s } } } }, callbacks: Callbacks { on_uploading_progress: 0, on_receive_response_status: 0, on_receive_response_header: 0, on_to_resolve_domain: 0, on_domain_resolved: 0, on_to_choose_ips: 0, on_ips_chosen: 0, on_before_request_signed: 0, on_after_request_signed: 0, on_response: 0, on_error: 0, on_before_backoff: 0, on_after_backoff: 0 } } }, uc_endpoints: Endpoints { preferred: [DomainWithPort(DomainWithPort { domain: "uc.qbox.me", port: None }), DomainWithPort(DomainWithPort { domain: "kodo-config.qiniuapi.com", port: None }), DomainWithPort(DomainWithPort { domain: "api.qiniu.com", port: None })], alternative: [], md5: OnceCell(Uninit) }, cache: RegionsCache { cache: Cache { inner: CacheInner { cache: OnceCell(Uninit), cache_lifetime: 86400s, shrink_interval: 86400s } } } } }), region_provider: None, bucket_regions_provider: OnceCell(Uninit) }), prefix: None, limit: Limit { limit: Some(100), max: Some(1000) }, marker: Original(None), need_parts: true }, version: V1(Buffer { buffer: [] }) } 1:ListIter { params: ListParams { bucket: Bucket(BucketInner { name: "xxx", objects_manager: ObjectsManager(ObjectsManagerInner { client: Client(HttpClient { inner: HttpClientInner { use_https: true, appended_user_agent: "", http_caller: Client { client: Agent { config: AgentConfig { proxy: None, timeout_connect: Some(30s), timeout_read: None, timeout_write: None, timeout: None, https_only: false, no_delay: true, redirects: 5, redirect_auth_headers: Never, user_agent: "ureq/2.5.0", tls_config: TlsConfig }, state: AgentState { pool: ConnectionPool { max_idle: 100, max_idle_per_host: 1, connections: 0 }, resolver: ArcResolver(...), .. } } }, request_retrier: LimitedRetrier { retries: 2, target: LimitCurrentEndpoint, retrier: ErrorRetrier }, backoff: LimitedBackoff { max_backoff: 300s, min_backoff: 0ns, base_backoff: RandomizedBackoff { minification: Ratio { numer: 1, denom: 2 }, magnification: Ratio { numer: 3, denom: 2 }, base_backoff: ExponentialBackoff { base_number: 2, base_delay: 100ms } } }, chooser: NeverEmptyHandedChooser { random_choose_ratio: Ratio { numer: 1, denom: 2 }, inner_chooser: ShuffledChooser { chooser: SubnetChooser { inner: SubnetChooserInner { blacklist: {}, lock: Mutex { data: LockedData { last_shrink_at: Instant { t: 698596.3504361s } }, poisoned: false, .. }, block_duration: 30s, shrink_interval: 120s, ipv4_netmask_prefix_length: 24, ipv6_netmask_prefix_length: 64 } } } }, resolver: ShuffledResolver { base_resolver: CachedResolver { resolver: ChainedResolver { resolvers: [TimeoutResolver { inner: TimeoutResolverInner { timeout: 5s, resolver: SimpleResolver } }] }, cache: Cache { inner: CacheInner { cache: OnceCell(Uninit), cache_lifetime: 120s, shrink_interval: 120s } } } }, callbacks: Callbacks { on_uploading_progress: 0, on_receive_response_status: 0, on_receive_response_header: 0, on_to_resolve_domain: 0, on_domain_resolved: 0, on_to_choose_ips: 0, on_ips_chosen: 0, on_before_request_signed: 0, on_after_request_signed: 0, on_response: 0, on_error: 0, on_before_backoff: 0, on_after_backoff: 0 } } }), credential: Credential { access_key: "xxx", secret_key: "xxx" }, queryer: BucketRegionsQueryer { http_client: HttpClient { inner: HttpClientInner { use_https: true, appended_user_agent: "", http_caller: Client { client: Agent { config: AgentConfig { proxy: None, timeout_connect: Some(30s), timeout_read: None, timeout_write: None, timeout: None, https_only: false, no_delay: true, redirects: 5, redirect_auth_headers: Never, user_agent: "ureq/2.5.0", tls_config: TlsConfig }, state: AgentState { pool: ConnectionPool { max_idle: 100, max_idle_per_host: 1, connections: 0 }, resolver: ArcResolver(...), .. } } }, request_retrier: LimitedRetrier { retries: 2, target: LimitCurrentEndpoint, retrier: ErrorRetrier }, backoff: LimitedBackoff { max_backoff: 300s, min_backoff: 0ns, base_backoff: RandomizedBackoff { minification: Ratio { numer: 1, denom: 2 }, magnification: Ratio { numer: 3, denom: 2 }, base_backoff: ExponentialBackoff { base_number: 2, base_delay: 100ms } } }, chooser: NeverEmptyHandedChooser { random_choose_ratio: Ratio { numer: 1, denom: 2 }, inner_chooser: ShuffledChooser { chooser: SubnetChooser { inner: SubnetChooserInner { blacklist: {}, lock: Mutex { data: LockedData { last_shrink_at: Instant { t: 698596.3511424s } }, poisoned: false, .. }, block_duration: 30s, shrink_interval: 120s, ipv4_netmask_prefix_length: 24, ipv6_netmask_prefix_length: 64 } } } }, resolver: ShuffledResolver { base_resolver: CachedResolver { resolver: ChainedResolver { resolvers: [TimeoutResolver { inner: TimeoutResolverInner { timeout: 5s, resolver: SimpleResolver } }] }, cache: Cache { inner: CacheInner { cache: OnceCell(Uninit), cache_lifetime: 120s, shrink_interval: 120s } } } }, callbacks: Callbacks { on_uploading_progress: 0, on_receive_response_status: 0, on_receive_response_header: 0, on_to_resolve_domain: 0, on_domain_resolved: 0, on_to_choose_ips: 0, on_ips_chosen: 0, on_before_request_signed: 0, on_after_request_signed: 0, on_response: 0, on_error: 0, on_before_backoff: 0, on_after_backoff: 0 } } }, uc_endpoints: Endpoints { preferred: [DomainWithPort(DomainWithPort { domain: "uc.qbox.me", port: None }), DomainWithPort(DomainWithPort { domain: "kodo-config.qiniuapi.com", port: None }), DomainWithPort(DomainWithPort { domain: "api.qiniu.com", port: None })], alternative: [], md5: OnceCell([29, 245, 236, 128, 53, 249, 4, 10, 0, 68, 183, 59, 151, 130, 159, 61]) }, cache: RegionsCache { cache: Cache { inner: CacheInner { cache: OnceCell(Uninit), cache_lifetime: 86400s, shrink_interval: 86400s } } } } }), region_provider: None, bucket_regions_provider: OnceCell(Uninit) }), prefix: None, limit: Limit { limit: Some(100), max: Some(1000) }, marker: Original(None), need_parts: true }, version: V1(Buffer { buffer: [] }) } Ok(ListedObjectEntry(Object({"fsize": Number(6144), "hash": String("FnsugUUK2Hy8SRyacL1BOVHw6gfY"), "key": String(".xls"), "mimeType": String("application/vnd.ms-excel"), "putTime": Number(15235083859960921), "status": Number(0), "type": Number(0)}))) image

bachue commented 2 years ago

可以增加这方面的接口

bachue commented 2 years ago

@zy97 已经添加了 https://docs.rs/qiniu-objects-manager/0.1.4/qiniu_objects_manager/struct.ListIter.html#method.marker https://docs.rs/qiniu-objects-manager/0.1.4/qiniu_objects_manager/struct.ListStream.html#method.marker