Commit Graph

197 Commits

Author SHA1 Message Date
Victor Vazquez
f4febae12c
missing line for single docs (#2264)
* missing line for single docs

* format
2021-05-13 17:41:48 -07:00
Ahson Khan
ffd0860e00
Avoid using WinHttpQueryDataAvailable, and use WinHttpReadData directly for better throughput. (#2245)
* Avoid using WinHttpQueryDataAvailable, and use WinHttpReadData directly for better throughput.

* Add back new line at end of file.

* Reorder some lines for readability.
2021-05-11 20:03:14 -07:00
Anton Kolesnyk
019db35863
Add final specifier (#2237) 2021-05-10 11:57:40 -07:00
Ahson Khan
a103e51869
Rename IsBufferedDownload to ShouldBufferResponse to avoid using a (#2210)
storage specific verb in general purpose Request object.
2021-05-07 16:53:07 -07:00
Ahson Khan
fd9c3e5ebb
Fix true spelling errors across all source and header files within the SDK and add exceptions for false positives. (#2209)
Part of https://github.com/Azure/azure-sdk-for-cpp/issues/1277, checking what types of warnings the CI emits.

Verified all SDK product `.cpp`, `.hpp`, `.txt`, and `.md` files, primarily focused on azure-core. They are all clean now. There are some exceptions that needs to be added for keyvault and storage, but they are false positives, so not a concern.

> `cspell lint --config .vscode/cspell.json *.hpp */**/*.hpp`

CSpell: Files checked: 188, Issues found: 0 in 0 files

> `cspell lint --config .vscode/cspell.json *.cpp */**/*.cpp`

CSpell: Files checked: 186, Issues found: 88 in 15 files (keyvault and storage false positives, or tests)

> `cspell lint --config .vscode/cspell.json *.md */**/*.md`

CSpell: Files checked: 45, Issues found: 5 in 2 files (eng/common)

> `cspell lint --config .vscode/cspell.json *.txt */**/*.txt`

CSpell: Files checked: 44, Issues found: 0 in 0 files

> `cspell lint --config .vscode/cspell.json *.* */**/*`

CSpell: Files checked: 646, Issues found: 328 in 69 files (most of these are in eng\docs\api\assets\style.css or eng/common)

Deprioritize and ignored the errors from the test files (including test resource json files), and `eng/common` since those need to be centrally fixed.
2021-05-07 21:04:58 +00:00
Victor Vazquez
08c8147f54
Update abort() for AZURE_ASSERT (#2170)
* remove abort from Core
2021-05-06 15:30:46 -07:00
Victor Vazquez
8e4a1ae59b
Rename download via stream (#2196)
rename parameter for download stream
2021-05-06 02:42:38 +00:00
Ahson Khan
7f0792f114
Add transport layer unit tests with non-ascii host strings as input. (#2198)
* Add transport layer unit tests with non-ascii host strings as input.

* Update test string.
2021-05-05 17:18:46 -07:00
Ahson Khan
e1340dcfa8
Check for context cancellation in more places within the winhttp transport layer before each I/O call. (#2185)
* Check for context cancellation in more places within the winhttp transport layer before each I/O call.

* Update cspell to add exceptions to false positives.

* Address PR feedback.

* Do not check for context cancellation before querying the response headers.
2021-05-05 17:17:54 -07:00
Ahson Khan
a77686938a
Remove exposing windows.h header from our public headers and reduce risk of introducing it in non-public headers (#2188)
Fixes https://github.com/Azure/azure-sdk-for-cpp/issues/1853
2021-05-05 23:49:18 +00:00
Anton Kolesnyk
d69742ae10
Context::GetApplicationContext() => Context::ApplicationContext (#2178) 2021-05-04 15:26:33 -07:00
Victor Vazquez
84560cb5f7
Md5 enhance impl and test (#2157)
* re-design hash md5 header and implementation
2021-05-04 00:11:53 +00:00
Anton Kolesnyk
cd36753d76
PackageVersion made constexpr and moved to src/package_version.hpp (#2166) 2021-04-28 17:34:24 -07:00
Victor Vazquez
3e1af936d9
Remove thread detach (#2105) 2021-04-17 21:36:24 -07:00
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