Commit Graph

183 Commits

Author SHA1 Message Date
Victor Vazquez
668d343dde
Do not reuse connection with diff port (#2122)
* Do not reuse connection with diff port
2021-04-16 23:11:11 +00:00
Victor Vazquez
5de76e7a21
Fix for Azure Core with libcurl. clean up and global clean up (#1500)
make SDK to call global_init and global_cleanup
2021-04-08 22:55:26 +00:00
Ahson Khan
fb000d55b5
Use consistent pascal casing and rename HKEYHolder to HkeyHolder. (#2067)
* Use pascal casing and rename HKEYHolder to HKeyHolder.

* Rename hkeyholder header to hkey_holder to be consistent with others,
and update callers.
2021-04-07 13:30:05 -07:00
Victor Vazquez
17c17c9b69
Update ssl name (#2066)
* raname

* changelog
2021-04-07 18:25:13 +00:00
Ahson Khan
4db9a563e7
Removed Azure::Core::Context::HasKey() and add TryGetValue() instead (#2037)
~@vhvb1989 This change is blocked until after the retry policy implementation has been updated. Let me know once you have that PR available.~

Fixes https://github.com/Azure/azure-sdk-for-cpp/issues/2036
2021-04-07 03:23:34 +00:00
Ahson Khan
aba89c5a32
Remove Azure::Core::Http::Request::GetHeadersAsString(). (#2056)
* Remove Azure::Core::Http::Request::GetHeadersAsString().

* Address PR feedback.
2021-04-07 02:05:57 +00:00
Ahson Khan
304300c928
Removed GetUrlWithoutQuery() and GetUrlAuthorityWithScheme() from Azure::Core::Url and added GetScheme(). (#2055)
* Removed GetUrlWithoutQuery() and GetUrlAuthorityWithScheme() from
Azure::Core::Url and added GetScheme().

* Address PR feedback.
2021-04-07 01:48:33 +00:00
Ahson Khan
38d3535a1e
Changed the Azure::Core::Http::HttpMethod regular enum into an extensible enum class. (#2048)
* Changed the `Azure::Core::Http::HttpMethod` regular enum into an extensible enum class.

* Update CL to mention removal of HttpMethodToString.

* Delete the default http method ctor.
2021-04-06 03:53:05 +00:00
Victor Vazquez
cb39ec302c
Update RetryPolicy logic to use only one context (#2047)
* progress

* missing

* fix comp errors

* remove comments

* Bad merge with my recent changes to master

* Format

Co-authored-by: Ahson Khan <ahson_ahmedk@yahoo.com>
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2021-04-05 19:50:17 -07:00
Anton Kolesnyk
3b36c9091a
Add policy tests (#2009)
Closes #271
Closes #1570
Closes #1596
2021-04-06 02:10:30 +00:00
Ahson Khan
d638d1ff3d
Move package version to details, and rename VersionString() to ToString(). (#2042) 2021-04-06 00:50:25 +00:00
Anton Kolesnyk
c5ddbbc430
Changes around context expiration naming and types (#2033)
This would unblock #2010.

Closes #2032.
Closes #1880.

I know this comes out of the blue, but it seems to me the right change to do. This is a proposal, let me know what you think.

First, I started with the fact that we need to make `CancelWhen()` public.
Then, I realized that I don't like the `CancelWhen()` naming. `CancelAt()` is better?
But `CancelAt()` sounds like an order to do something, not as getter.
So, it should be named `Get...`. `GetCancelWhen()`? `GetCancelAt()`? Sounds strage.

`GetDeadline()` - not bad, bit it is not that clear, what the deadline is.
And I looked at the `WithDeadline()` method. And in comment, the first line is `@brief Create a context with expiration.`.
"Expiration" sounds better explanation for the essense of the "deadline".

So, I went with `GetExpiration()`. I think "Expiration" is also a better name, because should we want to add the method called "bool IsExpired()", it comes naturally using the existing terminology, sounds better than "`IsPastDeadline()`".

Next thing - if we have "`GetExpiration()`", it is strange to have a method called `Get()`. So, we have `WithExpiration()` and `WithValue()`. So, it sounds like the getter should be called `GetValue()`. I did that rename as well.

Then, I looked at "`With...`" method naming. It is a factory method. If for getters we have `Get`, then for factory methods we should have `Create`. So, I renamed `WithExpiration()` and `WithValue()` to `CreateWithExpiration()` and `CreateWithValue()`.

Then I looked at `Context::time_point` typedef. First, in general, if we can avoid public typedefs, it is better, because we don't need to document them and worry if we broke client code when we change them.
Second, it is strange that we use `Azure::DateTime` everywhere, but not in context.

So, I replaced it with `Azure::DateTime`. It is good because it allows us to drop to/from epoch conversions (#1880), and really all that extra dance we do to cast to representation and back to datetime is the ways to stay within legal type casting limits of compiler type declaration, while in reality there isn't much that is happening in the code: `DateTime` is essentially an `int64`, and with all these conversions to epoch time, then to representation and back, compiler does not generate real code, it still operates with that only `int64`.

Why we cast to `DateTime::rep` and back at all? Context stores it as `atomic`, and I am not questioning that. You can't get `std::atomic<DateTime>` today explicitly, so we "extract" representation (`int64`) and store it as `std::atomic<DateTime::rep>`, which is the same thing as `std::atomic_int64`.

-- Update: --
1. "Expiration" => "Deadline" (Jeffrey's request)
2. Added `Context::HasExpiration()` (response to Jinming) // plus, we do have `HasValue()` so why not have `HasDeadline()`.
3. `WithDeadline()`, `WithValue` => Two overloads of `CreateChildContext()` (my own initiative).

-- Update 2: --
`CreateChildContext()` => `WithDeadline()`, `WithValue`

-- Update 3: --
Removed `HasDeadline()`
2021-04-05 21:24:40 +00:00
Victor Vazquez
dfdaf25223
[Core] Refactor RequestFailedException with Http information (#2026)
* KeyVault Exception
2021-04-05 12:11:31 -07:00
Anton Kolesnyk
a7fdea42e6
Introduce Context::Key with pointer comparison speeds (#1988) 2021-04-05 11:26:50 -07:00
Victor Vazquez
41be347002
remove-http-response-apis (#1998)
* remove-http-response-apis
2021-03-31 23:53:38 +00:00
Anton Kolesnyk
ddd7a093f4
Move policies to internal (#1985) 2021-03-31 12:56:33 -07:00
Victor Vazquez
a4ae81708b
[Keyvault] APIs (#1967)
Adding the next APIs:

UpdateKeyProperties, fixes: #1541
GetPropertiesOfKeys , fixes: #1542
GetPropertiesOfKeyVersions, fixes: #1543
GetDeletedKeys, fixes: #1546
PurgeDeletedKey, fixes: #1547
StartRecoveryDeletedKey, fixes: #1548
BackupKey, fixes: #1549
RestoreKeyBackup, fixes: #1550
ImportKey, fixes: #1551
Add samples, fixes: #1987
2021-03-30 20:12:48 +00:00
Anton Kolesnyk
0665efe0fe
unique_ptr Get() => Extract() || Send() || ExtractOrCreate() (#1984) 2021-03-30 10:17:24 -07:00
Anton Kolesnyk
b606ff60dc
Add ADFS support for ClientSecretCredential (#1947) 2021-03-29 17:26:42 -07:00
Ahson Khan
9f4b389f4d
Update relative links to sections in the contributing guide doc to fix link verification (#1955)
* Update relative links to sections in the contributing guide doc to fix link verification

* Make some source code change modifications to trigger GenerateRelease CI steps

* Don't use relative paths in links, instead use the full path from master to be consistent with other places
2021-03-22 21:41:46 +00:00
Victor Vazquez
009260c50a
rename private method (#1903) 2021-03-16 00:51:14 +00:00
Ahson Khan
fc79c5b3ad
Rename header files to match the namespace structure for things nested within Azure::Core. (#1879)
* Rename header files to match the namespace structure for things nested
within Azure::Core.

* Update a header include that was missed.
2021-03-11 16:22:37 -08:00
Ahson Khan
bd8336f8a2
Removed Azure::Core::Http::InvalidHeaderException and throw std::invalid_argument if the user provides invalid header arguments. (#1871) 2021-03-11 13:42:33 -08:00
Ahson Khan
6a1afb9cbe
Moved the Base64Encode() and Base64Decode() functions to be static members of a Convert class within the Azure::Core namespace. (#1870)
* Moved the `Base64Encode()` and `Base64Decode()` functions to be static members of a `Convert` class within the `Azure::Core` namespace.

* Add the class name in the source file for posix.
2021-03-11 12:39:51 -08:00
Anton Kolesnyk
64c0af3f67
Fix build on VS2017 (#1864) 2021-03-11 18:43:27 +00:00
Ahson Khan
12475350b2
Changed the static methods 'BodyStream::ReadToCount()' and 'BodyStream::ReadToEnd()' into instance methods. (#1863)
Usability studies found that static methods are generally not as user-friendly as instance methods. Folks new to the SDK have harder time discovering the APIs, they reverse the flow of typing, and the calling code ends up a bit more verbose because you have to spell out the whole namespace and type name when there aren't any using directives.

There doesn't seem to be a strong benefit or feasibility reason to keep these method statics which are typically harder to use and discover.

cc @kyle-patterson
2021-03-11 11:58:33 +00:00
Ahson Khan
84df3cefbc
Make FileBodyStream easy to construct by accepting a file name, and create an internal ParallelFileBodyStream. (#1830)
Alternative to https://github.com/Azure/azure-sdk-for-cpp/pull/1730 which avoids accepting and breaking the `FILE*` abstraction.
2021-03-11 08:39:52 +00:00
Victor Vazquez
23b698f2c6
Move URL to CORE (#1840)
* move url from Core::Http to Core::
2021-03-10 23:29:35 -08:00
Victor Vazquez
c7ba56f837
Move http policies to Azure::Core::Http::Policies (#1844)
* Move http policies to Azure::Core::Http::Policies

* update to latest master
2021-03-10 18:55:56 -08:00
Victor Vazquez
33c95b09e9
make curl transport adapter to request new connection if sending fails (#1721)
* make curl transport adapter to request new connection if sending fails
2021-03-10 18:02:04 -08:00
Anton Kolesnyk
de0cb8a720
Azure::Core::Diagnostics (#1851)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-03-10 17:20:45 -08:00
Anton Kolesnyk
698fac6f19
DefaultAllowedHttpHeaders: Make static default const (#1849)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-03-10 16:40:34 -08:00
Anton Kolesnyk
865f707532
Azure::Core::Credentials (#1846)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-03-10 16:22:10 -08:00
Rick Winter
ec24f659c4
Simplify the Context structure (#1824)
* Simplify the Context structure
* Move Azure::Core::GetApplicationContext() to Azure::Core::Context::GetApplicationContext()
2021-03-10 23:19:23 +00:00
Anton Kolesnyk
48258f8f81
Azure::*::_detail::Version => Azure::*::PackageVersion (#1839)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-03-10 15:15:28 -08:00
Anton Kolesnyk
76870c4414
Azure::Core::DateTime => Azure::DateTime (#1836)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-03-10 22:44:09 +00:00
Victor Vazquez
7fca169d25
Create StringExtensions in azure core internal (#1837) 2021-03-10 14:13:51 -08:00
Ahson Khan
3d6cd38658
Move Azure::IO types like BodyStream to Azure::Core::IO. (#1833)
Part of https://github.com/Azure/azure-sdk-for-cpp/issues/1789

From Jeff:
> BodyStream is only exposed to users when uploading/downloading bytes. Except for Storage almost no services do this at all; they read the stream and deserialize into a structure and the customer gets the structure - not the stream. Azure::Core:IO is a fine namespace.
2021-03-10 21:36:29 +00:00
Ahson Khan
2213991d52
Remove BUILD_ENV_LOGGER cmake option and always honor AZURE_LOG_LEVEL env var, if set. (#1827) 2021-03-09 23:05:00 -08:00
Anton Kolesnyk
bc564dbddd
Namespaces renamed: Details => _detail, Internal => _internal (#1823) 2021-03-09 18:05:47 -08:00
Ahson Khan
dd3c79c9b4
Make sure DateTime.ToString() works without requiring additional parameters by choosing RFC 3339 as the default. (#1812)
* Make sure DateTime.ToString() works without requiring additional parameters by choosing RFC 3339 as the default.

* Address naming feedback and add some tests.

* Fix test warning by using static cast.
2021-03-09 13:29:20 -08:00
Rick Winter
e7e2ea8bb5
Move Version out of the Details namespace (#1809)
* Move Version out of the Details namespace
SDKVersion strings for each package are not a detail and can be used by customers.

* Add changelog
2021-03-08 10:21:25 -08:00
Anton Kolesnyk
6b83c85154
Fix build on VS2017 (#1808)
* VS2017 is right, we should be including `<iterator>`, if we use `std::inserter`. It fails to compile on VS2017 without that include.
Why if fails on 2017 and not 2019? Some of the other stdlib headers we include must be including `<iterator>` indirectly in 2019. But we should not be relying on that. Standard says, you use `std::inserter` - include `<iterator>`, if it works without that, that's a coincidence which may break beween versions of stdlib/compilers.

* VS 2017 does not fail because we don't include `<type_taits>` here, but formally we should include it too, because we use 
`std::remove_reference` and `std::remove_const`. It just happens that `log.hpp` includes it, but we should not be relying on that.

This was found during local vcpkg verification - I happen to have it configured targeting VS2017. It does not mean it will fail in vcpkg CI, or would affect many customers, but some for sure. Verification on vcpkg CI looks good - https://github.com/microsoft/vcpkg/pull/16578 (it is based on our master as of Sat 3/6 + this fix).
I verified locally that it builds successfully on `x64-windows`, `x64-windows-static`, and `arm-uwp`.

We should run verification once again, once we have all the renames/moves in master.
2021-03-07 02:04:25 +00:00
Ahson Khan
11a533a6fd
For consistency within the SDK, move Azure::Core::Context to be the last parameter for various Azure::Core APIs. (#1779)
* For consistency within the SDK, move Azure::Core::Context to be the last
parameter for various Azure::Core APIs.

* Fix merge conflict due to log policy file change.

* Update new client options tests
2021-03-05 14:39:57 -08:00
Anton Kolesnyk
622e8da4fe
API Review Feedback: Logging and DateTime updates (#1752) 2021-03-05 12:16:14 -08:00
Victor Vazquez
16eb5710d1
Rename add headers (#1750)
* Rename AddHeader to SetHeader
2021-03-04 22:09:22 +00:00
Victor Vazquez
a5ff474118
Http request counter (#1738)
* Add counter to request about the retry number using the Context
2021-03-03 20:51:19 +00:00
Ahson Khan
a55aba01be
Moved BodyStream and its derived types from Azure::Core::Http namespace to Azure::IO, and update headers. (#1733)
* Moved `BodyStream` and its derived types from `Azure::Core::Http`
namespace to `Azure::IO`, and update headers.

* Fix up clang formatting.

* Add missing winhttp bodystream namespace change.

* Update merge conflict related changes.

* Update header paths in includes.
2021-03-01 11:33:26 -08:00
Anton Kolesnyk
ae575b0c08
CaseInsensitiveMap (#1731)
* Add CaseInsensitiveMap<T>

* Drop unneccessary namespace qualification

* Comment working: more accurate description

* GCC and Clang fix (typename specification) + doxy comments for template parameters

* Remove Allocator template parameter - we can add it later if we need it, currently no need to commit to having it there

* Drop <T> template parameter. We can add it later with default value of std::string without breaking change

* Unit test

Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-02-26 08:38:01 -08:00
Victor Vazquez
5fdb9f4b5d
Remove null body stream (#1741)
* Remove LimitBodyStream
Move NullBodyStream to internal
2021-02-25 22:37:34 +00:00