예제 #1
0
파일: Request.cs 프로젝트: zyuhua/devfw
        /// <summary>
        /// 调用UCenter API
        /// </summary>
        /// <param name="api"></param>
        /// <returns></returns>
        public static object CallUCenterAPI(HttpContext context, IUCenterAPI api)
        {
            //判断请求的主机
            string referer = context.Request.Headers["referer"];

            if (!Regex.IsMatch(referer, hostPattern))
            {
                return("404");
            }

            //因为包含+传递过来为" ",则需先转码再解码
            string query = context.Server.UrlDecode(context.Server.UrlEncode(context.Request["code"]));

            //等同于以下这句
            //string query = context.Server.UrlEncode(context.Request["code"]).Replace("%2b","+").Replace("%2f","/");

            System.Collections.Specialized.NameValueCollection parameters = HttpUtility.ParseQueryString
                                                                                (Authcode.DiscuzAuthcodeDecode(query, UC_KEY));

            #region 记录参数

            /*
             * StringBuilder sb = new StringBuilder();
             * sb.Append(query).Append("\r\n");
             * sb.Append(Authcode.DiscuzAuthcodeDecode(query, UC_KEY));
             * foreach (string s in parameters.Keys)
             * {
             *  sb.Append("\r\n").Append(s).Append(":" + parameters[s]);
             * }
             * TraceLog.Record(sb.ToString());
             */
            #endregion
            #region 记录日志

            /*
             * StringBuilder sb = new StringBuilder();
             *
             * using (Stream stream = context.Request.InputStream)
             * {
             *  byte[] buffer = new byte[100];
             *  int count;
             *  if (stream.Length != 0)
             *  {
             *      do
             *      {
             *          count = stream.Read(buffer, 0, buffer.Length);
             *          sb.Append(Encoding.Default.GetString(buffer));
             *      } while (count != 0);
             *  }
             * }
             * string streamContent = sb.ToString();
             *
             * sb.Remove(0, sb.Length);
             *
             * NameValueCollection _params = context.Request.Params;
             *
             * foreach (string a in _params.Keys)
             * {
             *  sb.Append("&").Append(a).Append("=").Append(_params[a]);
             * }
             *
             * TraceLog.Record(Authcode.DiscuzAuthcodeDecode(query, UC_KEY)+"\r\nMethod:"+context.Request.HttpMethod+
             *         "\r\nParams:"+sb.ToString()+"\r\nStream:"+streamContent+context.Request["action"]);
             *
             */
            #endregion

            switch (parameters["action"])
            {
            case "test":
                TraceLog.Record("与UCenter建立通信成功!");
                return("1");

            case "addfeed":
                return(api.AddFeed());

            case "deleteuser":
                return(api.DeleteUser(parameters["ids"]));

            case "synlogin":
                api.SyncLogin(parameters["username"], parameters["password"]); return("");

            case "synlogout":
                api.SyncLogout(); return("");

            case "updatepw":
                return(api.Edit(parameters["username"], parameters["oldpw"], parameters["newpw"], parameters["email"], true));

            case "getcreditsettings":
                break;

            case "gettag":
                break;

            case "renameuser":
                return(api.RenameUser(int.Parse(parameters["uid"]), parameters["oldusername"], parameters["newusername"]));



            case "updateapps":
                break;

            case "updatebadwords":
                break;

            case "updateclient":
                break;

            case "updatecredit":
                break;

            case "updatecreditsettings":
                break;

            case "updatehosts":
                break;
            }
            return("");
        }