/// <summary> /// Provides a standard implementation of HttpGet /// </summary> /// <param name="get">The HttpGet message to process</param> /// <param name="state">The webcam state</param> /// <param name="transform">The embedded resource to use as the XSLT transform</param> public void HttpGetHelper(HttpGet get, WebCamSensorState state, string transform) { var copy = state.Clone() as WebCamSensorState; copy.Data = null; get.ResponsePort.Post( new HttpResponseType( HttpStatusCode.OK, copy, transform)); }
/// <summary> /// Provides a standard implementation of HttpQuery /// </summary> /// <param name="query">The HttpQuery message to process</param> /// <param name="state">The webcam state</param> /// <param name="transform">The embedded resource to use as the XSLT transform</param> /// <param name="utilitiesPort">The utilities port used to stream images</param> /// <returns>Stanard CCR iterator</returns> public IEnumerator <ITask> HttpQueryHelper(HttpQuery query, WebCamSensorState state, string transform, DsspHttpUtilitiesPort utilitiesPort) { var type = query.Body.Query[QueryType]; var mediaType = string.Empty; var format = default(sdi.ImageFormat); switch (type.ToLowerInvariant()) { case Jpeg: format = sdi.ImageFormat.Jpeg; mediaType = MediaTypeNames.Image.Jpeg; break; case Gif: format = sdi.ImageFormat.Gif; mediaType = MediaTypeNames.Image.Gif; break; case Png: format = sdi.ImageFormat.Png; mediaType = MediaPng; break; case Bmp: format = sdi.ImageFormat.Bmp; mediaType = MediaBmp; break; default: var copy = state.Clone() as WebCamSensorState; copy.Data = null; query.ResponsePort.Post( new HttpResponseType( HttpStatusCode.OK, copy, transform)); yield break; } if (state.Data == null || state.Data.Length == 0) { query.ResponsePort.Post( new HttpResponseType( HttpStatusCode.OK, state, transform)); yield break; } using (var image = state.Bitmap) { using (var mem = new MemoryStream()) { image.Save(mem, format); mem.Position = 0; var response = new WriteResponseFromStream( query.Body.Context, mem, mediaType); utilitiesPort.Post(response); yield return(response.ResultPort.Choice()); } } }