Exemplo n.º 1
0
        private void bStart_Click(object sender, EventArgs e)
        {
            if (_isRun)
            {
                DialogResult cancelResult = MessageBox.Show("Are you sure you want to cancel data fetching?", "Cancel fetching?",
                                                            MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (cancelResult == DialogResult.Yes)
                {
                    _isRun = false;
                    if (_processor != null)
                    {
                        _processor.EndStreaming();
                    }
                    EnableControls(true);
                    bStart.Text      = "Start";
                    pbProgress.Value = 0;

                    if (_results.Count > 0)
                    {
                        DialogResult saveResult = MessageBox.Show("Do you want to save fetched data to the CSV file?", "Save data?",
                                                                  MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                        if (saveResult == DialogResult.Yes)
                        {
                            GenerateCsv(_results);
                        }
                    }
                }

                return;
            }

            if (!IsValidParameters())
            {
                return;
            }

            _isRun = true;
            PopulateSettings();
            EnableControls(false);
            bStart.Text = "Cancel";
            WriteLineToTrace("Connecting to stream...");

            _results.Clear();

            pbProgress.Minimum = 0;
            pbProgress.Maximum = _settings.total;
            pbProgress.Step    = 1;

            SandBoxConnection connection = new SandBoxConnection(_settings.username, _settings.password, _settings.account, _settings.source);

            connection.ReplyFrom = DateTime.ParseExact(_settings.from, "yyyyMMddHHmm", CultureInfo.InvariantCulture);
            connection.ReplyTo   = DateTime.ParseExact(_settings.to, "yyyyMMddHHmm", CultureInfo.InvariantCulture);
            connection.IsLive    = _settings.live;

            GnipStreamProcessorAsync processor = GnipStreamProcessorBase.CreateGnipProcessor <GnipStreamProcessorAsync>(connection);

            processor.DataReceived  += processor_DataReceived;
            processor.ErrorHappened += processor_ErrorHappened;
            processor.BeginStreaming();
        }
Exemplo n.º 2
0
        private void processor_DataReceived(object sender, DynamicActivityBase activity)
        {
            GnipStreamProcessorAsync processor = sender as GnipStreamProcessorAsync;

            if (processor == null)
            {
                return;
            }

            switch (processor.Connection.DataSource)
            {
            case GnipSources.Twitter:
            {
                List <string> row = new List <string>(_headers.Count);

                foreach (KeyValuePair <string, string> title in _headers)
                {
                    object value = ReflectionHelper.GetNestedPropertyValue(title.Key, activity);

                    if (value == null)
                    {
                        row.Add(string.Empty);
                    }
                    else
                    {
                        if (ReflectionHelper.IsEnumerable(value) && !ReflectionHelper.IsValidCast(typeof(string), value))
                        {
                            IEnumerable enumerable = value as IEnumerable;
                            string      res        = string.Empty;

                            foreach (object item in enumerable)
                            {
                                res = string.Format("{0} {1}", res, item);
                            }

                            res = res.Trim();
                            row.Add(res);
                        }
                        else
                        {
                            row.Add(value.ToString());
                        }
                    }
                }

                _results.Add(row);
                WriteLineToTrace("{0} record(s) have been received.", _results.Count);

                int index = ((_results.Count - (_settings.append + 1)) < 0) ? 0 : _results.Count - (_settings.append + 1);
                int count = ((index + _settings.append) > _results.Count) ? _results.Count - index : _settings.append;

                if (_results.Count % _settings.append == 0)
                {
                    GenerateCsv(_results.GetRange(index, count), true);
                }

                int progress = GetControlPropertyThreadSafe <int>(pbProgress, "Value");
                SetControlPropertyThreadSafe(pbProgress, "Value", progress + 1);

                if (_results.Count == _settings.total)
                {
                    processor.EndStreaming();
                    SetControlPropertyThreadSafe(pbProgress, "Value", 0);
                    SetControlPropertyThreadSafe(bStart, "Text", "Start");
                    EnableControls(true);
                    _isRun = false;
                }
            }

            break;
            }
        }