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(); }
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)); }
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); } }