Skip to content

HTTP routing with templates as explained in the tutorial does not work. #114

@MarkKharitonov

Description

@MarkKharitonov

The scenario displayed in the tutorial at https://github.com/jacksonh/manos/blob/master/docs/tutorial/page-2.md does not work.

The step that is broken is the redirecting issued from the SubmitLink method - manos just does not find the LinkInfo method, which is the target of the redirection.

Debugging the flow reveals that Manos.Routing.StringMatchOperation.IsMatchInternal does not know to match /r/c43fn~ to /r/{id}~. Indeed, here is the code:

internal static bool IsMatchInternal (string the_string, string input, int start, out DataDictionary data, out int end)
{
    if (!StartsWith (input, start, the_string)) {
        data = null;
        end = start;
        return false;
    }

    data = null;
    end = start + the_string.Length;
    return true;
}

public static bool StartsWith (string input, int start, string str)
{
    if (input.Length < str.Length + start)
        return false;

    return String.Compare (input, start, str, 0, str.Length, StringComparison.OrdinalIgnoreCase) == 0;
}

This is the only place that tries to match /r/c43fn~ to /r/{id}~. Once it returns false it is all the way down to HTTP error 404.

I am looking at the master branch 33a14b0 pulled a few hours ago (July 10).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions