summaryrefslogtreecommitdiff
path: root/include/oauth2_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/oauth2_manager.h')
-rw-r--r--include/oauth2_manager.h292
1 files changed, 292 insertions, 0 deletions
diff --git a/include/oauth2_manager.h b/include/oauth2_manager.h
new file mode 100644
index 0000000..d72d5fc
--- /dev/null
+++ b/include/oauth2_manager.h
@@ -0,0 +1,292 @@
+/*
+ * Copyright (c) 2014 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef OAUTH2_MANAGER_H_
+#define OAUTH2_MANAGER_H_
+
+#include "oauth2_request.h"
+#include "oauth2_response.h"
+#include "oauth2_error.h"
+#include "oauth2_types.h"
+
+/**
+ * @file oauth2_manager.h
+ * @brief The main OAuth 2.0 handler APIs.
+ * @details The Application must use either:
+ * oauth2_manager_request_token
+ * or
+ * oauth2_manager_request_authorization_grant and then oauth2_manager_request_access_token.
+ * One instance handles only one pending request at any given time. If requested again before completion it throws TIZEN_ERROR_ALREADY_IN_PROGRESS.
+ * Application must have internet in order to use these APIs.
+ */
+
+/**
+ * @addtogroup CAPI_OAUTH2_MODULE
+ * @{
+ */
+
+/**
+ * @brief The structure type for OAuth 2.0 Manager handle.
+ * @since_tizen 2.4
+ */
+typedef struct oauth2_manager_s* oauth2_manager_h;
+
+/**
+ * @brief Creates oauth2_manager_h handle.
+ * @remarks It must be freed using oauth2_manager_destroy().
+ * @since_tizen 2.4
+ *
+ * @param[out] handle The created handle
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of Memory
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ * @see oauth2_manager_destroy()
+ */
+OAUTH2_API int oauth2_manager_create(oauth2_manager_h *handle);
+
+/**
+ * @brief Destroys oauth2_manager_h handle.
+ * @since_tizen 2.4
+ *
+ * @param[in] handle The oauth2_manager handle.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+OAUTH2_API int oauth2_manager_destroy(oauth2_manager_h handle);
+
+/**
+ * @brief Called when the oauth2_manager_request_token() resopnse comes.
+ * @since_tizen 2.4
+ *
+ * param[in] response The response. The response must be released using oauth2_response_destroy().
+ * param[in] user_data The user data passed from the callback function.
+ *
+ * @pre oauth2_manager_request_token() must be called to get this callback invoked.
+ * @see oauth2_manager_request_token()
+ */
+typedef void (*oauth2_token_cb)(oauth2_response_h response, void* user_data);
+
+/**
+ * @brief Request OAuth 2.0 access token.
+ * @details The response is delivered via oauth2_token_cb().
+ * "internet" privilege is required to call this API. Note, only one pending request is allowed.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The oauth2_manager_handle.
+ * @param[in] request The request handle.
+ * @param[in] callback The callback to receive response.
+ * @param[in] user_data The user data to be passed to the callback function.
+ *
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of memory.
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid input parameter(s) passed.
+ * @retval #OAUTH2_ERROR_ALREADY_IN_PROGRESS The previous request is already in progress.
+ * @retval #OAUTH2_ERROR_PERMISSION_DENIED Permission denied.
+ * @retval #OAUTH2_ERROR_NOT_SUPPORTED Not supported.
+ * @retval #OAUTH2_ERROR_PARSE_FAILED Parsing failed.
+ * @retval #OAUTH2_ERROR_NETWORK_ERROR Network Error.
+ * @retval #OAUTH2_ERROR_UNKNOWN Unknown system error.
+ *
+ * @see oauth2_token_cb()
+ * @see oauth2_manager_create()
+ * @see oauth2_request_create()
+ */
+OAUTH2_API int oauth2_manager_request_token(oauth2_manager_h handle, oauth2_request_h request, oauth2_token_cb callback, void *user_data);
+
+/**
+ * @brief Called when oauth2_manager_request_authorization_grant() response comes.
+ * @since_tizen 2.4
+ *
+ * @param[in] response The response. The response must be released using oauth2_response_destroy().
+ * param[in] user_data The user data passed from the callback function.
+ *
+ * @pre oauth2_manager_request_authorization_grant() must be called to get this callback invoked.
+ * @see oauth2_manager_request_authorization_grant()
+ */
+typedef void (*oauth2_auth_grant_cb)(oauth2_response_h response, void* user_data);
+
+/**
+ * @brief Request authorization grant.
+ * @details The response is delivered via oauth2_auth_grant_cb().
+ * "internet" privilege is required to call this API. Note, only one pending request is allowed at a time.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The oauth2_manager handle.
+ * @param[in] request The request handle.
+ * @param[in] callback The application callback.
+ * @param[in] user_data The user data to be passed to the callback function.
+ *
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of memory.
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid input parameter(s) passed.
+ * @retval #OAUTH2_ERROR_ALREADY_IN_PROGRESS The previous request is already in progress.
+ * @retval #OAUTH2_ERROR_PERMISSION_DENIED Permission denied.
+ * @retval #OAUTH2_ERROR_NOT_SUPPORTED Not supported.
+ * @retval #OAUTH2_ERROR_PARSE_FAILED Parsing failed.
+ * @retval #OAUTH2_ERROR_NETWORK_ERROR Network Error.
+ * @retval #OAUTH2_ERROR_UNKNOWN Unknown system error.
+ *
+ * @see oauth2_auth_grant_cb()
+ * @see oauth2_manager_create()
+ * @see oauth2_request_create()
+ */
+OAUTH2_API int oauth2_manager_request_authorization_grant(oauth2_manager_h handle, oauth2_request_h request, oauth2_auth_grant_cb callback, void *user_data);
+
+/**
+ * @brief Called when oauth2_manager_request_access_token() response comes.
+ * @since_tizen 2.4
+ *
+ * @param[in] response The response. The response must be released using oauth2_response_destroy().
+ * param[in] user_data The user data passed from the callback function.
+ *
+ * @pre oauth2_manager_request_access_token() must be called to get this callback invoked.
+ * @see oauth2_manager_request_access_token()
+ */
+typedef void (*oauth2_access_token_cb)(oauth2_response_h response, void* user_data);
+
+/**
+ * @brief Requests an access token.
+ * @details The response is delivered via oauth2_access_token_cb() callback.
+ * "internet" privilege is required to call this API. Note, only one pending request is allowed at a time.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The oauth2_manager handle.
+ * @param[in] request The request handle.
+ * @param[in] callback The application callback.
+ * @param[in] user_data The user data to be passed to the callback function.
+ *
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of memory.
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid input parameter(s) passed.
+ * @retval #OAUTH2_ERROR_ALREADY_IN_PROGRESS The previous request is already in progress.
+ * @retval #OAUTH2_ERROR_PERMISSION_DENIED Permission denied.
+ * @retval #OAUTH2_ERROR_NOT_SUPPORTED Not supported.
+ * @retval #OAUTH2_ERROR_PARSE_FAILED Parsing failed.
+ * @retval #OAUTH2_ERROR_NETWORK_ERROR Network Error.
+ * @retval #OAUTH2_ERROR_UNKNOWN Unknown system error.
+ *
+ * @see oauth2_access_token_cb()
+ * @see oauth2_manager_create()
+ * @see oauth2_request_create()
+ */
+OAUTH2_API int oauth2_manager_request_access_token(oauth2_manager_h handle, oauth2_request_h request, oauth2_access_token_cb callback, void *user_data);
+
+/**
+ * @brief Called when oauth2_manager_refresh_access_token() response comes.
+ * @since_tizen 2.4
+ *
+ * @param[in] response The response. The response must be released using oauth2_response_destroy().
+ * param[in] user_data The user data passed from the callback function.
+ *
+ * @pre oauth2_manager_refresh_access_token() must be called to get this callback invoked.
+ * @see oauth2_manager_refresh_access_token().
+ */
+typedef void (*oauth2_refresh_token_cb)(oauth2_response_h response, void* user_data);
+
+/**
+ * @brief Requests a refresh token.
+ * @details The response is delivered via oauth2_refresh_token_cb() callback.
+ * "internet" privilege is required to call this API. Note, only one pending request is allowed at a time.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The oauth2_manager handle.
+ * @param[in] request The request handle.
+ * @param[in] callback The application callback.
+ * @param[in] user_data The user data to be passed to the callback function.
+ *
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of memory.
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid input parameter(s) passed.
+ * @retval #OAUTH2_ERROR_ALREADY_IN_PROGRESS The previous request is already in progress.
+ * @retval #OAUTH2_ERROR_PERMISSION_DENIED Permission denied.
+ * @retval #OAUTH2_ERROR_NOT_SUPPORTED Not supported.
+ * @retval #OAUTH2_ERROR_PARSE_FAILED Parsing failed.
+ * @retval #OAUTH2_ERROR_NETWORK_ERROR Network Error.
+ * @retval #OAUTH2_ERROR_UNKNOWN Unknown system error.
+ *
+ * @see oauth2_refresh_token_cb()
+ * @see oauth2_manager_create()
+ * @see oauth2_request_create()
+ */
+OAUTH2_API int oauth2_manager_refresh_access_token(oauth2_manager_h handle, oauth2_request_h request, oauth2_refresh_token_cb callback, void *user_data);
+
+/**
+ * @brief Returns whether oauth2_manager related request is pending.
+ * @since_tizen 2.4
+ *
+ * @param[in] handle The auth2_manager handle.
+ * @retval false No pending request
+ * @retval true There is pending request.
+ */
+OAUTH2_API bool oauth2_manager_is_request_in_progress(oauth2_manager_h handle);
+
+/**
+ * @brief Clears the cookies.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The oauth2_manager handle.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of Memory
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #OAUTH2_ERROR_PERMISSION_DENIED Permission denied.
+ * @retval #OAUTH2_ERROR_NOT_SUPPORTED Not supported.
+ */
+OAUTH2_API int oauth2_manager_clear_cookies(oauth2_manager_h handle);
+
+/**
+ * @brief Clears the cache.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ *
+ * @param[in] handle The oauth2_manager handle.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #OAUTH2_ERROR_NONE Successful
+ * @retval #OAUTH2_ERROR_OUT_OF_MEMORY Out of Memory
+ * @retval #OAUTH2_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #OAUTH2_ERROR_PERMISSION_DENIED Permission denied.
+ * @retval #OAUTH2_ERROR_NOT_SUPPORTED Not supported.
+ */
+OAUTH2_API int oauth2_manager_clear_cache(oauth2_manager_h handle);
+
+/* End of OAuth 2.0 APIs */
+/**
+ * @}
+ */
+
+#endif /* OAUTH2_MANAGER_H_ */