@@ -45,7 +45,8 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
45
45
const std::string& shareDirectoryUrl,
46
46
std::shared_ptr<StorageSharedKeyCredential> credential,
47
47
const ShareClientOptions& options)
48
- : m_shareDirectoryUrl(shareDirectoryUrl)
48
+ : m_shareDirectoryUrl(shareDirectoryUrl), m_allowTrailingDot(options.AllowTrailingDot),
49
+ m_allowSourceTrailingDot (options.AllowSourceTrailingDot)
49
50
{
50
51
ShareClientOptions newOptions = options;
51
52
newOptions.PerRetryPolicies .emplace_back (
@@ -67,7 +68,8 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
67
68
ShareDirectoryClient::ShareDirectoryClient (
68
69
const std::string& shareDirectoryUrl,
69
70
const ShareClientOptions& options)
70
- : m_shareDirectoryUrl(shareDirectoryUrl)
71
+ : m_shareDirectoryUrl(shareDirectoryUrl), m_allowTrailingDot(options.AllowTrailingDot),
72
+ m_allowSourceTrailingDot(options.AllowSourceTrailingDot)
71
73
{
72
74
std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>> perRetryPolicies;
73
75
std::vector<std::unique_ptr<Azure::Core::Http::Policies::HttpPolicy>> perOperationPolicies;
@@ -87,14 +89,20 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
87
89
{
88
90
auto builder = m_shareDirectoryUrl;
89
91
builder.AppendPath (_internal::UrlEncodePath (subdirectoryName));
90
- return ShareDirectoryClient (builder, m_pipeline);
92
+ ShareDirectoryClient subdirectoryClient (builder, m_pipeline);
93
+ subdirectoryClient.m_allowTrailingDot = m_allowTrailingDot;
94
+ subdirectoryClient.m_allowSourceTrailingDot = m_allowSourceTrailingDot;
95
+ return subdirectoryClient;
91
96
}
92
97
93
98
ShareFileClient ShareDirectoryClient::GetFileClient (const std::string& fileName) const
94
99
{
95
100
auto builder = m_shareDirectoryUrl;
96
101
builder.AppendPath (_internal::UrlEncodePath (fileName));
97
- return ShareFileClient (builder, m_pipeline);
102
+ ShareFileClient fileClient (builder, m_pipeline);
103
+ fileClient.m_allowTrailingDot = m_allowTrailingDot;
104
+ fileClient.m_allowSourceTrailingDot = m_allowSourceTrailingDot;
105
+ return fileClient;
98
106
}
99
107
100
108
ShareDirectoryClient ShareDirectoryClient::WithShareSnapshot (
@@ -163,6 +171,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
163
171
{
164
172
protocolLayerOptions.FilePermission = std::string (FileInheritPermission);
165
173
}
174
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
166
175
auto result = _detail::DirectoryClient::Create (
167
176
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
168
177
Models::CreateDirectoryResult ret;
@@ -244,11 +253,15 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
244
253
{
245
254
protocolLayerOptions.FilePermissionKey = options.SmbProperties .PermissionKey ;
246
255
}
256
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
257
+ protocolLayerOptions.AllowSourceTrailingDot = m_allowSourceTrailingDot;
247
258
248
259
auto response = _detail::FileClient::Rename (
249
260
*m_pipeline, destinationFileUrl, protocolLayerOptions, context);
250
261
251
262
auto renamedFileClient = ShareFileClient (destinationFileUrl, m_pipeline);
263
+ renamedFileClient.m_allowTrailingDot = m_allowTrailingDot;
264
+ renamedFileClient.m_allowSourceTrailingDot = m_allowSourceTrailingDot;
252
265
return Azure::Response<ShareFileClient>(
253
266
std::move (renamedFileClient), std::move (response.RawResponse ));
254
267
}
@@ -300,13 +313,17 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
300
313
{
301
314
protocolLayerOptions.FilePermissionKey = options.SmbProperties .PermissionKey ;
302
315
}
316
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
317
+ protocolLayerOptions.AllowSourceTrailingDot = m_allowSourceTrailingDot;
303
318
304
319
auto response = _detail::DirectoryClient::Rename (
305
320
*m_pipeline, destinationDirectoryUrl, protocolLayerOptions, context);
306
321
307
- auto renamedFileClient = ShareDirectoryClient (destinationDirectoryUrl, m_pipeline);
322
+ auto renamedSubdirectoryClient = ShareDirectoryClient (destinationDirectoryUrl, m_pipeline);
323
+ renamedSubdirectoryClient.m_allowTrailingDot = m_allowTrailingDot;
324
+ renamedSubdirectoryClient.m_allowSourceTrailingDot = m_allowSourceTrailingDot;
308
325
return Azure::Response<ShareDirectoryClient>(
309
- std::move (renamedFileClient ), std::move (response.RawResponse ));
326
+ std::move (renamedSubdirectoryClient ), std::move (response.RawResponse ));
310
327
}
311
328
312
329
Azure::Response<Models::DeleteDirectoryResult> ShareDirectoryClient::Delete (
@@ -315,6 +332,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
315
332
{
316
333
(void )options;
317
334
auto protocolLayerOptions = _detail::DirectoryClient::DeleteDirectoryOptions ();
335
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
318
336
auto result = _detail::DirectoryClient::Delete (
319
337
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
320
338
Models::DeleteDirectoryResult ret;
@@ -351,6 +369,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
351
369
{
352
370
(void )options;
353
371
auto protocolLayerOptions = _detail::DirectoryClient::GetDirectoryPropertiesOptions ();
372
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
354
373
return _detail::DirectoryClient::GetProperties (
355
374
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
356
375
}
@@ -401,6 +420,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
401
420
{
402
421
protocolLayerOptions.FilePermission = FilePreserveSmbProperties;
403
422
}
423
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
404
424
return _detail::DirectoryClient::SetProperties (
405
425
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
406
426
}
@@ -414,6 +434,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
414
434
auto protocolLayerOptions = _detail::DirectoryClient::SetDirectoryMetadataOptions ();
415
435
protocolLayerOptions.Metadata
416
436
= std::map<std::string, std::string>(metadata.begin (), metadata.end ());
437
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
417
438
return _detail::DirectoryClient::SetMetadata (
418
439
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
419
440
}
@@ -429,6 +450,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
429
450
protocolLayerOptions.MaxResults = options.PageSizeHint ;
430
451
protocolLayerOptions.Include = options.Include ;
431
452
protocolLayerOptions.IncludeExtendedInfo = options.IncludeExtendedInfo ;
453
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
432
454
auto response = _detail::DirectoryClient::ListFilesAndDirectoriesSegment (
433
455
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
434
456
@@ -499,6 +521,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
499
521
protocolLayerOptions.Marker = options.ContinuationToken ;
500
522
protocolLayerOptions.MaxResults = options.PageSizeHint ;
501
523
protocolLayerOptions.Recursive = options.Recursive ;
524
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
502
525
auto response = _detail::DirectoryClient::ListHandles (
503
526
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
504
527
@@ -545,6 +568,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
545
568
(void )options;
546
569
auto protocolLayerOptions = _detail::DirectoryClient::ForceDirectoryCloseHandlesOptions ();
547
570
protocolLayerOptions.HandleId = handleId;
571
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
548
572
auto result = _detail::DirectoryClient::ForceCloseHandles (
549
573
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
550
574
Models::ForceCloseDirectoryHandleResult ret;
@@ -560,6 +584,7 @@ namespace Azure { namespace Storage { namespace Files { namespace Shares {
560
584
protocolLayerOptions.HandleId = FileAllHandles;
561
585
protocolLayerOptions.Marker = options.ContinuationToken ;
562
586
protocolLayerOptions.Recursive = options.Recursive ;
587
+ protocolLayerOptions.AllowTrailingDot = m_allowTrailingDot;
563
588
auto response = _detail::DirectoryClient::ForceCloseHandles (
564
589
*m_pipeline, m_shareDirectoryUrl, protocolLayerOptions, context);
565
590
0 commit comments