public void Capture( OnlineCaptureInfo info ) { try { // Ensure permission to write to the archive directory. FileIOPermission p = new FileIOPermission( FileIOPermissionAccess.Write, new FileInfo( info.ArchiveDir ).FullName ); p.Demand(); logger = info.Logger; string html = CaptureText( info.AccountName, info.Credentials ); // Write HTML results to file string filename = Path.Combine( info.ArchiveDir, info.BaseName + ".htm" ); info.CapturedFiles.Add( Path.GetFileName( filename ) ); File.WriteAllText( filename, html ); } catch( SecurityException ex ) { throw new OnlineReaderException( "Security violation: " + ex.Message, ex ); } }
public IEnumerable<OnlineTransaction> Parse( OnlineCaptureInfo info ) { try { // Ensure permission to read from the archive directory. FileIOPermission p = new FileIOPermission( FileIOPermissionAccess.Read, new FileInfo( info.ArchiveDir ).FullName ); p.Demand(); string html = File.ReadAllText( Path.Combine( info.ArchiveDir, info.CapturedFiles[0] ) ); return ParseText( info.AccountName, html ); } catch( SecurityException ex ) { throw new OnlineReaderException( "Security violation: " + ex.Message, ex ); } }
public static OnlineCaptureInfo Deserialize( XmlReader xmlReader ) { if( xmlReader.NodeType != XmlNodeType.Element || xmlReader.Name != "OnlineCaptureInfo" ) throw new ApplicationException( "Needs an OnlineCaptureInfo node to deserialize the object." ); OnlineCaptureInfo info = new OnlineCaptureInfo(); while( xmlReader.Read() ) { switch( xmlReader.NodeType ) { case XmlNodeType.Element: switch( xmlReader.Name ) { case "BaseName": info.BaseName = xmlReader.ReadString(); break; case "AccountName": info.AccountName = xmlReader.ReadString(); break; case "Date": info.Date = DateTime.Parse( xmlReader.ReadString() ); break; case "CurrentBalance" : info.CurrentBalance = Decimal.Parse( xmlReader.ReadString() ); break; case "AvailableBalance": info.AvailableBalance = Decimal.Parse( xmlReader.ReadString() ); break; case "MinimumBalance": info.MinimumBalance = Decimal.Parse( xmlReader.ReadString() ); break; case "MaximumBalance": info.MaximumBalance = Decimal.Parse( xmlReader.ReadString() ); break; case "Filename": info.CapturedFiles.Add( xmlReader.ReadString() ); break; default: break; } break; case XmlNodeType.EndElement: if( xmlReader.Name == "OnlineCaptureInfo" ) return info; break; } } return info; }