GithubHelp home page GithubHelp logo

Comments (6)

Aloren avatar Aloren commented on May 18, 2024 1
  1. The main reason behind that change is that AbstractRateLimitFilter knows too much. It does all policies filtering: userApply, originApply, urlApply. I propose to extract these methods to separate simple filters and to use in AbstractRateLimitFilter only compound policy filter.
    Instead of:
    protected List<Policy> policy(Route route, HttpServletRequest request) {
...
        return policyMap.values().stream()
            .filter(policy -> compoundPolicyFilter.filter(request, route, policy))
            .collect(Collectors.toList());
    }

whereas PolicyFilter would look like this:

@RequiredArgsConstructor
public class OriginPolicyFilter implements PolicyFilter {
    private final RateLimitUtils rateLimitUtils;

    @Override
    public boolean filter(LinkedHashSet<String> originMatchers, HttpServletRequest request, Route route) {
        return originMatchers.isEmpty()
                || originMatchers.contains(rateLimitUtils.getRemoteAddress(request));
    }

    @Override
    public RateLimitProperties.Policy.Type getType() {
        return RateLimitProperties.Policy.Type.ORIGIN;
    }
}

It is just an idea, interfaces can be different. The main point is that adding new filter will not require touching AbstractRateLimitFilter. Moreover changing default logic behind these filtering logic wight now is impossible.
2,3. these points are actually about one thing -- having separate configuration index class instead of iterating on configuration each time, so changing current configuration won't be needed.

is the empty check neccessary?
is that about urls.isEmpty()? it is an existing code, i suppose that it is not needed.

from spring-cloud-zuul-ratelimit.

lchayoun avatar lchayoun commented on May 18, 2024
  1. Can you explain a bit more on the purpose of the custom filter.
  2. It will be a good change, just need to keep the configuration as is and move the data to a set after initialization.
  3. Also good change, is the empty check neccessary?

from spring-cloud-zuul-ratelimit.

lchayoun avatar lchayoun commented on May 18, 2024

I see, sounds good.

from spring-cloud-zuul-ratelimit.

marcosbarbero avatar marcosbarbero commented on May 18, 2024

@Aloren are you willing to work on this?

from spring-cloud-zuul-ratelimit.

lchayoun avatar lchayoun commented on May 18, 2024

@Aloren @marcosbarbero I think that we did most of the changes in #100
Do you see anything we've missed?

from spring-cloud-zuul-ratelimit.

marcosbarbero avatar marcosbarbero commented on May 18, 2024

Closing due to inactivity.

from spring-cloud-zuul-ratelimit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.