Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storage tables implementation #5137

Merged
merged 227 commits into from
Jan 12, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
227 commits
Select commit Hold shift + click to select a range
1373a5f
dss
gearama Sep 20, 2023
a36fa1f
Merge branch 'main' of https://github.com/gearama/azure-sdk-for-cpp i…
gearama Oct 2, 2023
da70d72
first pass at a client and tests
gearama Oct 5, 2023
7958347
constructors work
gearama Oct 9, 2023
912d69b
working request, need to fix the response parsing
gearama Oct 11, 2023
301e0f1
basic tests working for service client
gearama Oct 12, 2023
c6a3a65
refactored the constructors
gearama Oct 12, 2023
9c42788
merge main
gearama Oct 13, 2023
326e888
Merge branch 'main' of https://github.com/gearama/azure-sdk-for-cpp i…
gearama Oct 13, 2023
0dd783f
testproxy and tests
gearama Oct 16, 2023
b186f7a
format file
gearama Oct 16, 2023
775b95e
got client and one API working
gearama Oct 17, 2023
c15971d
list working
gearama Oct 17, 2023
8648540
all apis recorded
gearama Oct 17, 2023
5821d08
new assets.json
gearama Oct 18, 2023
7599d6c
merge from main
gearama Oct 18, 2023
6384947
assets.json regen
gearama Oct 18, 2023
0c33b9f
format json
gearama Oct 18, 2023
861aab0
adding word to cspell
gearama Oct 18, 2023
4d28554
fix build issues
gearama Oct 18, 2023
2e6e8b5
fix one more break
gearama Oct 18, 2023
b40fae8
typo
gearama Oct 18, 2023
82ade61
clangs
gearama Oct 18, 2023
7c93ec1
one more issue
gearama Oct 18, 2023
16f817c
more fixezez
gearama Oct 18, 2023
107821c
regen recordings
gearama Oct 18, 2023
0cb6e05
try again
gearama Oct 19, 2023
3551b54
merge main
gearama Oct 19, 2023
b9f25bf
clangs
gearama Oct 19, 2023
68bb829
clangs again
gearama Oct 19, 2023
e5c9fc3
new assets
gearama Oct 19, 2023
0e27832
new test proxy
gearama Oct 20, 2023
65e3f9e
main merge
gearama Oct 20, 2023
a8a6071
regen tests based on new merge
gearama Oct 20, 2023
9fcd0a3
hmmm
gearama Oct 23, 2023
35fc38f
restore
gearama Oct 25, 2023
988d181
add debug env for test proxy
gearama Oct 25, 2023
8e0d3c6
merge main
gearama Oct 25, 2023
7f26b74
resync cmake presets from main
gearama Oct 25, 2023
aad5112
gor get and set working
gearama Oct 27, 2023
b3c5406
get stats
gearama Oct 27, 2023
ea1651a
table client and create
gearama Oct 31, 2023
3911a15
delete
gearama Oct 31, 2023
d969432
get/set acls
gearama Nov 1, 2023
94a3468
list tables
gearama Nov 3, 2023
5c4d50f
some cleanup
gearama Nov 3, 2023
dfef6e0
Create /update/merge/delete
gearama Nov 5, 2023
fcd461f
upsert
gearama Nov 6, 2023
416f642
query entities
gearama Nov 7, 2023
2c01bb2
merge from main
gearama Nov 7, 2023
0eccc33
merge main
gearama Nov 8, 2023
74b7db9
generated tests
gearama Nov 8, 2023
f215580
clangs
gearama Nov 8, 2023
a0cdc31
some fixes
gearama Nov 8, 2023
5edd4cd
some more errors
gearama Nov 8, 2023
0fec4a5
cspells
gearama Nov 8, 2023
5ad4434
got transaction API working
gearama Nov 9, 2023
b314f02
transactions working , need to parse response
gearama Nov 10, 2023
6ab9558
get data out of the response
gearama Nov 12, 2023
3806958
Merge branch 'main' into testBuild2
gearama Nov 15, 2023
9456b2b
clangs
gearama Nov 15, 2023
9ec1ecf
batch1
gearama Nov 15, 2023
c134849
regen tests
gearama Nov 15, 2023
063090e
part 2
gearama Nov 15, 2023
4e7fcec
batch3
gearama Nov 15, 2023
a4c0eee
batch4
gearama Nov 15, 2023
1f33523
clangs
gearama Nov 15, 2023
0292dc9
regen tests
gearama Nov 15, 2023
4e140c6
regen tests
gearama Nov 15, 2023
e774460
try again
gearama Nov 15, 2023
e5ecf17
live only
gearama Nov 15, 2023
56231b1
added some more tests for the transaction body
gearama Nov 16, 2023
c812039
small refactor for tests
gearama Nov 16, 2023
44653ca
oops
gearama Nov 16, 2023
e74e15a
some oter update
gearama Nov 16, 2023
5cca489
darn includes
gearama Nov 16, 2023
7a2d0cb
sddfsd
gearama Nov 16, 2023
6ca1899
erorr fix
gearama Nov 16, 2023
5107f9a
key clients
gearama Nov 21, 2023
14669be
sas
gearama Nov 29, 2023
45bf172
small cleanup
gearama Nov 29, 2023
464a4a9
All tests passing
gearama Dec 1, 2023
a488cd8
test recordings
gearama Dec 4, 2023
6c09e6e
Merge branch 'main' into testBuild2
gearama Dec 4, 2023
b26749d
clangs
gearama Dec 4, 2023
3c6d8f2
missing ENV for test
gearama Dec 4, 2023
ec82c3e
attempt1
gearama Dec 4, 2023
393b85e
retry
gearama Dec 4, 2023
05e563b
couple recordings
gearama Dec 4, 2023
3a3bd66
regen some tests
gearama Dec 5, 2023
a228526
clangs
gearama Dec 5, 2023
998b47c
again
gearama Dec 5, 2023
54647b4
again
gearama Dec 5, 2023
2c6d13d
comments
gearama Dec 6, 2023
f43ebbe
comments
gearama Dec 6, 2023
97c5d6d
headers and footers
gearama Dec 7, 2023
c21ae25
some cleanjup
gearama Dec 7, 2023
cf42a15
Move folders step1
gearama Dec 8, 2023
494a587
revert assets and test resources in storage
gearama Dec 8, 2023
b137c82
revert to main
gearama Dec 8, 2023
592506f
cspell
gearama Dec 8, 2023
992423d
readme
gearama Dec 8, 2023
f55695e
comments
gearama Dec 8, 2023
c29d6e8
Merge branch 'main' of https://github.com/gearama/azure-sdk-for-cpp i…
gearama Dec 8, 2023
46819a8
revert ci.yml
gearama Dec 8, 2023
9426cd9
liveonly test
gearama Dec 8, 2023
ec055dc
clangs
gearama Dec 8, 2023
14436d0
camke
gearama Dec 8, 2023
779f8bb
ci2
gearama Dec 8, 2023
ec38239
try again
gearama Dec 8, 2023
c57a5df
fdssfs
gearama Dec 8, 2023
4cd3987
fdsfsd
gearama Dec 8, 2023
c4127ae
some cleanup
gearama Dec 8, 2023
1228ec8
dasda
gearama Dec 8, 2023
4112448
dsdsds
gearama Dec 8, 2023
d97852f
asda
gearama Dec 8, 2023
93ac78e
assets
gearama Dec 8, 2023
1e2c26d
comments
gearama Dec 11, 2023
58a5f26
a few more bits and pieces
gearama Dec 11, 2023
afa4b7d
some other updates for cspell
gearama Dec 11, 2023
5518783
typo
gearama Dec 11, 2023
7be0a5d
more docs
gearama Dec 11, 2023
21c6072
spell
gearama Dec 11, 2023
bffbaea
another doc error
gearama Dec 11, 2023
7cce587
clangs docs
gearama Dec 11, 2023
02e4672
docs
gearama Dec 11, 2023
f0db83f
test cov
gearama Dec 11, 2023
78aa67f
dasdas
gearama Dec 11, 2023
b624ab7
hg
gearama Dec 11, 2023
8b4a414
stress test
gearama Dec 12, 2023
0a52782
cspell
gearama Dec 12, 2023
3a7b25c
Update sdk/storage/azure-storage-common/test/ut/CMakeLists.txt
gearama Dec 13, 2023
f20ca0b
Update sdk/storage/azure-storage-common/test/ut/shared_key_policy_lit…
gearama Dec 13, 2023
01b63cf
Update sdk/tables/azure-data-tables/CHANGELOG.md
gearama Dec 13, 2023
8306770
Update sdk/tables/azure-data-tables/CMakeLists.txt
gearama Dec 13, 2023
8557465
Update sdk/tables/azure-data-tables/test/stress/scenarios-matrix.yaml
gearama Dec 13, 2023
e817977
Update sdk/tables/azure-data-tables/test/stress/Dockerfile
gearama Dec 13, 2023
028cd64
PR comments
gearama Dec 13, 2023
c88eebc
respurces cleanup
gearama Dec 13, 2023
7351da0
cleanup 2
gearama Dec 13, 2023
cf24df2
respurce fix
gearama Dec 13, 2023
448a32e
revddrt
gearama Dec 13, 2023
ec3c87f
weqq
gearama Dec 13, 2023
d2dc4d6
oops
gearama Dec 13, 2023
f3034ba
try again
gearama Dec 13, 2023
04a8d3c
Update sdk/tables/azure-data-tables/vcpkg/vcpkg.json
gearama Dec 14, 2023
e47025a
try
gearama Dec 14, 2023
c4efed7
test fix
gearama Dec 14, 2023
2b492f5
samples
gearama Dec 14, 2023
4567d98
readmes
gearama Dec 15, 2023
c78119b
readmes
gearama Dec 15, 2023
d70c114
readmes
gearama Dec 15, 2023
07577b9
api view settings
gearama Dec 15, 2023
28cd39b
qualify friends
gearama Dec 15, 2023
270a109
try
gearama Dec 15, 2023
d0e4b86
moving usings
gearama Dec 15, 2023
0fae379
refactor for API View tool
gearama Dec 15, 2023
2b04a0d
some more
gearama Dec 15, 2023
e6e7e5f
Merge branch 'main' into testBuild2
gearama Dec 16, 2023
303cf68
clangs
gearama Dec 18, 2023
5e16cb2
Update sdk/tables/README.md
gearama Dec 18, 2023
e3143bb
Update sdk/core/azure-core/inc/azure/core/http/http.hpp
gearama Dec 18, 2023
1890ed0
Update sdk/core/azure-core/src/http/transport_policy.cpp
gearama Dec 18, 2023
b19b7f7
Update sdk/tables/azure-data-tables/inc/azure/data/tables/rest_client…
gearama Dec 18, 2023
e7a7084
Update sdk/tables/azure-data-tables/CHANGELOG.md
gearama Dec 18, 2023
3badb0f
Update sdk/tables/azure-data-tables/test/ut/CMakeLists.txt
gearama Dec 18, 2023
40854af
Update sdk/tables/azure-data-tables/src/rest_client.cpp
gearama Dec 18, 2023
e9313e4
some comments
gearama Dec 18, 2023
fd9ba18
commit thingy
gearama Dec 18, 2023
1eeab09
comments
gearama Dec 18, 2023
5d4dce8
comments part N
gearama Dec 18, 2023
423c775
clang
gearama Dec 18, 2023
6cd43da
try now
gearama Dec 19, 2023
1546939
clang
gearama Dec 19, 2023
53302cf
comments
gearama Dec 19, 2023
6c119aa
update file names
gearama Dec 19, 2023
c0e42a0
update test to check for the final signature
gearama Dec 19, 2023
2f6106f
ccc
gearama Dec 19, 2023
6a890db
rename shared key policy lite
gearama Dec 20, 2023
af625a9
cleanup some includes
gearama Dec 20, 2023
d05be3a
add a couple more tests
gearama Dec 28, 2023
08f92c4
small update
gearama Dec 28, 2023
25b33fa
clang
gearama Dec 28, 2023
741e889
increase test limits
gearama Dec 28, 2023
a3ef35e
xml transition
gearama Jan 3, 2024
d7fc970
service_version_policy
gearama Jan 3, 2024
475b507
shared creds and key policy lite
gearama Jan 3, 2024
bb56537
switch to secondary policy
gearama Jan 4, 2024
5e9d40c
code done
gearama Jan 4, 2024
6169929
remove last storage vestiges
gearama Jan 4, 2024
5c30f06
put back some code
gearama Jan 4, 2024
36c8b4f
readme/changelog
gearama Jan 4, 2024
751419e
Update sdk/tables/azure-data-tables/src/serializers.cpp
gearama Jan 5, 2024
13676a7
Add the shared key policy for Larry
gearama Jan 5, 2024
4573e2f
Larry comments
gearama Jan 9, 2024
3df4422
curlybracify the initializers
gearama Jan 9, 2024
4b0ccda
Update sdk/core/azure-core-xml/inc/azure/core/xml/dll_import_export.hpp
gearama Jan 9, 2024
86adb13
Update sdk/core/azure-core-xml/vcpkg.json
gearama Jan 9, 2024
4362e9a
Update sdk/tables/azure-data-tables/inc/azure/data/tables.hpp
gearama Jan 9, 2024
ce6e070
Rick's comments one more namespace change for serializers
gearama Jan 9, 2024
cf7c7ec
Merge pull request #1 from gearama/removeStorageDep
gearama Jan 9, 2024
843bea5
whiteline
gearama Jan 9, 2024
2993391
typo
gearama Jan 9, 2024
543b232
oops
gearama Jan 10, 2024
db86043
includes and clangs
gearama Jan 10, 2024
01ee538
cleanup
gearama Jan 10, 2024
762d6be
jhfjdhjfd
gearama Jan 10, 2024
bcfd3f0
hjkjdhf
gearama Jan 10, 2024
740d6c2
daas
gearama Jan 10, 2024
ac9a7d0
Anton's comments
gearama Jan 10, 2024
106307c
clang
gearama Jan 10, 2024
7184682
revert some changes
gearama Jan 10, 2024
74c07fd
fdss
gearama Jan 10, 2024
8cdb465
Merge branch 'Azure:main' into testBuild2
gearama Jan 10, 2024
89a9fbe
Update sdk/core/azure-core-xml/CHANGELOG.md
gearama Jan 10, 2024
e448acc
everything works
gearama Jan 10, 2024
7c6bc45
Merge branch 'testBuild2' of https://github.com/gearama/azure-sdk-for…
gearama Jan 10, 2024
92aea38
clangs and vcpkg test
gearama Jan 10, 2024
bd2b299
test remove azure-core-xml
gearama Jan 11, 2024
3f0fb48
vcpkg json
gearama Jan 11, 2024
ebb82b4
remove the code
gearama Jan 11, 2024
6bd5eef
Merge branch 'main' of https://github.com/gearama/azure-sdk-for-cpp i…
gearama Jan 11, 2024
5cde47c
merge main
gearama Jan 11, 2024
f3f56f2
saa
gearama Jan 11, 2024
c5272ba
wqw
gearama Jan 11, 2024
9d7f5f2
last comments
gearama Jan 11, 2024
998070d
clang
gearama Jan 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sdk/core/azure-core/src/http/transport_policy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ std::unique_ptr<RawResponse> TransportPolicy::Send(
// The entire payload needs must be downloaded to the response's buffer.
auto bodyStream = response->ExtractBodyStream();
response->SetBody(bodyStream->ReadToEnd(context));
gearama marked this conversation as resolved.
Show resolved Hide resolved

gearama marked this conversation as resolved.
Show resolved Hide resolved
std::string bodyText = std::string(response->GetBody().begin(),response->GetBody().end());
// BodyStream is moved out of response. This makes transport implementation to clean any active
gearama marked this conversation as resolved.
Show resolved Hide resolved
// session with sockets or internal state.
return response;
Expand Down
3 changes: 3 additions & 0 deletions sdk/tables/azure-data-tables/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ endif()

set(
AZURE_DATA_TABLES_HEADER
inc/azure/data/tables/account_sas_builder.hpp
inc/azure/data/tables/dll_import_export.hpp
inc/azure/data/tables/internal/cryptography/hmacsha256.hpp
inc/azure/data/tables/internal/cryptography/url_encode.hpp
inc/azure/data/tables/internal/policies/service_version_policy.hpp
inc/azure/data/tables/internal/policies/shared_key_lite_policy.hpp
inc/azure/data/tables/internal/policies/shared_key_policy.hpp
Expand All @@ -64,6 +66,7 @@ set(

set(
AZURE_DATA_TABLES_SOURCE
src/account_sas_builder.cpp
src/credentials/shared_key_credential.cpp
src/cryptography/hmacsha256.cpp
src/policies/shared_key_lite_policy.cpp
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,297 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

#pragma once

#include "azure/data/tables/credentials/shared_key_credential.hpp"

#include <azure/core/datetime.hpp>
#include <azure/core/nullable.hpp>

#include <string>
#include <type_traits>

namespace Azure { namespace Data { namespace Tables { namespace Sas {

/**
* @brief Defines the protocols permitted for Storage requests made with a shared access
* signature.
*/
enum class SasProtocol
{
/**
* @brief Only requests issued over HTTPS or HTTP will be permitted.
*/
HttpsAndHttp,

/**
* @brief Only requests issued over HTTPS will be permitted.
*/
HttpsOnly,
};

namespace _detail {
inline std::string SasProtocolToString(SasProtocol protocol)
{
return protocol == SasProtocol::HttpsAndHttp ? "https,http" : "https";
}
} // namespace _detail

/**
* @brief Specifies the resource types accessible from an account level shared access
* signature.
*/
enum class AccountSasResource
{
/**
* @brief Indicates whether service-level APIs are accessible from this shared access
* signature.
*/
Service = 1,

/**
* @brief Indicates whether container-level APIs are accessible from this shared
* access signature.
*/
Container = 2,

/**
* @brief Indicates whether object-level APIs for blobs, queue messages, and files are
* accessible from this shared access signature.
*/
Object = 4,

/**
* @brief Indicates all service-level APIs are accessible from this shared access
* signature.
*/
All = ~0,
};

inline AccountSasResource operator|(AccountSasResource lhs, AccountSasResource rhs)
{
using type = std::underlying_type_t<AccountSasResource>;
return static_cast<AccountSasResource>(static_cast<type>(lhs) | static_cast<type>(rhs));
}

inline AccountSasResource operator&(AccountSasResource lhs, AccountSasResource rhs)
{
using type = std::underlying_type_t<AccountSasResource>;
return static_cast<AccountSasResource>(static_cast<type>(lhs) & static_cast<type>(rhs));
}

/**
* @brief Specifies the services accessible from an account level shared access signature.
*/
enum class AccountSasServices
{
/**
* @brief Indicates whether Azure Blob Storage resources are accessible from the shared
* access signature.
*/
Blobs = 1,

/**
* @brief Indicates whether Azure Queue Storage resources are accessible from the shared
* access signature.
*/
Queue = 2,

/**
* @brief Indicates whether Azure File Storage resources are accessible from the shared
* access signature.
*/
Files = 4,
/**
* @brief Indicates whether Azure Table Storage resources are accessible from the shared
* access signature.
*/
Table = 8,
/**
* @brief Indicates all services are accessible from the shared
* access signature.
*/
All = ~0,
};

inline AccountSasServices operator|(AccountSasServices lhs, AccountSasServices rhs)
{
using type = std::underlying_type_t<AccountSasServices>;
return static_cast<AccountSasServices>(static_cast<type>(lhs) | static_cast<type>(rhs));
}

inline AccountSasServices operator&(AccountSasServices lhs, AccountSasServices rhs)
{
using type = std::underlying_type_t<AccountSasServices>;
return static_cast<AccountSasServices>(static_cast<type>(lhs) & static_cast<type>(rhs));
}

/**
* @brief The list of permissions that can be set for an account's access policy.
*/
enum class AccountSasPermissions
{
/**
* @brief Indicates that Read is permitted.
*/
Read = 1,

/**
* @brief Indicates that Write is permitted.
*/
Write = 2,

/**
* @brief Indicates that Delete is permitted.
*/
Delete = 4,

/**
* @brief Indicates that deleting previous blob version is permitted.
*/
DeleteVersion = 8,

/**
* @brief Indicates that List is permitted.
*/
List = 16,

/**
* @brief Indicates that Add is permitted.
*/
Add = 32,

/**
* @brief Indicates that Create is permitted.
*/
Create = 64,

/**
* @brief Indicates that Update is permitted.
*/
Update = 128,

/**
* @brief Indicates that Process is permitted.
*/
Process = 256,

/**
* @brief Indicates that reading and writing tags is permitted.
*/
Tags = 512,

/**
* @brief Indicates that filtering by tags is permitted.
*/
Filter = 1024,

/**
* @brief Indicates that setting immutability policy is permitted.
*/
SetImmutabilityPolicy = 2048,

/**
* @brief Indicates that permanent delete is permitted.
*/
PermanentDelete = 4096,

/**
* @brief Indicates that all permissions are set.
*/
All = ~0,
};

inline AccountSasPermissions operator|(AccountSasPermissions lhs, AccountSasPermissions rhs)
{
using type = std::underlying_type_t<AccountSasPermissions>;
return static_cast<AccountSasPermissions>(static_cast<type>(lhs) | static_cast<type>(rhs));
}

inline AccountSasPermissions operator&(AccountSasPermissions lhs, AccountSasPermissions rhs)
{
using type = std::underlying_type_t<AccountSasPermissions>;
return static_cast<AccountSasPermissions>(static_cast<type>(lhs) & static_cast<type>(rhs));
}

/**
* @brief AccountSasBuilder is used to generate an account level Shared Access Signature
* (SAS) for Azure Storage services.
*/
struct AccountSasBuilder final
{
/**
* @brief The optional signed protocol field specifies the protocol permitted for a
* request made with the SAS.
*/
SasProtocol Protocol = SasProtocol::HttpsOnly;

/**
* @brief Optionally specify the time at which the shared access signature becomes
* valid.
*/
Azure::Nullable<Azure::DateTime> StartsOn;

/**
* @brief The time at which the shared access signature becomes invalid. This field must
* be omitted if it has been specified in an associated stored access policy.
*/
Azure::DateTime ExpiresOn;

/**
* @brief Specifies an IP address or a range of IP addresses from which to accept
* requests. If the IP address from which the request originates does not match the IP address
* or address range specified on the SAS token, the request is not authenticated. When
* specifying a range of IP addresses, note that the range is inclusive.
*/
Azure::Nullable<std::string> IPRange;

/**
* @brief The services associated with the shared access signature. The user is
* restricted to operations with the specified services.
*/
AccountSasServices Services;

/**
* The resource types associated with the shared access signature. The user is
* restricted to operations on the specified resources.
*/
AccountSasResource ResourceTypes;

/**
* @brief Optional encryption scope to use when sending requests authorized with this SAS url.
*/
std::string EncryptionScope;

/**
* @brief Sets the permissions for an account SAS.
*
* @param permissions The
* allowed permissions.
*/
void SetPermissions(AccountSasPermissions permissions);

/**
* @brief Sets the permissions for the SAS using a raw permissions string.
*
* @param rawPermissions Raw permissions string for the SAS.
*/
void SetPermissions(std::string rawPermissions) { Permissions = std::move(rawPermissions); }

/**
* @brief Uses the StorageSharedKeyCredential to sign this shared access signature, to produce
* the proper SAS query parameters for authentication requests.
*
* @param credential
* The storage account's shared key credential.
* @return The SAS query parameters used for
* authenticating requests.
*/
std::string GenerateSasToken(
const Azure::Data::Tables::Credentials::SharedKeyCredential& credential);

private:
std::string Permissions;
};

}}}} // namespace Azure::Data::Tables::Sas
gearama marked this conversation as resolved.
Show resolved Hide resolved
gearama marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ namespace Azure { namespace Data { namespace Tables { namespace _detail { namesp
class SharedKeyPolicy;
class SharedKeyLitePolicy;
}}}}} // namespace Azure::Data::Tables::_detail::Policies

namespace Azure { namespace Data { namespace Tables { namespace Sas {
struct AccountSasBuilder;
}}}} // namespace Azure::Data::Tables::Sas

namespace Azure { namespace Data { namespace Tables { namespace Credentials {

namespace Sas {
struct AccountSasBuilder;
} // namespace Sas

/**
* @brief A SharedKeyCredential is a credential backed by an account's name and
Expand Down Expand Up @@ -56,7 +58,8 @@ namespace Azure { namespace Data { namespace Tables { namespace Credentials {
private:
friend class Azure::Data::Tables::_detail::Policies::SharedKeyPolicy;
friend class Azure::Data::Tables::_detail::Policies::SharedKeyLitePolicy;
friend struct Sas::AccountSasBuilder;
friend struct Azure::Data::Tables::Sas::AccountSasBuilder;

std::string GetAccountKey() const
{
std::lock_guard<std::mutex> guard(m_mutex);
Expand Down
Loading
Loading