using Newtonsoft.Json.Linq;

namespace Microsoft.AspNetCore.SpaServices.Prerendering
{
    /// <summary>
    /// Describes the prerendering result returned by JavaScript code.
    /// </summary>
    public class RenderToStringResult
    {
        /// <summary>
        /// If set, specifies JSON-serializable data that should be added as a set of global JavaScript variables in the document.
        /// This can be used to transfer arbitrary data from server-side prerendering code to client-side code (for example, to
        /// transfer the state of a Redux store).
        /// </summary>
        public JObject Globals { get; set; }

        /// <summary>
        /// The HTML generated by the prerendering logic.
        /// </summary>
        public string Html { get; set; }

        /// <summary>
        /// If set, specifies that instead of rendering HTML, the response should be an HTTP redirection to this URL.
        /// This can be used if the prerendering code determines that the requested URL would lead to a redirection according
        /// to the SPA's routing configuration.
        /// </summary>
        public string RedirectUrl { get; set; }

        /// <summary>
        /// If set, specifies the HTTP status code that should be sent back with the server response.
        /// </summary>
        public int? StatusCode { get; set; }
    }
}