Exemple #1
0
        public async Task <APIGatewayProxyResponse> AddImageAsync(APIGatewayProxyRequest request, ILambdaContext context)
        {
            context.Logger.LogLine($"POST /images body: {request.Body}");

            var imageRequest = JsonSerializer.Deserialize <AddImageRequestModel>(request?.Body);

            var fileExt = Path.GetExtension(imageRequest.FileName);

            var image = new ScreenImage
            {
                Type       = imageRequest.ImageType,
                UploadedOn = DateTime.UtcNow,
                UserName   = "******", // TODO: set from auth'd user
                // IsPublished is false until the image has been processed
            };

            image.FileName = $"{image.Id}{fileExt}".ToLower();

            var keyPrefix    = $"{UPLOAD_KEY_PREFIX}{image.UploadedOn.ToString("yyyy/MM")}";
            var imageFileKey = $"{keyPrefix}/{image.FileName}";

            // All of these properties, including meta-data must match what the
            // frontend is sending ootherwise the key will mismatch, resulting
            // in a 403 response from S3
            var presignRequest = new GetPreSignedUrlRequest
            {
                Verb        = HttpVerb.PUT,
                BucketName  = _bucketName,
                Key         = imageFileKey,
                ContentType = imageRequest.ContentType,
                Expires     = DateTime.UtcNow.AddSeconds(PRESIGN_URL_EXPIRATION_SECS),
            };

            presignRequest.Metadata.Add("imageId", image.Id);
            presignRequest.Metadata.Add("imageType", image.Type);
            presignRequest.Metadata.Add("userName", image.UserName); // Maybe use user ID instead?

            var presignedUrl = _s3Client.GetPreSignedURL(presignRequest);

            context.Logger.LogLine($"Saving image with ID {image.Id}");
            await _ddbService.SaveAsync(image);

            var addImageResponse = new AddImageResponseModel
            {
                Id        = image.Id,
                Key       = imageFileKey,
                Type      = image.Type,
                UploadUrl = presignedUrl
            };

            var response = new APIGatewayProxyResponse
            {
                StatusCode = (int)HttpStatusCode.Created,
                Body       = JsonSerializer.Serialize(addImageResponse),
                Headers    = _defaultHeaders
            };

            return(response);
        }
        public ScreenViewerForm()
        {
            InitializeComponent();

            oricScreenImage = new ScreenImage();

            oricFileInfo = new OricFileInfo();
            oricProgram  = new OricProgram();
        }
Exemple #3
0
 public IHttpActionResult ImageProcessing(ScreenImage siffyCategory)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     RouteConfig.screenImage = siffyCategory;
     //db.SiffyCategories.Add(siffyCategory);
     //db.SaveChanges();
     //  return Ok();
     return(CreatedAtRoute("DefaultApi", new { id = siffyCategory.ID }, siffyCategory));
 }
Exemple #4
0
        public AppModel()
        {
            IsMirroring.Subscribe(b =>
            {
                if (b)
                {
                    StartTrackingImage();
                }
                else
                {
                    StopTrackingImage();
                }
            });

            var client = new UdpClient(HostAddress, HostPort);

            ScreenImage
            .Where(b => b.Length <= BitmapHelper.MaxBitmapBytes)
            .Subscribe(b => client.Send(b, b.Length));
        }
        public AppModel()
        {
            ScreenImage
            .Subscribe(_ => IsImageVisible.Value = true);
            ScreenImage
            .Throttle(TimeSpan.FromSeconds(5))
            .Subscribe(_ => IsImageVisible.Value = false);

            Task.Run(() =>
            {
                var client   = new UdpClient(HostPort);
                var remoteEP = default(IPEndPoint);

                while (true)
                {
                    try
                    {
                        ScreenImage.Value = client.Receive(ref remoteEP);
                    }
                    catch (SocketException ex)
                    {
                        switch (ex.SocketErrorCode)
                        {
                        case SocketError.ConnectionReset:
                            continue;

                        case SocketError.Interrupted:
                            return;

                        default:
                            throw;
                        }
                    }
                }
            });
        }
        private void generateThumbnails()
        {
            // Remove any images
            flowLayoutPanelThumbnails.Controls.Clear();

            for (int imageIndex = 0; imageIndex < imageList.Count(); imageIndex++)
            {
                Panel imagePanel = new Panel();
                imagePanel.Name        = string.Format("panel_{0}", imageIndex);
                imagePanel.Size        = new Size(170, 175);
                imagePanel.BorderStyle = BorderStyle.FixedSingle;
                imagePanel.BackColor   = Color.FromArgb(200, 200, 200);

                Label imageLabel = new Label();
                imageLabel.Name      = string.Format("label_{0}", imageIndex);
                imageLabel.Size      = new Size(160, 18);
                imageLabel.Font      = new Font("Segoe UI", 8);
                imageLabel.TextAlign = ContentAlignment.MiddleCenter;
                imageLabel.Text      = imageList[imageIndex].ProgramName;
                imageLabel.Left      = 5;
                imageLabel.Top       = 154;

                PictureBox screenImage = new PictureBox();

                screenImage.Name        = string.Format("{0}", imageIndex);
                screenImage.Size        = new Size(160, 150);
                screenImage.BackColor   = Color.White;
                screenImage.BorderStyle = BorderStyle.None;
                screenImage.SizeMode    = PictureBoxSizeMode.Zoom;
                screenImage.Cursor      = System.Windows.Forms.Cursors.Hand;
                screenImage.Top         = 5;
                screenImage.Left        = 5;

                toolTip1 = new ToolTip();
                toolTip1.ToolTipTitle = "Image Information";
                toolTip1.SetToolTip(screenImage, string.Format("Name : {0}\nFormat : {1}", imageList[imageIndex].ProgramName, imageList[imageIndex].FormatToString()));
                toolTip1.Popup += toolTip1_Popup;

                screenImage.Click += new System.EventHandler(screenImage_Click);

                OricProgram oricProgram = imageList[imageIndex].LoadFile();

                ScreenImage thumbnailImage = new ScreenImage();
                thumbnailImage.m_ui16StartAddress = oricProgram.StartAddress;
                thumbnailImage.m_ui16DataLength   = oricProgram.ProgramLength;
                thumbnailImage.bScrnData          = oricProgram.m_programData;

                if (oricProgram.Format == OricProgram.ProgramFormat.HiresScreen)
                {
                    screenImageFormat = ScreenImage.ScreenImageFormat.IMAGE_FORMAT_HIRES;
                }
                else
                {
                    screenImageFormat = ScreenImage.ScreenImageFormat.IMAGE_FORMAT_TEXT;
                }

                thumbnailImage.DrawScreenImage(ScreenImage.ScreenImageSize.IMAGE_SIZE_NORMAL, screenImageFormat);

                screenImage.Image = thumbnailImage.screenImageData;

                imagePanel.Controls.Add(screenImage);
                imagePanel.Controls.Add(imageLabel);

                flowLayoutPanelThumbnails.Controls.Add(imagePanel);
            }
        }