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

CDRIVER-4689 add mongoc_oidc_callback_t #1945

Merged
merged 50 commits into from
Apr 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
83ad332
CDRIVER-4689 add mongoc_oidc_callback_t
eramongodb Mar 20, 2025
e91b187
Add missing include of mongoc prelude
eramongodb Mar 24, 2025
664b0c7
Merge remote-tracking branch 'upstream/master' into cdriver-4689-oidc…
eramongodb Mar 24, 2025
97050c8
Merge remote-tracking branch 'upstream/master' into HEAD
eramongodb Mar 25, 2025
3e71e5c
Use consistent syntax for parameter lists
eramongodb Mar 25, 2025
071b94b
Tweak wording describing return value of get_timeout
eramongodb Mar 25, 2025
9fa53fd
Fix grammar for version parameter
eramongodb Mar 25, 2025
dcc7c25
Do not imply directly relationship between callback error and client …
eramongodb Mar 25, 2025
faf53fa
Fix return type for get_expires_in documentation
eramongodb Mar 25, 2025
6fee181
Remove recommendation against OIDC callback function reuse
eramongodb Mar 25, 2025
0db1ce8
Support an infinite (unset) timeout
eramongodb Mar 25, 2025
a97cbab
Do not allow user to reset out parameters
eramongodb Mar 25, 2025
56b545e
Do not allow user to unset expires_in
eramongodb Mar 25, 2025
8beb7c4
Fix missing cleanup of owning resources
eramongodb Mar 25, 2025
adc9091
Interpret both unset and 0 as infinite expiry duration
eramongodb Mar 25, 2025
35722c9
Remove the cancel_with_error out parameter
eramongodb Mar 25, 2025
3cc0b15
bson_strdup supports a NULL argument
eramongodb Mar 25, 2025
b9209fe
Avoid describing errors as "cancellation"
eramongodb Mar 25, 2025
5fff717
Require access_token and/or expires_in on construction
eramongodb Mar 25, 2025
51e5f3c
Remove unnecessary setters for mongoc_oidc_credential_t
eramongodb Mar 25, 2025
bb0988d
Fix documentation for mongoc_oidc_credential_new_with_expires_in
eramongodb Mar 25, 2025
45efccc
Merge remote-tracking branch 'upstream/master' into HEAD
eramongodb Apr 1, 2025
e22172a
Remove stray reference to mongoc_oidc_credential_set_expires_in
eramongodb Apr 1, 2025
bf48082
Fix reference to auth mech props
eramongodb Apr 1, 2025
9cb7ecb
Improve toctree organization for types and related functions
eramongodb Apr 1, 2025
5f527bb
Fix docs for mongoc_oidc_callback_set_user_data
eramongodb Apr 1, 2025
b0d29ba
Fix reference to setter in user_data docs
eramongodb Apr 1, 2025
83ac90e
Imply non-owning pointer with const-qualifier in example
eramongodb Apr 1, 2025
f10bfe9
Update cancel_with_timeout parameter usage example with NULL
eramongodb Apr 1, 2025
9ca0095
Add lifecycle sections documenting the scope of validity for return v…
eramongodb Apr 1, 2025
f4fc9bf
Require an OIDC callback function when creating mongoc_oidc_callback_new
eramongodb Apr 1, 2025
6a849c1
Remove stray `cred` parameter documentation
eramongodb Apr 1, 2025
926c550
Add early mentions of `params` representing "in/out" parameters
eramongodb Apr 1, 2025
3a9284f
Remove stray const in mongoc_oidc_callback_set_user_data
eramongodb Apr 1, 2025
0ca7f13
Tweak wording describing how expires_in is expected to be used
eramongodb Apr 1, 2025
7c74ab2
Copy important admonition for expires_in values of "unset" and "0"
eramongodb Apr 1, 2025
e5e75b0
Add test case for expires_in == 0
eramongodb Apr 1, 2025
d923120
Fix license header
eramongodb Apr 1, 2025
94f534f
Clarify multithread usage of single-threaded clients in examples
eramongodb Apr 1, 2025
0f9496d
Use mutation to ensure copy semantics
eramongodb Apr 1, 2025
0358130
Wording tweaks
eramongodb Apr 1, 2025
86e2249
Merge remote-tracking branch 'upstream/master' into HEAD
eramongodb Apr 1, 2025
dd314c1
get_fn should no longer return a NULL pointer
eramongodb Apr 1, 2025
e86509f
Adjust API version example to avoid implying update is an error
eramongodb Apr 1, 2025
6d76834
Merge remote-tracking branch 'upstream/master' into cdriver-4689-oidc…
eramongodb Apr 1, 2025
4e40276
Remove unset vs. 0 redundancy for expires_in
eramongodb Apr 1, 2025
e8cfbd3
Make return type for cancel_with_error() consistent with the callback…
eramongodb Apr 1, 2025
df2125a
Fix format specifier in user_data example
eramongodb Apr 2, 2025
90268b6
Fix constructor used in user_data example
eramongodb Apr 2, 2025
7156be9
Revert to optional<int64_t> for expires_in return value
eramongodb Apr 3, 2025
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
3 changes: 3 additions & 0 deletions src/libmongoc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,7 @@ set (MONGOC_SOURCES
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-log-and-monitor-private.c
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-memcmp.c
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-cmd.c
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-oidc-callback.c
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opcode.c
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-optional.c
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opts-helpers.c
Expand Down Expand Up @@ -717,6 +718,7 @@ set (HEADERS
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-iovec.h
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-log.h
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-macros.h
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-oidc-callback.h
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-opcode.h
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-optional.h
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-prelude.h
Expand Down Expand Up @@ -1057,6 +1059,7 @@ set (test-libmongoc-sources
${PROJECT_SOURCE_DIR}/tests/test-mongoc-max-staleness.c
${PROJECT_SOURCE_DIR}/tests/test-mongoc-mongohouse.c
${PROJECT_SOURCE_DIR}/tests/test-mongoc-mongos-pinning.c
${PROJECT_SOURCE_DIR}/tests/test-mongoc-oidc-callback.c
${PROJECT_SOURCE_DIR}/tests/test-mongoc-opts.c
${PROJECT_SOURCE_DIR}/tests/test-mongoc-primary-stepdown.c
${PROJECT_SOURCE_DIR}/tests/test-mongoc-queue.c
Expand Down
4 changes: 4 additions & 0 deletions src/libmongoc/doc/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ API Reference
mongoc_host_list_t
mongoc_insert_flags_t
mongoc_iovec_t
mongoc_oidc_callback_fn_t
mongoc_oidc_callback_params_t
mongoc_oidc_callback_t
mongoc_oidc_credential_t
mongoc_optional_t
mongoc_query_flags_t
mongoc_rand
Expand Down
27 changes: 27 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_destroy.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
:man_page: mongoc_oidc_callback_destroy

mongoc_oidc_callback_destroy()
==============================

Synopsis
--------

.. code-block:: c

void
mongoc_oidc_callback_destroy (mongoc_oidc_callback_t *callback)

Release all resources associated with the given :symbol:`mongoc_oidc_callback_t` object.

.. warning::

The lifetime of the object pointed to by ``user_data`` is managed the user, not by :symbol:`mongoc_oidc_callback_t`!

Parameters
----------

* ``callback``: a :symbol:`mongoc_oidc_callback_t` or ``NULL``.

.. seealso::

- :symbol:`mongoc_oidc_callback_t`
35 changes: 35 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_fn_t.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
:man_page: mongoc_oidc_callback_fn_t

mongoc_oidc_callback_fn_t
=========================

Synopsis
--------

.. code-block:: c

typedef mongoc_oidc_credential_t *(*mongoc_oidc_callback_fn_t) (mongoc_oidc_callback_params_t *params);

The type of the function pointer stored by :symbol:`mongoc_oidc_callback_t`.

Parameters
----------

* ``params``: A :symbol:`mongoc_oidc_callback_params_t` object representing in/out parameters of a :symbol:`mongoc_oidc_callback_t`.

Returns
-------

A :symbol:`mongoc_oidc_credential_t` object created with :symbol:`mongoc_oidc_credential_new()`, or ``NULL`` to indicate an error or timeout.

* The function MUST return a :symbol:`mongoc_oidc_credential_t` object to indicate success.
* The function MUST return ``NULL`` to indicate an error.
* The function MUST call :symbol:`mongoc_oidc_callback_params_cancel_with_timeout()` before returning ``NULL`` to indicate a timeout instead of an error.

The ``cancel_with_timeout`` out parameter is ignored if the return value is not ``NULL``.

.. seealso::

- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_oidc_callback_params_t`
- :symbol:`mongoc_oidc_credential_t`
29 changes: 29 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_get_fn.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
:man_page: mongoc_oidc_callback_get_fn

mongoc_oidc_callback_get_fn()
=============================

Synopsis
--------

.. code-block:: c

mongoc_oidc_callback_fn_t
mongoc_oidc_callback_get_fn (const mongoc_oidc_callback_t *callback);

Return the stored pointer to the callback function.

Parameters
----------

* ``callback``: a :symbol:`mongoc_oidc_callback_t`.

Returns
-------

A :symbol:`mongoc_oidc_callback_fn_t`.

.. seealso::

- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_oidc_callback_fn_t`
29 changes: 29 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_get_user_data.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
:man_page: mongoc_oidc_callback_get_user_data

mongoc_oidc_callback_get_user_data()
====================================

Synopsis
--------

.. code-block:: c

void *
mongoc_oidc_callback_get_user_data (const mongoc_oidc_callback_t *callback);

Return the stored pointer to user data.

Parameters
----------

* ``callback``: a :symbol:`mongoc_oidc_callback_t`.

Returns
-------

A pointer to user data or ``NULL``.

.. seealso::

- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_oidc_callback_set_user_data()`
31 changes: 31 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_new.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
:man_page: mongoc_oidc_callback_new

mongoc_oidc_callback_new()
==========================

Synopsis
--------

.. code-block:: c

mongoc_oidc_callback_t *
mongoc_oidc_callback_new (mongoc_oidc_callback_fn_t fn)

Create a new :symbol:`mongoc_oidc_callback_t` object which stores the provided OIDC callback function.

Equivalent to calling :symbol:`mongoc_oidc_callback_new_with_user_data()` with ``user_data`` set to ``NULL``.

Parameters
----------

* ``fn``: a :symbol:`mongoc_oidc_callback_fn_t`. Must not be ``NULL``.

Returns
-------

A new :symbol:`mongoc_oidc_callback_t` that must be freed with :symbol:`mongoc_oidc_callback_destroy()`, or ``NULL`` when an invalid argument was given.

.. seealso::

- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_oidc_callback_new_with_user_data`
34 changes: 34 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_new_with_user_data.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
:man_page: mongoc_oidc_callback_new_with_user_data

mongoc_oidc_callback_new_with_user_data()
=========================================

Synopsis
--------

.. code-block:: c

mongoc_oidc_callback_t *
mongoc_oidc_callback_new_with_user_data (mongoc_oidc_callback_fn_t fn, void *user_data)

Create a new :symbol:`mongoc_oidc_callback_t` object which stores the provided OIDC callback function and pointer to user data.

.. warning::

The lifetime of the object pointed to by ``user_data`` is managed the user, not by :symbol:`mongoc_oidc_callback_t`!

Parameters
----------

* ``fn``: a :symbol:`mongoc_oidc_callback_fn_t`. Must not be ``NULL``.
* ``user_data``: a pointer to user data or ``NULL``.

Returns
-------

A new :symbol:`mongoc_oidc_callback_t` that must be freed with :symbol:`mongoc_oidc_callback_destroy()`, or ``NULL`` when an invalid argument was given.

.. seealso::

- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_oidc_callback_new`
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
:man_page: mongoc_oidc_callback_params_cancel_with_timeout

mongoc_oidc_callback_params_cancel_with_timeout()
=================================================

Synopsis
--------

.. code-block:: c

mongoc_oidc_credential_t *
mongoc_oidc_callback_params_cancel_with_timeout (mongoc_oidc_callback_params_t *params);

Set the out parameter indicating cancellation of the callback function due to a timeout instead of an error.

.. note::

If the callback function returns a not-null value, the value of this out parameter is ignored.

Parameters
----------

* ``params``: a :symbol:`mongoc_oidc_callback_params_t`.

Returns
-------

``NULL``.

.. seealso::

- :symbol:`mongoc_oidc_callback_params_t`
- :symbol:`mongoc_oidc_callback_t`
36 changes: 36 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_params_get_timeout.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
:man_page: mongoc_oidc_callback_params_get_timeout

mongoc_oidc_callback_params_get_timeout()
=========================================

Synopsis
--------

.. code-block:: c

const int64_t *
mongoc_oidc_callback_params_get_timeout (const mongoc_oidc_callback_params_t *params);

Return a value comparable with :symbol:`bson_get_monotonic_time()` to determine when a timeout must occur.

A ``NULL`` (unset) return value means "infinite" timeout.

Parameters
----------

* ``params``: a :symbol:`mongoc_oidc_callback_params_t`.

Returns
-------

A value comparable with :symbol:`bson_get_monotonic_time()`, or ``NULL``.

Lifecycle
---------

The pointed-to ``int64_t`` is only valid for the duration of the invocation of the OIDC callback function.

.. seealso::

- :symbol:`mongoc_oidc_callback_params_t`
- :symbol:`mongoc_oidc_callback_t`
35 changes: 35 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_params_get_user_data.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
:man_page: mongoc_oidc_callback_params_get_user_data

mongoc_oidc_callback_params_get_user_data()
===========================================

Synopsis
--------

.. code-block:: c

void *
mongoc_oidc_callback_params_get_user_data (const mongoc_oidc_callback_params_t *params);

Return the pointer to user data which was stored by an associated :symbol:`mongoc_oidc_callback_t` object.

Parameters
----------

* ``params``: a :symbol:`mongoc_oidc_callback_params_t`.

Returns
-------

A pointer to user data or ``NULL``.

Lifecycle
---------

The lifetime of the object pointed to by ``user_data`` is managed the user.

.. seealso::

- :symbol:`mongoc_oidc_callback_params_t`
- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_oidc_callback_set_user_data()`
35 changes: 35 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_params_get_username.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
:man_page: mongoc_oidc_callback_params_get_username

mongoc_oidc_callback_params_get_username()
==========================================

Synopsis
--------

.. code-block:: c

const char *
mongoc_oidc_callback_params_get_username (const mongoc_oidc_callback_params_t *params);

Return the username component of the URI of an associated :symbol:`mongoc_client_t` or :symbol:`mongoc_client_pool_t` object.

Parameters
----------

* ``params``: a :symbol:`mongoc_oidc_callback_params_t`.

Returns
-------

A string which must not be modified or freed, or ``NULL``.

Lifecycle
---------

The string is only valid for the duration of the invocation of the OIDC callback function.

.. seealso::

- :symbol:`mongoc_oidc_callback_params_t`
- :symbol:`mongoc_oidc_callback_t`
- :symbol:`mongoc_uri_t`
29 changes: 29 additions & 0 deletions src/libmongoc/doc/mongoc_oidc_callback_params_get_version.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
:man_page: mongoc_oidc_callback_params_get_version

mongoc_oidc_callback_params_get_version()
=========================================

Synopsis
--------

.. code-block:: c

int32_t
mongoc_oidc_callback_params_get_version (const mongoc_oidc_callback_params_t *params);

Return the OIDC callback API version number.

Parameters
----------

* ``params``: a :symbol:`mongoc_oidc_callback_params_t`.

Returns
-------

A positive integer.

.. seealso::

- :symbol:`mongoc_oidc_callback_params_t`
- :symbol:`mongoc_oidc_callback_t`
Loading