/// <summary>
        /// Get user's information based on token
        /// </summary>
        /// <param name="error">Check this error if returned user info is null</param>
        /// <returns></returns>
        public UserInfo GetUserInfo(out AGOL_Error error)
        {
            error = null;
            if (_userToken == null)
            {
                throw new ArgumentNullException("Invalid user token!");
            }

            using (WebClient webClient = new WebClient())
            {
                NameValueCollection reqparm = new NameValueCollection();

                reqparm.Add("token", _userToken.Token);
                reqparm.Add("f", "json");

                byte[] responsebytes = webClient.UploadValues("https://www.arcgis.com/sharing/rest/accounts/self", "POST", reqparm);
                string responsebody  = Encoding.UTF8.GetString(responsebytes);

                //Check the result is error or not
                AGOL_Error_Wrapper error_Wrapper = (AGOL_Error_Wrapper)_ser.Deserialize(responsebody, typeof(AGOL_Error_Wrapper));
                if (error_Wrapper != null && error_Wrapper.Error != null && error_Wrapper.Error.Code != 0 && !String.IsNullOrEmpty(error_Wrapper.Error.Message))
                {
                    error = error_Wrapper.Error;
                    return(null);
                }

                UserInfo_Wrapper userInfo_Wrapper = (UserInfo_Wrapper)_ser.Deserialize(responsebody, typeof(UserInfo_Wrapper));
                if (userInfo_Wrapper != null)
                {
                    _userInfo = userInfo_Wrapper.User;
                }

                return(_userInfo);
            }
        }
        /// <summary>
        /// Get service info based on service URL
        /// </summary>
        /// <param name="serviceURL">Service URL. For instance: http://services1.arcgis.com/XXXXX/ArcGIS/rest/services/XXXXX/FeatureServer or http://tiles.arcgis.com/tiles/XXXXX/arcgis/rest/services/XXXXX/MapServer</param>
        /// <param name="error">Check this error if returned service info is null</param>
        /// <returns></returns>
        public ServiceInfo GetServiceInfo(String serviceURL, out AGOL_Error error)
        {
            error = null;
            if (_userToken == null || _userInfo == null)
            {
                throw new ArgumentNullException("Invalid user token!");
            }

            using (WebClient webClient = new WebClient())
            {
                NameValueCollection reqparm = new NameValueCollection();

                reqparm.Add("token", _userToken.Token);
                reqparm.Add("f", "json");

                byte[] responsebytes = webClient.UploadValues(serviceURL, "POST", reqparm);
                string responsebody  = Encoding.UTF8.GetString(responsebytes);

                //Check the result is error or not
                AGOL_Error_Wrapper error_Wrapper = (AGOL_Error_Wrapper)_ser.Deserialize(responsebody, typeof(AGOL_Error_Wrapper));
                if (error_Wrapper != null && error_Wrapper.Error != null && error_Wrapper.Error.Code != 0 && !String.IsNullOrEmpty(error_Wrapper.Error.Message))
                {
                    error = error_Wrapper.Error;
                    return(null);
                }

                return((ServiceInfo)_ser.Deserialize(responsebody, typeof(ServiceInfo)));
            }
        }
예제 #3
0
        private void bt_listOrgServices_Click(object sender, EventArgs e)
        {
            lv_services.Items.Clear();

            Log();

            Log("Listing all services...");

            AGOL_Error _AGOL_Error = null;

            try
            {
                _serviceItemList = _AGOL_Services.GetOrgServiceList(out _AGOL_Error);
                if (_AGOL_Error != null)
                {
                    Log("Getting service list failed! Error(" + _AGOL_Error.Code.ToString() + ") :" + _AGOL_Error.Message);
                    return;
                }

                if (_serviceItemList == null)
                {
                    Log("Getting service list failed! Unknown Error!");
                    return;
                }

                Log("Getting service successed. You have " + _serviceItemList.Count + " services!");
                UpdateServiceListView();
            }
            catch (Exception ex)
            {
                Log(ex);
            }
        }
        /// <summary>
        /// Get user's orgnization's service list
        /// </summary>
        /// <param name="error">Check this error if returned service list is null</param>
        /// <returns></returns>
        public List <ServiceItem> GetOrgServiceList(out AGOL_Error error)
        {
            error = null;
            if (_userToken == null || _userInfo == null)
            {
                throw new ArgumentNullException("Invalid user token!");
            }

            using (WebClient webClient = new WebClient())
            {
                Boolean            end             = false;
                int                index           = 0;
                List <ServiceItem> serviceItemList = new List <ServiceItem>();

                while (!end)
                {
                    NameValueCollection reqparm = new NameValueCollection();

                    reqparm.Add("token", _userToken.Token);
                    reqparm.Add("num", "100");
                    reqparm.Add("start", index.ToString());
                    reqparm.Add("sortField", "numViews");
                    reqparm.Add("sortOrder", "desc");
                    reqparm.Add("q", "orgid:" + _userInfo.OrgID);
                    reqparm.Add("f", "json");

                    byte[] responsebytes = webClient.UploadValues("https://www.arcgis.com/sharing/rest/search", "POST", reqparm);
                    string responsebody  = Encoding.UTF8.GetString(responsebytes);

                    //Check the result is error or not
                    AGOL_Error_Wrapper error_Wrapper = (AGOL_Error_Wrapper)_ser.Deserialize(responsebody, typeof(AGOL_Error_Wrapper));
                    if (error_Wrapper != null && error_Wrapper.Error != null && error_Wrapper.Error.Code != 0 && !String.IsNullOrEmpty(error_Wrapper.Error.Message))
                    {
                        error = error_Wrapper.Error;
                        end   = true;
                        break;
                    }

                    OrgServices_Wrapper services_Wrapper = (OrgServices_Wrapper)_ser.Deserialize(responsebody, typeof(OrgServices_Wrapper));

                    if (services_Wrapper == null)
                    {
                        end = true;
                    }
                    else if (services_Wrapper.Total != 100)
                    {
                        serviceItemList.AddRange(services_Wrapper.Results);
                        end = true;
                    }
                    else
                    {
                        serviceItemList.AddRange(services_Wrapper.Results);
                        index += 100;
                    }
                }

                return(serviceItemList);
            }
        }
        /// <summary>
        /// Generating user token from ArcGIS Online
        /// </summary>
        /// <param name="username">User name for generating token</param>
        /// <param name="password">Password for generating token</param>
        /// <param name="error">Check this error if returned user token is null</param>
        /// <param name="expiration">Expiration time in minutes. 60 minutes by default.</param>
        /// <returns></returns>
        public UserToken GenerateUserToken(String username, String password, out AGOL_Error error, int expiration = 60)
        {
            error = null;
            if (String.IsNullOrEmpty(username))
            {
                throw new ArgumentNullException("User Name");
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentNullException("Password");
            }

            using (WebClient webClient = new WebClient())
            {
                NameValueCollection reqparm = new NameValueCollection();

                reqparm.Add("username", username);
                reqparm.Add("password", password);
                reqparm.Add("referer", "localhost");
                reqparm.Add("expiration", expiration.ToString());
                reqparm.Add("f", "json");

                byte[] responsebytes = webClient.UploadValues("https://www.arcgis.com/sharing/rest/generateToken", "POST", reqparm);
                string responsebody  = Encoding.UTF8.GetString(responsebytes);

                //Check the result is error or not
                AGOL_Error_Wrapper error_Wrapper = (AGOL_Error_Wrapper)_ser.Deserialize(responsebody, typeof(AGOL_Error_Wrapper));
                if (error_Wrapper != null && error_Wrapper.Error != null && error_Wrapper.Error.Code != 0 && !String.IsNullOrEmpty(error_Wrapper.Error.Message))
                {
                    error = error_Wrapper.Error;
                    return(null);
                }

                UserToken userToken = (UserToken)_ser.Deserialize(responsebody, typeof(UserToken));
                if (userToken != null)
                {
                    _userToken = userToken;
                }

                return(_userToken);
            }
        }
        public QueryResult FeatureService_Layer_Query(String serviceURL, int layerID, String whereClause, out AGOL_Error error, Boolean returnGeometry = true, Boolean returnIdsOnly = false, Boolean returnCountOnly = false)
        {
            error = null;
            if (_userToken == null || _userInfo == null)
            {
                throw new ArgumentNullException("Invalid user token!");
            }
            if (String.IsNullOrEmpty(whereClause))
            {
                throw new ArgumentNullException("Where clause");
            }

            using (WebClient webClient = new WebClient())
            {
                NameValueCollection reqparm = new NameValueCollection();

                reqparm.Add("token", _userToken.Token);
                reqparm.Add("f", "json");
                reqparm.Add("where", whereClause);
                reqparm.Add("returnGeometry", returnGeometry.ToString());
                reqparm.Add("returnIdsOnly", returnIdsOnly.ToString());
                reqparm.Add("returnCountOnly", returnCountOnly.ToString());

                byte[] responsebytes = webClient.UploadValues(serviceURL + "/" + layerID.ToString() + "/query", "POST", reqparm);
                string responsebody  = Encoding.UTF8.GetString(responsebytes);

                //Check the result is error or not
                AGOL_Error_Wrapper error_Wrapper = (AGOL_Error_Wrapper)_ser.Deserialize(responsebody, typeof(AGOL_Error_Wrapper));
                if (error_Wrapper != null && error_Wrapper.Error != null && error_Wrapper.Error.Code != 0 && !String.IsNullOrEmpty(error_Wrapper.Error.Message))
                {
                    error = error_Wrapper.Error;
                    return(null);
                }

                return((QueryResult)_ser.Deserialize(responsebody, typeof(QueryResult)));
            }
        }
        public DeleteFeaturesResult FeatureService_DeleteFeatures(String serviceURL, int layerID, List <int> OBJECTIDs, String whereClause, out AGOL_Error error)
        {
            error = null;
            if (_userToken == null || _userInfo == null)
            {
                throw new ArgumentNullException("Invalid user token!");
            }

            using (WebClient webClient = new WebClient())
            {
                NameValueCollection reqparm = new NameValueCollection();

                reqparm.Add("token", _userToken.Token);
                reqparm.Add("f", "json");
                if (OBJECTIDs != null && OBJECTIDs.Count > 0)
                {
                    reqparm.Add("objectIds", String.Join(",", OBJECTIDs));
                }
                if (!String.IsNullOrEmpty(whereClause))
                {
                    reqparm.Add("where", whereClause);
                }

                byte[] responsebytes = webClient.UploadValues(serviceURL + "/" + layerID.ToString() + "/deleteFeatures", "POST", reqparm);
                string responsebody  = Encoding.UTF8.GetString(responsebytes);

                //Check the result is error or not
                AGOL_Error_Wrapper error_Wrapper = (AGOL_Error_Wrapper)_ser.Deserialize(responsebody, typeof(AGOL_Error_Wrapper));
                if (error_Wrapper != null && error_Wrapper.Error != null && error_Wrapper.Error.Code != 0 && !String.IsNullOrEmpty(error_Wrapper.Error.Message))
                {
                    error = error_Wrapper.Error;
                    return(null);
                }

                return((DeleteFeaturesResult)_ser.Deserialize(responsebody, typeof(DeleteFeaturesResult)));
            }
        }
예제 #8
0
        private void bt_signIn_Click(object sender, EventArgs e)
        {
            Log();
            String userName = tb_userName.Text;
            String password = tb_password.Text;

            if (String.IsNullOrEmpty(userName) || String.IsNullOrEmpty(password))
            {
                Log("User name or password cannot be empty!");
                return;
            }

            Log("Sending user name/password to generate token...");
            AGOL_Error _AGOL_Error = null;

            try
            {
                UserToken _userToken = _AGOL_Services.GenerateUserToken(userName, password, out _AGOL_Error);
                if (_AGOL_Error != null)
                {
                    Log("Generate user token failed! Error(" + _AGOL_Error.Code.ToString() + ") :" + _AGOL_Error.Message);
                    return;
                }

                if (_userToken == null)
                {
                    Log("Generate user token failed! Unknown Error!");
                    return;
                }

                Log("New token generated: " + _userToken.Token + " (expires on " + UnixTimeStampToDateTime(_userToken.Expires).ToString() + ")");
                Log();

                Log("Getting user's info...");
                UserInfo _userInfo = _AGOL_Services.GetUserInfo(out _AGOL_Error);
                if (_AGOL_Error != null)
                {
                    Log("Getting user info failed! Error(" + _AGOL_Error.Code.ToString() + ") :" + _AGOL_Error.Message);
                    return;
                }

                if (_userToken == null)
                {
                    Log("Getting user info failed! Unknown Error!");
                    return;
                }

                Log(String.Format("Your user info: Email - {0} Role - {1}", _userInfo.Email, _userInfo.Role));

                bt_listServices.Enabled   = true;
                bt_listWebMaps.Enabled    = true;
                cb_featureService.Enabled = true;
                cb_mapService.Enabled     = true;
                cb_webMap.Enabled         = true;
                cb_others.Enabled         = true;
            }
            catch (Exception ex)
            {
                Log(ex);
            }
        }