public override DTSExecResult Execute(Connections connections, VariableDispenser variableDispenser, IDTSComponentEvents componentEvents, IDTSLogging log, object transaction)
        {
            _componentEvents = componentEvents;
            _variableDispenser = variableDispenser;
            _connections = connections;

            _azureBlobConnectionInfo = (AzureBlobConnectionInfo)_connections[_connection].AcquireConnection(null);

            Uri uri = (Uri)null;

            if (this.InputSource != SourceType.BlobPath)
            {
                //If a blob name is specified we create one
                if (string.IsNullOrEmpty(_blobName))
                {
                    _blobName = string.Format(AZURE_ML_BLOB_NAME_FORMAT,
                        DateTime.Now.ToString("yyyyMMdd"),
                        Guid.NewGuid());
                }

                uri = UploadFile();

                if (uri == null)
                    return DTSExecResult.Failure;
            }
            else
            {
                uri = new Uri(_source);
            }

            var task = ProcessBatch(uri);
            task.Wait();

            if (task.Result != BatchScoreStatusCode.Finished)
            {
                return DTSExecResult.Failure;
            }

            return DTSExecResult.Success;
        }
        public override object AcquireConnection(object txn)
        {
            UpdateConnectionString(UseDevelopmentStorage);

            _blobStorageInfo = new AzureBlobConnectionInfo()
            {
                StorageAccount = CloudStorageAccount.Parse(_connectionString),
                ConnectionString = _connectionString,
                Path = this.Path,
                Separator = this.Delimiter,
                HasHeaders = this.HasHeaders,
                FilePattern = this.FilePattern,
                FileSize = this.FileSize,
                IncludeHeaders = this.IncludeHeaders
            };

            return _blobStorageInfo;
        }