private string GetSecurityAttribute(OperationModel o) { if (o.HasStereotype("Secured") || Model.HasStereotype("Secured")) { var roles = o.GetStereotypeProperty <string>("Secured", "Roles"); return(string.IsNullOrWhiteSpace(roles) ? "[Authorize]" : $"[Authorize(Roles = \"{roles}\")]"); } return("[AllowAnonymous]"); }
private static HttpVerb GetHttpVerb(OperationModel operation) { var verb = operation.GetStereotypeProperty("Http", "Verb", "AUTO").ToUpper(); if (verb != "AUTO") { return(Enum.TryParse(verb, out HttpVerb verbEnum) ? verbEnum : HttpVerb.POST); } if (operation.ReturnType == null || operation.Parameters.Any(IsFromBody)) { return(HttpVerb.POST); } return(HttpVerb.GET); }
public override string AfterCallToAppLayer(ServiceModel service, OperationModel operation) { if (!operation.GetStereotypeProperty <bool>("Transactional Settings", "Explicit Scope", true)) { return(string.Empty); } var sb = new StringBuilder(); sb.AppendIndentation(4) .AppendLine("ts.Complete();") .AppendIndentation(3) .AppendLine("}"); return(sb.ToString()); }
public override string BeforeCallToAppLayer(ServiceModel service, OperationModel operation) { if (!operation.GetStereotypeProperty <bool>("Transactional Settings", "Explicit Scope", true)) { return(string.Empty); } var sb = new StringBuilder(); sb.AppendIndentation(3) .AppendLine("var tso = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted };"); sb.AppendIndentation(3) .AppendLine($"using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, tso{(operation.IsAsync() ? ", TransactionScopeAsyncFlowOption.Enabled" : string.Empty)}))") .AppendIndentation(3) .AppendLine("{"); return(sb.ToString()); }
private static bool RequiresPayloadObject(OperationModel operation) { if (!operation.Parameters.Any()) { return(false); } if (operation.GetStereotypeProperty("Http", "Payload", "AUTO") == "Payload Object") { return(true); } var verb = GetHttpVerb(operation); if (verb != HttpVerb.POST && verb != HttpVerb.PUT) { return(false); } return(operation.Parameters.Count(IsFromBody) > 1); }