Ejemplo n.º 1
0
 public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
 {
     SjisEncoding e = new SjisEncoding();
     byte[] sjis = e.GetBytes(chars, charIndex, charCount);
     byte[] euc = sjis2eucjp(sjis, 0, sjis.Length);
     for (int i = 0; i < euc.Length; ++i)
         bytes[i + byteIndex] = euc[i];
     return euc.Length;
 }
Ejemplo n.º 2
0
        protected override uint CreateHash(string value)
        {
            var computed = _crc16.Compute(SjisEncoding.GetBytes(value));

            return(BinaryPrimitives.ReadUInt32BigEndian(computed));
        }
Ejemplo n.º 3
0
		public static async Task<IIDXStatus> GetDjStatus( string _ID, string _Password )
		{
			var status = new IIDXStatus();
			var ENC = new SjisEncoding();
			var handler = new HttpClientHandler{ UseCookies = true, AllowAutoRedirect = false };

			using ( var httpClient = new HttpClient(handler){ BaseAddress = new Uri( URL_BASE ) }  )
			{
				var content = new FormUrlEncodedContent( new Dictionary<string, string>
					{	
						{"KID", _ID},
						{"pass", _Password},
						{"OTP", string.Empty},
					} );

				await httpClient.PostAsync( URL_LOGIN, content );
				var response = await httpClient.GetStreamAsync( URL_STATUS );

				using (var reader = new StreamReader(response, ENC))
				{
					int num;
					Match match;

					var xml = ParseHtml( reader );
					var ns = xml.Root.Name.Namespace;
					var xmlStatusDetails = xml
						.Descendants(ns + "table")
						.Where(x => x.Attribute("class").Value == "dj_data_table")
						.Descendants(ns + "tr")
						.ToArray();

					Func<string, string> GetStatusDetails = setting =>
					{
						var element = xmlStatusDetails.Where(x => x.Element(ns + "th").Value == setting).FirstOrDefault();

						return element != default( XElement ) ? element.Element( ns + "td" ).Value : null;
					};

					status.DjName = GetStatusDetails("DJ NAME");
					status.AffiliationState = GetStatusDetails("所属都道府県");
					status.IIDXID = GetStatusDetails("IIDX ID");
					status.AffiliationStore = GetStatusDetails("所属店舗");
					if (int.TryParse (GetStatusDetails ("所持デラー"), out num)) {
						status.PossessionDeller = num;
					}
					match = REG_PLAY_COUNT.Match (GetStatusDetails ("プレー回数"));
					if (match.Success) {
						if (int.TryParse(match.Groups ["cnt"].Value, out num )) {
							status.PlayCount = num;
						}
					}

					var xmlDjStatus = xml
						.Descendants(ns + "table")
						.Where(x => x.Attribute("class").Value == "status_type1")
						.Descendants(ns + "tr")
						.ToArray();

					Func<string, Func<XElement, bool>, int, string[]> GetDjStatus = (setting, selector, skipNum ) =>
					{
						return xmlDjStatus
								.Where(x => x.Element(ns + "th").Value == setting)
								.First()
								.Elements(ns + "td")
								.Where(selector)
								.Skip(skipNum)
								.Select(x => x.Value)
								.ToArray();
					};

					var djPoints = GetDjStatus("DJ POINT", x => x.Attribute("class").Value == "point", 1);

					status.DjPointSP = djPoints[0];
					status.DjPointDP = djPoints[1];

					var djRanks = GetDjStatus("段位認定", x => x.Attribute("class").Value == "point", 0);

					status.DjRankSP = djRanks[0];
					status.DjRankDP = djRanks[1];

					var djPilgrimages = GetDjStatus("行脚王", x => true, 0);

					status.Areas = djPilgrimages[0];
					status.Stores = djPilgrimages[1];
					status.Statnds = djPilgrimages[2];

					status.Comment = xml
						.Descendants(ns + "table")
						.Where(x => x.Attribute("class").Value == "status_type1 table_style1")
						.Descendants(ns + "tr")
						.Descendants(ns + "td")
						.Where(x => x != null && x.Attribute("class").Value == "comment_Box")
						.Select(x => x.Value)
						.First();

					var qproPath = xml
						.Descendants(ns + "table")
						.Where(x => x.Attribute("class").Value == "dj_qpro_table")
						.Descendants(ns + "tr")
						.Descendants(ns + "td")
						.Descendants(ns + "a")
						.Select(x => x.Element(ns + "img").Attribute("src").Value)
						.First();
					status.Qpro = await httpClient.GetByteArrayAsync(new Uri(URL_BASE + qproPath));
				}
			}

			return status;
		}
        public void Setup()
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            var context = CreateBuilderContext();

            // Default

            // Binary
            var intBinaryBuilder = new BinaryConverterBuilder();

            intBinaryConverter = intBinaryBuilder.CreateConverter(context, typeof(int));
            intBinaryBuffer    = new byte[intBinaryBuilder.CalcSize(typeof(int))];

            // Boolean
            var booleanBuilder = new BooleanConverterBuilder();

            booleanConverter = booleanBuilder.CreateConverter(context, typeof(bool));
            booleanBuffer    = new byte[] { 0x30 };

            // bytes
            var bytes10Builder = new BytesConverterBuilder {
                Length = 10
            };

            bytes10Converter = bytes10Builder.CreateConverter(context, typeof(byte[]));
            bytes10Buffer    = new byte[bytes10Builder.CalcSize(typeof(byte[]))];

            var bytes20Builder = new BytesConverterBuilder {
                Length = 20
            };

            bytes20Converter = bytes20Builder.CreateConverter(context, typeof(byte[]));
            bytes20Buffer    = new byte[bytes20Builder.CalcSize(typeof(byte[]))];

            // Text
            var text20Builder = new TextConverterBuilder {
                Length = 20
            };

            text20Converter      = text20Builder.CreateConverter(context, typeof(string));
            text20Single20Buffer = SjisEncoding.GetFixedBytes(Text20Single10, 20);
            text20Wide10Buffer   = SjisEncoding.GetFixedBytes(Text20Wide5, 20);
            text20EmptyBuffer    = SjisEncoding.GetFixedBytes(Text20Empty, 20);

            // Number
            var numberTextShort4Builder = new NumberTextConverterBuilder {
                Length = 4
            };

            numberTextShort4Converter  = numberTextShort4Builder.CreateConverter(context, typeof(short));
            numberTextShort4MaxBuffer  = SjisEncoding.GetFixedBytes(Length4Integer.ToString(CultureInfo.InvariantCulture), 4, FixedAlignment.Right);
            numberTextShort4ZeroBuffer = SjisEncoding.GetFixedBytes(ZeroInteger.ToString(CultureInfo.InvariantCulture), 4, FixedAlignment.Right);

            var numberTextInt8Builder = new NumberTextConverterBuilder {
                Length = 8
            };

            numberTextInt8Converter  = numberTextInt8Builder.CreateConverter(context, typeof(int));
            numberTextInt8MaxBuffer  = SjisEncoding.GetFixedBytes(Length8Integer.ToString(CultureInfo.InvariantCulture), 8, FixedAlignment.Right);
            numberTextInt8ZeroBuffer = SjisEncoding.GetFixedBytes(ZeroInteger.ToString(CultureInfo.InvariantCulture), 8, FixedAlignment.Right);

            var numberTextLong18Builder = new NumberTextConverterBuilder {
                Length = 18
            };

            numberTextLong18Converter  = numberTextLong18Builder.CreateConverter(context, typeof(long));
            numberTextLong18MaxBuffer  = SjisEncoding.GetFixedBytes(Length18Integer.ToString(CultureInfo.InvariantCulture), 18, FixedAlignment.Right);
            numberTextLong18ZeroBuffer = SjisEncoding.GetFixedBytes(ZeroInteger.ToString(CultureInfo.InvariantCulture), 18, FixedAlignment.Right);

            var numberTextDecimal8Builder = new NumberTextConverterBuilder {
                Length = 8
            };

            numberTextDecimal8Converter  = numberTextDecimal8Builder.CreateConverter(context, typeof(decimal));
            numberTextDecimal8MaxBuffer  = SjisEncoding.GetFixedBytes(Length8Decimal.ToString(CultureInfo.InvariantCulture), 8, FixedAlignment.Right);
            numberTextDecimal8ZeroBuffer = SjisEncoding.GetFixedBytes("0.00", 10, FixedAlignment.Right);

            var numberTextDecimal18Builder = new NumberTextConverterBuilder {
                Length = 18
            };

            numberTextDecimal18Converter  = numberTextDecimal18Builder.CreateConverter(context, typeof(decimal));
            numberTextDecimal18MaxBuffer  = SjisEncoding.GetFixedBytes(Length18Decimal.ToString(CultureInfo.InvariantCulture), 19, FixedAlignment.Right);
            numberTextDecimal18ZeroBuffer = SjisEncoding.GetFixedBytes("0.000", 19, FixedAlignment.Right);

            var numberTextDecimal28Builder = new NumberTextConverterBuilder {
                Length = 28
            };

            numberTextDecimal28Converter  = numberTextDecimal28Builder.CreateConverter(context, typeof(decimal));
            numberTextDecimal28MaxBuffer  = SjisEncoding.GetFixedBytes(Length28Decimal.ToString(CultureInfo.InvariantCulture), 29, FixedAlignment.Right);
            numberTextDecimal28ZeroBuffer = SjisEncoding.GetFixedBytes("0.0000", 29, FixedAlignment.Right);

            // DateTime
            var dateTimeText8Builder = new DateTimeTextConverterBuilder {
                Length = 8, Format = "yyyyMMdd"
            };

            dateTimeText8Converter = dateTimeText8Builder.CreateConverter(context, typeof(DateTime));
            dateTimeText8Buffer    = SjisEncoding.GetFixedBytes(DateTime8.ToString("yyyyMMdd"), 8);

            var dateTimeText14Builder = new DateTimeTextConverterBuilder {
                Length = 14, Format = "yyyyMMddHHmmss"
            };

            dateTimeText14Converter = dateTimeText14Builder.CreateConverter(context, typeof(DateTime));
            dateTimeText14Buffer    = SjisEncoding.GetFixedBytes(DateTime14.ToString("yyyyMMddHHmmss"), 14);

            var dateTimeText17Builder = new DateTimeTextConverterBuilder {
                Length = 17, Format = "yyyyMMddHHmmssfff"
            };

            dateTimeText17Converter = dateTimeText17Builder.CreateConverter(context, typeof(DateTime));
            dateTimeText17Buffer    = SjisEncoding.GetFixedBytes(DateTime17.ToString("yyyyMMddHHmmssfff"), 17);

            // Options

            // ASCII
            var text13Builder = new TextConverterBuilder {
                Length = 13, Encoding = Encoding.ASCII
            };

            text13Converter = text13Builder.CreateConverter(context, typeof(string));
            var ascii13Builder = new AsciiConverterBuilder {
                Length = 13
            };

            ascii13Converter = ascii13Builder.CreateConverter(context, typeof(string));
            ascii13Buffer    = new byte[ascii13Builder.CalcSize(typeof(string))];

            // Unicode
            var text30Builder = new TextConverterBuilder {
                Length = 30, Encoding = Encoding.Unicode
            };

            text30Converter = text30Builder.CreateConverter(context, typeof(string));
            var ascii30Builder = new UnicodeConverterBuilder {
                Length = 30
            };

            unicode30Converter = ascii30Builder.CreateConverter(context, typeof(string));
            unicode30Buffer    = new byte[ascii30Builder.CalcSize(typeof(string))];

            // Integer
            var short4Builder = new IntegerConverterBuilder {
                Length = 4
            };

            short4Converter  = short4Builder.CreateConverter(context, typeof(short));
            short4MaxBuffer  = SjisEncoding.GetFixedBytes(Length4Integer.ToString(CultureInfo.InvariantCulture), 4, FixedAlignment.Right);
            short4ZeroBuffer = SjisEncoding.GetFixedBytes(ZeroShort.ToString(CultureInfo.InvariantCulture), 4, FixedAlignment.Right);

            var int8Builder = new IntegerConverterBuilder {
                Length = 8
            };

            int8Converter  = int8Builder.CreateConverter(context, typeof(int));
            int8MaxBuffer  = SjisEncoding.GetFixedBytes(Length8Integer.ToString(CultureInfo.InvariantCulture), 8, FixedAlignment.Right);
            int8ZeroBuffer = SjisEncoding.GetFixedBytes(ZeroInteger.ToString(CultureInfo.InvariantCulture), 8, FixedAlignment.Right);

            var long18Builder = new IntegerConverterBuilder {
                Length = 18
            };

            long18Converter  = long18Builder.CreateConverter(context, typeof(long));
            long18MaxBuffer  = SjisEncoding.GetFixedBytes(Length18Integer.ToString(CultureInfo.InvariantCulture), 18, FixedAlignment.Right);
            long18ZeroBuffer = SjisEncoding.GetFixedBytes(ZeroLong.ToString(CultureInfo.InvariantCulture), 18, FixedAlignment.Right);

            // Decimal
            var decimal8Builder = new DecimalConverterBuilder {
                Length = 10, Scale = 2
            };

            decimal8Converter  = decimal8Builder.CreateConverter(context, typeof(decimal));
            decimal8MaxBuffer  = SjisEncoding.GetFixedBytes(Length8Decimal.ToString(CultureInfo.InvariantCulture), 10, FixedAlignment.Right);
            decimal8ZeroBuffer = SjisEncoding.GetFixedBytes("0.00", 10, FixedAlignment.Right);

            var decimal18Builder = new DecimalConverterBuilder {
                Length = 19, Scale = 3
            };

            decimal18Converter  = decimal18Builder.CreateConverter(context, typeof(decimal));
            decimal18MaxBuffer  = SjisEncoding.GetFixedBytes(Length18Decimal.ToString(CultureInfo.InvariantCulture), 19, FixedAlignment.Right);
            decimal18ZeroBuffer = SjisEncoding.GetFixedBytes("0.000", 19, FixedAlignment.Right);

            var decimal28Builder = new DecimalConverterBuilder {
                Length = 29, Scale = 4
            };

            decimal28Converter  = decimal28Builder.CreateConverter(context, typeof(decimal));
            decimal28MaxBuffer  = SjisEncoding.GetFixedBytes(Length28Decimal.ToString(CultureInfo.InvariantCulture), 29, FixedAlignment.Right);
            decimal28ZeroBuffer = SjisEncoding.GetFixedBytes("0.0000", 29, FixedAlignment.Right);

            // DateTime
            var dateTime8Builder = new DateTimeConverterBuilder {
                Format = "yyyyMMdd"
            };

            dateTime8Converter = dateTime8Builder.CreateConverter(context, typeof(DateTime));
            dateTime8Buffer    = SjisEncoding.GetFixedBytes(DateTime8.ToString("yyyyMMdd"), 8);

            var dateTime14Builder = new DateTimeConverterBuilder {
                Format = "yyyyMMddHHmmss"
            };

            dateTime14Converter = dateTime14Builder.CreateConverter(context, typeof(DateTime));
            dateTime14Buffer    = SjisEncoding.GetFixedBytes(DateTime14.ToString("yyyyMMddHHmmss"), 14);

            var dateTime17Builder = new DateTimeConverterBuilder {
                Format = "yyyyMMddHHmmssfff"
            };

            dateTime17Converter = dateTime17Builder.CreateConverter(context, typeof(DateTime));
            dateTime17Buffer    = SjisEncoding.GetFixedBytes(DateTime17.ToString("yyyyMMddHHmmssfff"), 17);
        }
Ejemplo n.º 5
0
 public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
 {
     SjisEncoding e = new SjisEncoding();
     byte[] sjis = eucjp2sjis(bytes, byteIndex, byteCount);
     return e.GetChars(sjis, 0, sjis.Length, chars, charIndex);
 }
Ejemplo n.º 6
0
 public override int GetCharCount(byte[] bytes, int index, int count)
 {
     SjisEncoding e = new SjisEncoding();
     byte[] sjis = eucjp2sjis(bytes, index, count);
     return e.GetCharCount(sjis, 0, sjis.Length);
 }
Ejemplo n.º 7
0
 public override int GetByteCount(char[] chars, int index, int count)
 {
     SjisEncoding e = new SjisEncoding();
     byte[] sjis = e.GetBytes(chars, index, count);
     return getCountSjis2Eucjp(sjis, 0, sjis.Length);
 }