Chris Chen ad0bc0e49b WIP
2023-08-20 11:28:47 -07:00

97 lines
2.2 KiB
C#

using Newtonsoft.Json;
namespace LineMessaging
{
public interface ILineAction
{
[JsonProperty("type")]
ActionType Type { get; }
}
public class PostbackAction : ILineAction
{
[JsonProperty("type")]
public ActionType Type => ActionType.Postback;
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("data")]
public string Data { get; set; }
[JsonProperty("displayText")]
public string DisplayText { get; set; }
[JsonProperty("inputOption")]
public string InputOption { get; set; }
[JsonProperty("fillInText")]
public string FillInText { get; set; }
}
public class MessageAction : ILineAction
{
[JsonProperty("type")]
public ActionType Type => ActionType.Message;
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("text")]
public string Text { get; set; }
}
public class UriAction : ILineAction
{
[JsonProperty("type")]
public ActionType Type => ActionType.Uri;
[JsonProperty("label")]
public string Label { get; set; }
private string _uri;
[JsonProperty("uri")]
public string Uri
{
get { return _uri; }
set {
if (value.IndexOf("?") == -1)
{
value += "?openExternalBrowser=1";
}
else
{
value += "&openExternalBrowser=1";
}
_uri = value;
}
}
}
public class DatetimepickerAction : ILineAction
{
[JsonProperty("type")]
public ActionType Type => ActionType.Datetimepicker;
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("data")]
public string Data { get; set; }
[JsonProperty("mode")]
public string Mode { get; set; }
[JsonProperty("initial")]
public string Initial { get; set; }
[JsonProperty("max")]
public string Max { get; set; }
[JsonProperty("min")]
public string Min { get; set; }
}
}