Beispiel #1
0
    def _BuildPredicate(self, client_id, token=None):
        if self.path_globs_whitelist is None:
            return None

        kb = data_store_utils.GetClientKnowledgeBase(client_id)

        blacklist_regexes = []
        for expression in self.path_globs_blacklist:
            for pattern in expression.Interpolate(knowledge_base=kb):
                blacklist_regexes.append(
                    rdf_paths.GlobExpression(pattern).AsRegEx())

        whitelist_regexes = []
        for expression in self.path_globs_whitelist:
            for pattern in expression.Interpolate(knowledge_base=kb):
                whitelist_regexes.append(
                    rdf_paths.GlobExpression(pattern).AsRegEx())

        def Predicate(client_path):
            # Enforce leading / since Regexes require it.
            path = "/" + client_path.Path().lstrip("/")
            return (not any(r.Match(path) for r in blacklist_regexes)
                    and any(r.Match(path) for r in whitelist_regexes))

        return Predicate
Beispiel #2
0
    def Handle(self, args, token=None):
        ge = rdf_paths.GlobExpression(args.glob_expression)
        ge.Validate()

        kb = data_store_utils.GetClientKnowledgeBase(str(args.client_id))
        components = ge.ExplainComponents(args.example_count, kb)

        return ApiExplainGlobExpressionResult(components=components)
Beispiel #3
0
  def _BuildPredicate(self, client_id, context=None):
    if self.include_only_path_globs is None:
      return None

    kb = data_store_utils.GetClientKnowledgeBase(client_id)

    exclude_regexes = []
    for expression in self.exclude_path_globs:
      for pattern in expression.Interpolate(knowledge_base=kb):
        exclude_regexes.append(rdf_paths.GlobExpression(pattern).AsRegEx())

    include_only_regexes = []
    for expression in self.include_only_path_globs:
      for pattern in expression.Interpolate(knowledge_base=kb):
        include_only_regexes.append(rdf_paths.GlobExpression(pattern).AsRegEx())

    def Predicate(client_path):
      # Enforce leading / since Regexes require it.
      path = "/" + client_path.Path().lstrip("/")
      return (not any(r.Match(path) for r in exclude_regexes) and
              any(r.Match(path) for r in include_only_regexes))

    return Predicate
Beispiel #4
0
    def client_knowledge_base(self) -> rdf_client.KnowledgeBase:
        if self._client_knowledge_base is None:
            self._client_knowledge_base = data_store_utils.GetClientKnowledgeBase(
                self.client_id)

        return self._client_knowledge_base
Beispiel #5
0
 def client_knowledge_base(self):
   if self._client_knowledge_base is None:
     self._client_knowledge_base = data_store_utils.GetClientKnowledgeBase(
         self.client_id, token=self.token)
   return self._client_knowledge_base