Beispiel #1
0
    /// <summary>
    ///     Match the type parameter at the given index.
    /// </summary>
    /// <remarks>
    ///     The index can be either positive or negative to allow for comparing against first or last parameters
    /// </remarks>
    /// <param name="parameter">The parameter, maybe a positive or negative <see cref="Index" /></param>
    /// <param name="type">The type of the parameter</param>
    /// <returns></returns>
    public RestfulApiMethodBuilder MatchParameterType(Index parameter, INamedTypeSymbol type)
    {
        if (!_parameters.TryGetValue(parameter, out var item))
        {
            item = _parameters[parameter] = DefaultMatcher(parameter);
        }

        _parameters[parameter] = new RestfulApiParameterMatcher(
            parameter,
            item.NameMatch,
            item.Names,
            ApiConventionTypeMatchBehavior.AssignableFrom,
            type
            );

        return(this);
    }
Beispiel #2
0
    /// <summary>
    ///     Matched on the names of the parameter at the given index
    /// </summary>
    /// <remarks>
    ///     The index can be either positive or negative to allow for comparing against first or last parameters
    /// </remarks>
    /// <param name="parameter">The parameter, maybe a positive or negative <see cref="Index" /></param>
    /// <param name="value">The first name</param>
    /// <param name="values">Any additional names</param>
    /// <returns></returns>
    public RestfulApiMethodBuilder MatchParameterName(Index parameter, string value, params string[] values)
    {
        if (!_parameters.TryGetValue(parameter, out var item))
        {
            item = _parameters[parameter] = DefaultMatcher(parameter);
        }

        _parameters[parameter] = new RestfulApiParameterMatcher(
            parameter,
            ApiConventionNameMatchBehavior.Exact,
            new[] { value }.Concat(values).ToArray(),
            item.TypeMatch,
            item.Type
            );

        return(this);
    }
Beispiel #3
0
    /// <summary>
    ///     Match only if a parameter exists at the given index
    /// </summary>
    /// <remarks>
    ///     The index can be either positive or negative to allow for comparing against first or last parameters
    /// </remarks>
    /// <param name="parameter">The parameter, maybe a positive or negative <see cref="Index" /></param>
    /// <returns></returns>
    public RestfulApiMethodBuilder HasParameter(Index parameter)
    {
        if (!_parameters.TryGetValue(parameter, out var item))
        {
            item = _parameters[parameter] = DefaultMatcher(parameter);
        }

        _parameters[parameter] =
            new RestfulApiParameterMatcher(
                parameter,
                item.NameMatch,
                item.Names.Length > 0 ? item.Names : Array.Empty <string>(),
                item.TypeMatch,
                item.Type
                );

        return(this);
    }