Example #1
0
def main(argv=None):
    '''
    Main program. Used for testing.
    '''
    import argparse
    import sys

    from scim2_filter_parser.lexer import SCIMLexer
    from scim2_filter_parser.parser import SCIMParser

    argv = argv or sys.argv[1:]

    parser = argparse.ArgumentParser('SCIM 2.0 Filter Parser Transpiler')
    parser.add_argument('filter', help="""Eg. 'userName eq "bjensen"'""")
    args = parser.parse_args(argv)

    token_stream = SCIMLexer().tokenize(args.filter)
    ast = SCIMParser().parse(token_stream)
    attr_map = {
        ('name', 'familyname', None): 'name.familyname',
        ('emails', None, None): 'emails',
        ('emails', 'type', None): 'emails.type',
        ('emails', 'value', None): 'emails.value',
        ('userName', None, None): 'username',
        ('title', None, None): 'title',
        ('userType', None, None): 'usertype',
        ('schemas', None, None): 'schemas',
        ('userName', None, 'urn:ietf:params:scim:schemas:core:2.0:User'):
        'username',
        ('meta', 'lastModified', None): 'meta.lastmodified',
        ('ims', 'type', None): 'ims.type',
        ('ims', 'value', None): 'ims.value',
    }
    sql, params = Transpiler(attr_map).transpile(ast)

    print('SQL:', sql)
    print('PARAMS:', params)
Example #2
0
 def setUp(self):
     self.lexer = SCIMLexer()
     self.parser = SCIMParser()
     self.transpiler = transpile_sql.Transpiler(self.attr_map)
Example #3
0
 def setUp(self):
     self.lexer = SCIMLexer()
     self.parser = SCIMParser()
Example #4
0
 def setUp(self):
     self.lexer = SCIMLexer()
     self.parser = SCIMParser()
     self.transpiler = transpiler.SCIMToSQLTranspiler(self.attr_map)
def get_query(scim_query: str, attr_map: Mapping):
    token_stream = SCIMLexer().tokenize(scim_query)
    tree = SCIMParser().parse(token_stream)
    return Transpiler(attr_map).transpile(tree)