示例#1
0
文件: Api.cs 项目: lite/yebob_wp
        public static void rankingTops(String token, String list_id, int count, int start_row, String time_type, String relation_type, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/ranking/tops?list_id={1}&count={2}&start_row={3}&time_type={4}&relation_type={5}",
                URL_PREFIX, list_id, count, start_row, time_type, relation_type);

            getWithToken(token, url, handler, onError);
        }
示例#2
0
        private static void getWithToken(String token, String url, YebobHandler handler, ErrorHandler onError)
        {
            HttpWebRequest request = WebRequest.CreateHttp(url);

            request.Headers["access_token"] = token;
            get(request, handler, onError);
        }
示例#3
0
 private static void handleResponse(String response, YebobHandler handler, ErrorHandler onError)
 {
     if (response == null)
     {
         String msg = "sorry, I can't get the data from server.";
         onError(ERROR.RESPONSE_IS_NONE, msg);
         return;
     }
     try
     {
         JsonValue json = JsonValue.Parse(response);
         if (json.ContainsName("ret"))
         {
             String msg = json.GetValue <String>("msg");
             onError(ERROR.RESPONSE_HAS_ERROR, msg);
         }
         else
         {
             if (handler != null)
             {
                 handler(json);
             }
         }
     }
     catch (Exception e)
     {
         onError(ERROR.RESPONSE_HAS_EXCEPTION, response);
     }
 }
示例#4
0
        private static void get(HttpWebRequest request, YebobHandler handler, ErrorHandler onError)
        {
            request.AllowReadStreamBuffering = true;
            var ob = Observable.FromAsyncPattern <WebResponse>(request.BeginGetResponse, request.EndGetResponse);

            if (onError == null)
            {
                onError = new ErrorHandler(defaultErrorHandler);
            }

            Log.d("Yebob send " + DateTime.Now);
            Observable.Timeout(ob.Invoke(), DateTimeOffset.Now.AddSeconds(10))
            .ObserveOnDispatcher()     //include if UI accessed from subscribe
            .Subscribe(response =>
            {
                Log.d("Yebob recv " + DateTime.Now);
                using (var responseStream = response.GetResponseStream())
                {
                    using (var sr = new StreamReader(responseStream, Encoding.UTF8))
                    {
                        String result = sr.ReadToEnd();
                        handleResponse(result, handler, onError);
                    }
                }
            }, ex =>
            {
                Log.e("Yebob error " + ex.Message);
                onError(ERROR.HTTP_HAS_EXCEPTION, "Yebob error " + ex.Message);
                request.Abort();
            });
        }
示例#5
0
        public static void login(String token, String community, String code, String state, String redirect_url, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/login?community={1}&code={2}&state={3}&redirect_url={4}",
                                       URL_PREFIX, community, code, state, redirect_url);

            getWithToken(token, url, handler, onError);
        }
示例#6
0
        public static void accessToken(String app_id, String secret, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/access_token?app_id={1}&secret={2}", URL_PREFIX, app_id, secret);

            get(url, handler, onError);
        }
示例#7
0
        private static void get(String url, YebobHandler handler, ErrorHandler onError)
        {
            HttpWebRequest request = WebRequest.CreateHttp(url);

            get(request, handler, onError);
        }
示例#8
0
        public static void rankingTops(String token, String list_id, int count, int start_row, String time_type, String relation_type, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/ranking/tops?list_id={1}&count={2}&start_row={3}&time_type={4}&relation_type={5}",
                                       URL_PREFIX, list_id, count, start_row, time_type, relation_type);

            getWithToken(token, url, handler, onError);
        }
示例#9
0
文件: Api.cs 项目: lite/yebob_wp
 private static void get(String url, YebobHandler handler, ErrorHandler onError)
 {
     HttpWebRequest request = WebRequest.CreateHttp(url);
     get(request, handler, onError);
 }
示例#10
0
        public static void me(String token, String session, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/me", URL_PREFIX);

            getWithTokenSession(token, session, url, handler, onError);
        }
示例#11
0
        public static void scoreSubmit(String token, String session, String list_id, long score, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/score/submit?list_id={1}&score={2}",
                                       URL_PREFIX, list_id, score);

            getWithTokenSession(token, session, url, handler, onError);
        }
示例#12
0
文件: Api.cs 项目: lite/yebob_wp
        public static void me(String token, String session, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/me", URL_PREFIX);

            getWithTokenSession(token, session, url, handler, onError);
        }
示例#13
0
文件: Api.cs 项目: lite/yebob_wp
        public static void rankingLists(String token, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/ranking/lists", URL_PREFIX);

            getWithToken(token, url, handler, onError);
        }
示例#14
0
文件: Api.cs 项目: lite/yebob_wp
 public static void login(String token, String community, String code, String state, String redirect_url, YebobHandler handler, ErrorHandler onError)
 {
     String url = String.Format("{0}/login?community={1}&code={2}&state={3}&redirect_url={4}",
             URL_PREFIX, community, code, state, redirect_url);
     getWithToken(token, url, handler, onError);
 }
示例#15
0
文件: Api.cs 项目: lite/yebob_wp
        public static void accessToken(String app_id, String secret, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/access_token?app_id={1}&secret={2}", URL_PREFIX, app_id, secret);

            get(url, handler, onError);
        }
示例#16
0
文件: Api.cs 项目: lite/yebob_wp
 private static void handleResponse(String response, YebobHandler handler, ErrorHandler onError)
 {
     if (response == null)
     {
         String msg = "sorry, I can't get the data from server.";
         onError(ERROR.RESPONSE_IS_NONE, msg);
         return;
     }
     try
     {
         JsonValue json = JsonValue.Parse(response);
         if (json.ContainsName("ret"))
         {
             String msg = json.GetValue<String>("msg");
             onError(ERROR.RESPONSE_HAS_ERROR, msg);
         }
         else
         {
             if (handler != null)
             {
                 handler(json);
             }
         }
     }
     catch (Exception e)
     {
         onError(ERROR.RESPONSE_HAS_EXCEPTION, response);
     }
 }
示例#17
0
文件: Api.cs 项目: lite/yebob_wp
 private static void getWithTokenSession(String token, String session, String url, YebobHandler handler, ErrorHandler onError)
 {
     HttpWebRequest request = WebRequest.CreateHttp(url);
     request.Headers["access_token"] = token;
     request.Headers["session"] = session;
     get(request, handler, onError);
 }
示例#18
0
文件: Api.cs 项目: lite/yebob_wp
        private static void get(HttpWebRequest request, YebobHandler handler, ErrorHandler onError)
        {
            request.AllowReadStreamBuffering = true;
            var ob = Observable.FromAsyncPattern<WebResponse>(request.BeginGetResponse, request.EndGetResponse);

            if(onError == null){
                onError = new ErrorHandler(defaultErrorHandler);
            }

            Log.d("Yebob send " + DateTime.Now);
            Observable.Timeout(ob.Invoke(), DateTimeOffset.Now.AddSeconds(10))
                .ObserveOnDispatcher() //include if UI accessed from subscribe
                .Subscribe(response =>
                {
                    Log.d("Yebob recv " + DateTime.Now);
                    using (var responseStream = response.GetResponseStream())
                    {
                        using (var sr = new StreamReader(responseStream, Encoding.UTF8))
                        {
                            String result = sr.ReadToEnd();
                            handleResponse(result, handler, onError);
                        }
                    }
                }, ex =>
                {
                    Log.e("Yebob error " + ex.Message);
                    onError(ERROR.HTTP_HAS_EXCEPTION, "Yebob error " + ex.Message);
                    request.Abort();
                });
        }
示例#19
0
        public static void share(String token, String session, String text, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/share?text={1}", URL_PREFIX, text);

            getWithTokenSession(token, session, url, handler, onError);
        }
示例#20
0
文件: Api.cs 项目: lite/yebob_wp
        public static void scoreSubmit(String token, String session, String list_id, long score, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/score/submit?list_id={1}&score={2}",
                    URL_PREFIX, list_id, score);

            getWithTokenSession(token, session, url, handler, onError);
        }
示例#21
0
        public static void rankingLists(String token, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/ranking/lists", URL_PREFIX);

            getWithToken(token, url, handler, onError);
        }
示例#22
0
文件: Api.cs 项目: lite/yebob_wp
        public static void share(String token, String session, String text, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/share?text={1}", URL_PREFIX, text);

            getWithTokenSession(token, session, url, handler, onError);
        }
示例#23
0
        public static void statusExists(String token, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/status/exists", URL_PREFIX);

            getWithToken(token, url, handler, onError);
        }
示例#24
0
文件: Api.cs 项目: lite/yebob_wp
        public static void statusGet(String token, YebobHandler handler, ErrorHandler onError)
        {
            String url = String.Format("{0}/status/get", URL_PREFIX);

            getWithToken(token, url, handler, onError);
        }