ServiceClientGenerator.GeneratorHelpers.DetermineAWSQueryListMemberSuffix C# (CSharp) Method

DetermineAWSQueryListMemberSuffix() public static method

Inspects list member to determine if the original list shape in the model has been substituted and if so, whether a member suffix should be used to extract the value for use in the query. An example usage would be the replacement of IpRange (in EC2) within an IpRangeList - we treat as a list of strings, yet need to get to the IpRange.CidrIp member in the query marshalling. Note that we also have some EC2 operations where we don't want this submember extraction too even though the same substitite is in use.
public static DetermineAWSQueryListMemberSuffix ( Operation operation, Member member ) : string
operation Operation
member Member
return string
        public static string DetermineAWSQueryListMemberSuffix(Operation operation, Member member)
        {
            if (member.Shape.ModelListShape == null)
                return null;

            string suffixMember = null;
            var substituteShapeData = member.model.Customizations.GetSubstituteShapeData(member.ModelShape.ModelListShape.Name);
            if (substituteShapeData != null && substituteShapeData[CustomizationsModel.EmitFromMemberKey] != null)
            {
                var useSuffix = true;
                if (substituteShapeData[CustomizationsModel.ListMemberSuffixExclusionsKey] != null)
                {
                    var exclusions = substituteShapeData[CustomizationsModel.ListMemberSuffixExclusionsKey];
                    foreach (JsonData excl in exclusions)
                    {
                        if (string.Equals(operation.Name, (string)excl, StringComparison.Ordinal))
                        {
                            useSuffix = false;
                            break;
                        }
                    }
                }

                if (useSuffix)
                    suffixMember = (string)substituteShapeData[CustomizationsModel.EmitFromMemberKey];
            }

            return suffixMember;
        }