예제 #1
0
        /// <summary>
        /// Locapos へ位置情報を送信します。
        /// </summary>
        /// <param name="latitude">送信する位置の緯度。</param>
        /// <param name="longitude">送信する位置の経度。</param>
        /// <param name="heading">送信する移動時の向き。真北を 0 とし、0 - 359 または -180 - 0 - 180 のどれかで指定ができ、また null を指定した場合は、相手には前の位置からの推測で表示されます。</param>
        /// <param name="privatePost">Locapos の公開地図に表示するかどうか。</param>
        /// <param name="groupId">任意グループに対して送信する場合はその ID を指定します。</param>
        /// <returns></returns>
        public async Task <BaseResponse> UpdateAsync(double latitude, double longitude, double?heading = null, bool privatePost = false, string groupId = "")
        {
            this.client.CheckToken();

            var http = LocaposClientInternal.GetHttpClient(this.client.ClientToken);

            var contentsDict = new Dictionary <string, string>
            {
                { "latitude", latitude.ToString(CultureInfo.InvariantCulture) },
                { "longitude", longitude.ToString(CultureInfo.InvariantCulture) }
            };

            if (heading.HasValue)
            {
                contentsDict.Add("heading", heading.Value.ToString(CultureInfo.InvariantCulture));
            }
            if (privatePost)
            {
                contentsDict.Add("private", "true");
            }
            if (!string.IsNullOrWhiteSpace(groupId))
            {
                contentsDict.Add("key", groupId);
            }

            var contents = new FormUrlEncodedContent(contentsDict);
            var request  = await LocaposClientInternal.CreatePostRequestAsync(updateUri, contents, true);

            var response = await http.SendAsync(request);

            var result = new BaseResponse();
            await result.SetResponseAsync(response);

            return(result);
        }
예제 #2
0
        /// <summary>
        /// 自分自身を示す暗黙的なグループ ハッシュを取得します。
        /// </summary>
        /// <returns></returns>
        public async Task <GroupHashResponse> Share()
        {
            this.client.CheckToken();

            var http     = LocaposClientInternal.GetHttpClient(this.client.ClientToken);
            var request  = LocaposClientInternal.CreateGetRequest(shareUri);
            var response = await http.SendAsync(request);

            var result = new GroupHashResponse();
            await result.SetResponseAsync(response);

            return(result);
        }
예제 #3
0
        /// <summary>
        /// 現在アクティブなユーザーの情報を取得します。<paramref name="groupId"/> を使用して、該当するグループの絞り込みをおこないます。
        /// </summary>
        /// <param name="groupId">指定した場合、該当するグループ ID でアクティブなユーザー一覧を取得します。</param>
        /// <returns></returns>
        public async Task <UsersShowResponse> Show(string groupId = "")
        {
            this.client.CheckToken();

            var http    = LocaposClientInternal.GetHttpClient(this.client.ClientToken);
            var request = LocaposClientInternal.CreateGetRequest(showUri +
                                                                 (!string.IsNullOrWhiteSpace(groupId) ? "?key=" + groupId : string.Empty));
            var response = await http.SendAsync(request);

            var result = new UsersShowResponse();
            await result.SetResponseAsync(response);

            return(result);
        }
예제 #4
0
        public async Task <BaseResponse> Update(string screenName)
        {
            this.client.CheckToken();

            var http        = LocaposClientInternal.GetHttpClient(this.client.ClientToken);
            var contentDict = new Dictionary <string, string>
            {
                { "screen_name", screenName }
            };

            var content = new FormUrlEncodedContent(contentDict);

            var request = await LocaposClientInternal.CreatePostRequestAsync(updateNameUri, content);

            var response = await http.SendAsync(request);

            var result = new BaseResponse();
            await result.SetResponseAsync(response);

            return(result);
        }