Skip to content

Commit 07e77f6

Browse files
committed
updated fastapi support
1 parent 41e65b2 commit 07e77f6

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

src/services/languages/extractors.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export interface IMethodExtractor {
4545
extractMethods(document: vscode.TextDocument, docSymbols: DocumentSymbol[]) : SymbolInfo[];
4646
}
4747
export interface IEndpointExtractor {
48-
extractEndpoints(document: vscode.TextDocument, symbolInfos: SymbolInfo[], tokens: Token[]): EndpointInfo[];
48+
extractEndpoints(document: vscode.TextDocument, symbolInfos: SymbolInfo[], tokens: Token[]): Promise<EndpointInfo[]>;
4949
}
5050
export interface ISpanExtractor {
5151
extractSpans(

src/services/languages/python/fastapiEndpointExtractor.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { EndpointInfo, IEndpointExtractor, SymbolInfo } from "../extractors";
66

77
export class FastapiEndpointExtractor implements IEndpointExtractor
88
{
9-
extractEndpoints(document: vscode.TextDocument, symbolInfo: SymbolInfo[], tokens: Token[]): EndpointInfo[]
9+
async extractEndpoints(document: vscode.TextDocument, symbolInfo: SymbolInfo[], tokens: Token[]): Promise<EndpointInfo[]>
1010
{
1111
// Ensure fastapi module was imported
1212
if(!tokens.any(t => t.text == 'fastapi' && t.type == TokenType.module))
@@ -34,6 +34,21 @@ export class FastapiEndpointExtractor implements IEndpointExtractor
3434
if (match){
3535
prefix = match[2];
3636
}
37+
38+
//Future: use the references to extract the 'include' statement to the router if it contains a prefix
39+
40+
// const position =new vscode.Position(appToken.range.start.line,appToken.range.start.character );
41+
42+
// let references : vscode.Location[] = await vscode.commands.executeCommand("vscode.executeReferenceProvider", document.uri,position);
43+
// references = references.filter(x=>x.uri.fsPath!==document.uri.fsPath);
44+
// if (references.length>0){
45+
// let referencedDocument = vscode.workspace.openTextDocument(references[0].uri);
46+
// let text = (await referencedDocument).getText(references[0].range);
47+
// console.log(text);
48+
49+
// }
50+
51+
3752
}
3853

3954

src/services/languages/symbolProvider.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,10 @@ export class SymbolProvider
6868
if(!supportedLanguage)
6969
return [];
7070

71-
return supportedLanguage.endpointExtractors
72-
.map(x => x.extractEndpoints(document, symbolInfos, tokens))
73-
.flat();
71+
let extractedInfos = await Promise.all( supportedLanguage.endpointExtractors
72+
.map( x => x.extractEndpoints(document, symbolInfos, tokens)));
73+
74+
return extractedInfos.flat();
7475
}
7576

7677
public async getSpans(

0 commit comments

Comments
 (0)