/// Create an authorization URL you can include in a login button
        ///
        /// @param string domain Domain of the API, e.g. "dropbox.com"
        /// @param string redirect_url Url where user is redirected after authorization, must match URL defined in API developer console
        /// @param string state Random state to match session and user in finalization
        /// @returns Authorization URL
        ///
        public static string createAuthorizationUrl(string domain, string redirect_url, string state)
        {
            CloudApi api = getByDomain(domain);

            if (api != null)
            {
                return(api._createAuthorizationUrl(redirect_url, state));
            }
            return(null);
        }
        /// Finalize authorization by passing the redirection url to get a CloudApi (and CloudAccount)
        ///
        /// @param string url URL and parameters user was redirected to
        /// @returns CloudApi instance
        ///
        public static CloudApi finalizeAuthorization(string url)
        {
            CloudApi api = getByDomain(Utils.stringFindUrlValue(url, "domain"));

            if (api != null && api._finalizeAuthorization(url))
            {
                return(api);
            }
            else
            {
                return(null);
            }
        }
 /// CloudAccount constructor from the account elements
 ///
 /// @param string domain Domain of account
 /// @param string access_token OAuth access token
 /// @param string id API internal user id
 /// @param string email User email address
 /// @param string name User name
 ///
 public CloudAccount(string domain, string id, string access_token, string email = "", string name = "")
 {
     if (Utils.stringIsEmpty(domain) || Utils.stringIsEmpty(access_token) || Utils.stringIsEmpty(id))
     {
         throw new Exception("Invalid elements for a CloudApiAccount!");
     }
     Domain = domain;
     Token  = access_token;
     Id     = id;
     Email  = email;
     Name   = name;
     Api    = CloudApi.getByDomain(Domain);
     if (Api == null)
     {
         throw new Exception("Invalid CloudApi domain '" + Domain + "'!");
     }
     Api.Account = this;
 }