コード例 #1
0
 public static List <HdfsFileInfo> ParseJsonArray(string json)
 {
     try
     {
         if (string.IsNullOrWhiteSpace(json))
         {
             return(null);
         }
         var jObj = JsonConvert.DeserializeObject(json);
         if (null == jObj)
         {
             throw new Exception("HdfsFileInfo Json解析错误");
         }
         var statusArray           = (jObj as JObject)["FileStatuses"]["FileStatus"] as JArray;
         List <HdfsFileInfo> files = new List <HdfsFileInfo>();
         foreach (var item in statusArray)
         {
             files.Add(FromJson(item as JObject));
         }
         return(files);
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         return(null);
     }
 }
コード例 #2
0
        public async Task <string> Upload(HttpPostedFileBase captcha)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (captcha != null)
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
                            captcha.InputStream.CopyTo(ms);
                            var captchaModel = new Captcha()
                            {
                                Image       = ms.GetBuffer(),
                                Passed      = false,
                                CreatedTime = DateTime.Now
                            };

                            db.Captchas.Add(captchaModel);
                            db.SaveChanges();
                            var captchaResult = await GetCaptChaResult(captchaModel.Id);

                            return(SerializerHelper.SerializeJsonObject(captchaResult));
                        }
                    }
                }
                catch (Exception ex)
                {
                    DebugHelper.Error(ex);
                }
            }
            return("");
        }
コード例 #3
0
 public void Receive(string from, string to, string content, string date)
 {
     if (ModelState.IsValid)
     {
         try
         {
             if (!string.IsNullOrEmpty(content))
             {
                 var OTPModel = new OTP()
                 {
                     Content     = content,
                     Passed      = false,
                     CreatedTime = DateTime.Parse(date),
                     From        = from,
                     To          = to
                 };
                 ParseOTP(OTPModel);
                 db.OTPs.Add(OTPModel);
                 db.SaveChanges();
             }
         }
         catch (Exception ex)
         {
             DebugHelper.Error(ex);
         }
     }
 }
コード例 #4
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
        public static HttpResult ReadFilePart(string file, long offset, long size)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(file))
                {
                    throw new ArgumentNullException("file");
                }
                if (null == GetStatus(file))
                {
                    return new HttpResult()
                           {
                               Code     = -1,
                               ErrorLog = "File Not Exist."
                           }
                }
                ;

                string args     = string.Format("&offset={0}&length={1}", offset, size);
                string url      = BuildUrl(file, WebHdfsAPI.OPEN, "user.name=hadoop&noredirect=false" + args);
                string redirUrl = HttpClientHelperV45.GetRedirectedURL(url, HttpMethod.GET);
                if (!string.IsNullOrWhiteSpace(redirUrl))
                {
                    url = TranslateHostname(redirUrl);
                }
                return(HttpClientHelperV45.Request(url, new TimeSpan(0, 0, 6)));
            }
            catch (Exception ex)
            {
                DebugHelper.OutLog("获取HDFS文件失败:" + ex.Message);
                DebugHelper.Error(ex, ex.Message);
                return(null);
            }
        }
コード例 #5
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
        /// <summary>
        /// 上传文件(自动生成上级目录)
        /// </summary>
        /// <param name="srcFile">本地文件路径</param>
        /// <param name="hdfsPath">HDFS目标路径</param>
        /// <param name="errlog">日志信息</param>
        /// <returns></returns>
        public static bool UploadFile(string srcFile, string hdfsPath, out string errlog)
        {
            try
            {
                // 确保目录存在
                MkDir(hdfsPath);

                // 自动拼接文件名
                string fileName = new FileInfo(srcFile).Name;
                if (!hdfsPath.Contains(fileName))
                {
                    hdfsPath += "/" + fileName;
                }

                // Step 1. redirect to datanode
                // CAUSE: avoid sending file data before the server redirection.  and Jetty 6 server didn't implement "Expect: 100-continue" protocol.
                string url = BuildUrl(hdfsPath, WebHdfsAPI.UPLOAD,
                                      "user.name=hadoop&overwrite=true&noredirect=true");

                /*string result = HttpClientHelperV45.PutResponse(url);
                 * if (!string.IsNullOrWhiteSpace(result) && result.Contains("Location"))
                 * {
                 *  url = result.Substring(result.IndexOf("http:", StringComparison.OrdinalIgnoreCase));
                 *  url = url.Remove(url.IndexOf("\""));
                 * }
                 **/
                //Hadoop 2.7.1 服务端总是会重定向(307 TEMPORARY_REDIRECT),noredirect=true参数根本不管用
                string redirUrl = HttpClientHelperV45.GetRedirectedURL(url, HttpMethod.PUT);
                if (!string.IsNullOrWhiteSpace(redirUrl))
                {
                    url = TranslateHostname(redirUrl);
                    DebugHelper.OutLog("Redirect to " + url);
                }

                // Step 2. upload file to datanode
                using (FileStream fs = new FileStream(srcFile, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    string response = HttpClientHelperV45.HttpUpload(url, fs, HttpMethod.PUT);
                    fs.Close();
                }
                errlog = "succeed";
                return(true);
            }
            catch (System.Exception ex)
            {
                string err = ex.Message;
                if (ex is WebException)
                {
                    err = HttpClientHelperV45.ParseHdfsWebException(ex as WebException);
                }
                DebugHelper.OutLog("上传文件到HDFS失败:" + err);
                DebugHelper.Error(ex, err);
                errlog = err;
                return(false);
            }
        }
コード例 #6
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 /// <summary>
 /// 列举当前目录内容
 /// </summary>
 /// <param name="path">HDFS路径</param>
 /// <returns></returns>
 public static List <HdfsFileInfo> LsDir(string path)
 {
     try
     {
         string url    = BuildUrl(path, WebHdfsAPI.LIST);
         string result = HttpClientHelperV45.Get(url);
         return(HdfsFileInfo.ParseJsonArray(result));
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         return(null);
     }
 }
コード例 #7
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 /// <summary>
 /// 删除路径
 /// </summary>
 /// <param name="path">文件或路径名</param>
 /// <param name="recursively">是否删除所有下级子目录和文件</param>
 /// <returns></returns>
 public static bool RmDir(string path, bool recursively = true)
 {
     try
     {
         string url = BuildUrl(path, WebHdfsAPI.RM, "recursive=true");
         HttpClientHelperV45.Delete(url);
         return(true);
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         return(false);
     }
 }
コード例 #8
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 /// <summary>
 /// 创建目录(自动创建上级目录)
 /// </summary>
 /// <param name="path">HDFS路径</param>
 /// <returns></returns>
 public static bool MkDir(string path)
 {
     try
     {
         string url = BuildUrl(path, WebHdfsAPI.MKDIR, "user.name=hadoop");
         HttpClientHelperV45.Put(url);
         return(true);
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         return(false);
     }
 }
コード例 #9
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 /// <summary>
 /// 获取文件或路径的详细信息
 /// </summary>
 /// <param name="file">文件或路径名</param>
 /// <returns></returns>
 public static HdfsFileInfo GetStatus(string file)
 {
     try
     {
         string url    = BuildUrl(file, WebHdfsAPI.FILESTATUS);
         string result = HttpClientHelperV45.Get(url);
         return(HdfsFileInfo.FromJson(result));
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         return(null);
     }
 }
コード例 #10
0
 protected override async void OnCreate(Bundle savedInstanceState)
 {
     base.OnCreate(savedInstanceState);
     SetContentView(Resource.Drawable.splash);
     this.imgSplash = FindViewById <ImageView>(Resource.Id.imgSplash);
     try
     {
         RandomAdvice();
         GetData();
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
     }
 }
コード例 #11
0
 void LoadDataFromCache()
 {
     try
     {
         DebugHelper.Method(MethodBase.GetCurrentMethod());
         this.GlobalReport    = SharedPreferencesHandler.GetCovidReport(this);
         this.CountriesReport = SharedPreferencesHandler.GetCountriesReport(this);
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         Toast.MakeText(this, Resources.GetString(Resource.String.impossible_to_start), ToastLength.Short);
         Finish();
     }
 }
コード例 #12
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 public static bool CombineFiles(string destHdfsFile, params string[] srcHdfsFiles)
 {
     try
     {
         string srcs     = string.Join(",", srcHdfsFiles);
         string url      = BuildUrl(destHdfsFile, WebHdfsAPI.CONCAT, "user.name=hadoop&sources=" + srcs);
         string statcode = "";
         HttpClientHelperV45.Post(url, "", out statcode);
         return("OK".Equals(statcode.ToUpper()));
     }
     catch (Exception ex)
     {
         DebugHelper.Error(ex);
         return(false);
     }
 }
コード例 #13
0
        public async Task <string> Fetch(string phoneNumber, string Reference)
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(phoneNumber))
                {
                    var OTPResult = await GetOTPResult(phoneNumber, Reference);

                    return(SerializerHelper.SerializeJsonObject(OTPResult));
                }
            }
            catch (Exception ex)
            {
                DebugHelper.Error(ex);
            }
            return("");
        }
コード例 #14
0
        public ActionResult Input(int Id, string Ref, string Result)
        {
            try
            {
                var OTPModel = db.OTPs.Where(x => x.Id == Id).FirstOrDefault();
                OTPModel.Ref             = Ref;
                OTPModel.Result          = Result;
                db.Entry(OTPModel).State = EntityState.Modified;
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                DebugHelper.Error(ex);
            }
            var OTPModels = db.OTPs.Where(x => x.Passed == false).ToList();

            return(View(OTPModels));
        }
コード例 #15
0
        public bool Login(string username, string password)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                throw new InvalidParameterException("Username/Password cannot be empty.");
            }

            var dt          = GetDbTable(username, password);
            var dbErrorCode = dt.Rows[0].Field <int>("ErrorCode");

            if (dbErrorCode.Equals(0))
            {
                return(true);
            }

            DebugHelper.Error($"{username} login failed. DbErrorCode:{dbErrorCode}");
            return(false);
        }
コード例 #16
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 /// <summary>
 /// 新建文件
 /// </summary>
 /// <param name="hdfsFile">文件名(绝对路径)</param>
 /// <returns></returns>
 public static bool NewFile(string hdfsFile)
 {
     try
     {
         string dir = hdfsFile.Substring(0, hdfsFile.LastIndexOf('/'));
         if (string.IsNullOrWhiteSpace(dir))
         {
             dir = "/";
         }
         string fileName = hdfsFile.Substring(hdfsFile.LastIndexOf('/') + 1);
         return(UploadStream(new MemoryStream(), 0, 0, dir, fileName));
     }
     catch (System.Exception ex)
     {
         DebugHelper.Error(ex);
         return(false);
     }
 }
コード例 #17
0
        public static string Put(string url, string content = "")
        {
            try
            {
                if (url.StartsWith("https"))
                {
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                }

                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

                HttpContent httpContent = new StringContent(content);
                httpContent.Headers.ContentType         = new MediaTypeHeaderValue("application/json");
                httpContent.Headers.ContentType.CharSet = "utf-8";

                HttpResponseMessage response = httpClient.PutAsync(url, httpContent).Result;
                string statusCode            = response.StatusCode.ToString();
                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    return(result);
                }
                return(null);
            }
            catch (WebException webex)
            {
                var    resp = (HttpWebResponse)webex.Response;
                string err  = webex.Message;
                if (null != resp)
                {
                    err = string.Format("{0} {1}", (int)resp.StatusCode, resp.StatusCode);
                }
                DebugHelper.OutLog(err);
                return(null);
            }
            catch (Exception ex)
            {
                DebugHelper.Error(ex);
                return(null);
            }
        }
コード例 #18
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
 /// <summary>
 /// 下载HDFS文件
 /// </summary>
 /// <param name="file">文件名</param>
 /// <returns></returns>
 public static byte[] GetFile(string file)
 {
     try
     {
         if (string.IsNullOrWhiteSpace(file))
         {
             throw new ArgumentNullException("file");
         }
         if (null == GetStatus(file))
         {
             return(Encoding.UTF8.GetBytes("File Not Exist."));
         }
         string url      = BuildUrl(file, WebHdfsAPI.OPEN, "user.name=atlas&noredirect=false");
         string redirUrl = HttpClientHelperV45.GetRedirectedURL(url, HttpMethod.GET);
         if (!string.IsNullOrWhiteSpace(redirUrl))
         {
             url = TranslateHostname(redirUrl);
         }
         HttpResult res = HttpClientHelperV45.Request(url, new TimeSpan(1, 0, 0));
         if (200 == res.Code)
         {
             return(res.Content);
         }
         else
         {
             throw new Exception(res.ErrorLog);
         }
     }
     catch (Exception ex)
     {
         string err = ex.Message;
         if (ex is WebException)
         {
             err = HttpClientHelperV45.ParseHdfsWebException(ex as WebException);
         }
         DebugHelper.OutLog("获取HDFS文件失败:" + err);
         DebugHelper.Error(ex, err);
         return(null);
     }
 }
コード例 #19
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
        public static bool UploadStream(Stream ins, long offset, long length, string hdfsDir, string fileName)
        {
            try
            {
                // 确保目录存在
                MkDir(hdfsDir);
                // 拼接文件名
                string hdfsFile = hdfsDir + "/" + fileName;
                if (hdfsDir.EndsWith("/"))
                {
                    hdfsFile = hdfsDir + fileName;
                }

                // Step 1. redirect to datanode
                string url = BuildUrl(hdfsFile, WebHdfsAPI.UPLOAD,
                                      "user.name=hadoop&overwrite=true&noredirect=true");
                string redirUrl = HttpClientHelperV45.GetRedirectedURL(url, HttpMethod.PUT);
                if (!string.IsNullOrWhiteSpace(redirUrl))
                {
                    url = TranslateHostname(redirUrl);
                    DebugHelper.OutLog("Redirect to " + url);
                }
                // Step 2. upload file to datanode
                string response = HttpClientHelperV45.HttpUpload(url, ins, offset, length, HttpMethod.PUT);
                return(null != response);
            }
            catch (System.Exception ex)
            {
                string err = ex.Message;
                if (ex is WebException)
                {
                    err = HttpClientHelperV45.ParseHdfsWebException(ex as WebException);
                }
                DebugHelper.OutLog("上传文件到HDFS失败:" + err);
                DebugHelper.Error(ex, err);
                return(false);
            }
        }
コード例 #20
0
        public static HdfsFileInfo FromJson(string status)
        {
            if (string.IsNullOrWhiteSpace(status))
            {
                return(null);
            }
            var jObj = JsonConvert.DeserializeObject(status);

            if (null == jObj)
            {
                throw new Exception("HdfsFileInfo Json解析错误");
            }
            try
            {
                var jStatus = (jObj as JObject)["FileStatus"] as JObject;
                return(FromJson(jStatus));
            }
            catch (Exception ex)
            {
                DebugHelper.Error(ex);
                return(null);
            }
        }
コード例 #21
0
        /// <summary>
        /// 获取服务重定向后的URL地址,便于手动处理重定向
        /// </summary>
        /// <param name="url">请求的服务地址</param>
        /// <param name="method">请求方法</param>
        /// <returns></returns>
        public static string GetRedirectedURL(string url, HttpMethod method)
        {
            try
            {
                string redirectUrl = null;
                HttpWebReqWrapper.Call(url, method,
                                       // 请求参数设置
                                       (HttpWebRequest req) =>
                {
                    //req.Headers[HttpRequestHeader.Authorization] = "token";
                    req.AllowAutoRedirect = false;
                    return(req);
                },
                                       // 响应结果提取
                                       (HttpWebResponse rep) =>
                {
                    int code = (int)rep.StatusCode;
                    if (307 == code || 301 == code)
                    {
                        redirectUrl = rep.Headers[HttpResponseHeader.Location];
                    }
                    return(rep);
                });

                return(redirectUrl);
            }
            catch (Exception ex)
            {
                string err = ex.Message;
                if (ex is WebException)
                {
                    err = ParseHdfsWebException(ex as WebException);
                }
                DebugHelper.Error(ex);
                return(null);
            }
        }
コード例 #22
0
ファイル: HdfsHelper.cs プロジェクト: skyfrog0/HDFSWind
        public static Dictionary <string, string> GetDataNodes()
        {
            Dictionary <string, string> dict = new Dictionary <string, string>();

            try
            {
                string url     = "HTTP://" + WebHdfsHost + WebHdfsAPI.HDFS_LIVENODES;
                string jsonstr = HttpClientHelperV45.Get(url);
                if (string.IsNullOrWhiteSpace(jsonstr))
                {
                    return(null);
                }
                var jObj = JsonConvert.DeserializeObject(jsonstr);
                if (null == jObj)
                {
                    throw new Exception("HDFS LiveNodes Json解析错误");
                }
                var liveNodes = (jObj as JObject)["beans"][0]["LiveNodes"] as JValue;

                var jobjNodes = JsonConvert.DeserializeObject(liveNodes.ToString()) as JObject;
                foreach (var jprop in jobjNodes.Properties())
                {
                    string hname = jprop.Name.Split(':')[0];
                    string addr  = (jprop.Value as JObject)["infoAddr"].ToString();
                    string ip    = addr.Split(':')[0];
                    dict.Add(hname, ip);
                }

                return(dict);
            }
            catch (Exception ex)
            {
                DebugHelper.Error(ex);
                return(null);
            }
        }
コード例 #23
0
        public static string HttpUpload(string url, Stream ins, long offset, long length,
                                        HttpMethod method = HttpMethod.PUT)
        {
            try
            {
                if (url.StartsWith("https"))
                {
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                }

                string result = null;
                HttpWebReqWrapper.Call(url, method,
                                       // 请求参数设置
                                       (HttpWebRequest req) =>
                {
                    //req.Headers[HttpRequestHeader.ContentType] = "application/octet-stream";  // 特定标头不能这么设置
                    req.ContentType      = "application/octet-stream";
                    req.Timeout          = IO_TIMEOUT;
                    req.ReadWriteTimeout = IO_TIMEOUT;
                    req.SendChunked      = true;
                    using (Stream outstream = req.GetRequestStream())
                    {
                        ins.Seek(offset, SeekOrigin.Begin);
                        long endPos   = offset + length;
                        int c         = 1024 * 8;
                        byte[] buffer = new byte[c];
                        while (ins.Position < endPos)
                        {
                            int l = ins.Read(buffer, 0, c);
                            if (ins.Position > endPos)
                            {
                                l = l - (int)(ins.Position - endPos);
                            }
                            if (l <= 0)
                            {
                                break;
                            }
                            outstream.Write(buffer, 0, l);
                            outstream.Flush();
                        }
                        outstream.Close();
                    }
                    return(req);
                },
                                       // 响应结果提取
                                       (HttpWebResponse rep) =>
                {
                    using (Stream outstream = rep.GetResponseStream())
                    {
                        StreamReader reader = new StreamReader(outstream, Encoding.UTF8);
                        result = reader.ReadToEnd();
                        reader.Close();
                    }
                    return(rep);
                });
                return(result);
            }
            catch (WebException webex)
            {
                var    resp = (HttpWebResponse)webex.Response;
                string err  = webex.Message;
                if (null != resp)
                {
                    err = string.Format("{0} {1}", (int)resp.StatusCode, resp.StatusCode);
                }
                DebugHelper.OutLog(err);
                return(null);
            }
            catch (Exception ex)
            {
                DebugHelper.Error(ex);  //DebugHelper.OutLog(ex.Message);
                return(null);
            }
        }