Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ import { CredentialsType } from '@aws/language-server-runtimes/server-interface'
import { AWSError, ConfigurationOptions } from 'aws-sdk'
import * as sinon from 'sinon'
import * as assert from 'assert'
import { CodeWhispererServiceBase, GenerateSuggestionsResponse } from './codeWhispererServiceBase'
import { PromiseResult } from 'aws-sdk/lib/request'
import {
CodeWhispererServiceBase,
GenerateSuggestionsResponse,
CreateUploadUrlRequest,
CreateUploadUrlResponse,
StartTransformationRequest,
Expand Down Expand Up @@ -39,7 +40,9 @@ import {
DeleteWorkspaceResponse,
ListFeatureEvaluationsRequest,
ListFeatureEvaluationsResponse,
} from '../../client/token/codewhispererbearertokenclient'
CreateSubscriptionTokenRequest,
CreateSubscriptionTokenResponse,
} from './codeWhispererServiceBase'

describe('CodeWhispererServiceBase', function () {
// Create the environment
Expand Down Expand Up @@ -81,6 +84,90 @@ describe('CodeWhispererServiceBase', function () {
}

clearCachedSuggestions(): void {}

override codeModernizerCreateUploadUrl(request: CreateUploadUrlRequest): Promise<CreateUploadUrlResponse> {
throw new Error('Method not implemented.')
}
override codeModernizerStartCodeTransformation(
request: StartTransformationRequest
): Promise<PromiseResult<StartTransformationResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override codeModernizerStopCodeTransformation(
request: StopTransformationRequest
): Promise<PromiseResult<StopTransformationResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override codeModernizerGetCodeTransformation(
request: GetTransformationRequest
): Promise<PromiseResult<GetTransformationResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override codeModernizerGetCodeTransformationPlan(
request: GetTransformationPlanRequest
): Promise<PromiseResult<GetTransformationPlanResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override createUploadUrl(
request: CreateUploadUrlRequest
): Promise<PromiseResult<CreateUploadUrlResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override startCodeAnalysis(
request: StartCodeAnalysisRequest
): Promise<PromiseResult<StartCodeAnalysisResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override getCodeAnalysis(
request: GetCodeAnalysisRequest
): Promise<PromiseResult<GetCodeAnalysisResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override listCodeAnalysisFindings(
request: ListCodeAnalysisFindingsRequest
): Promise<PromiseResult<ListCodeAnalysisFindingsResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override listAvailableCustomizations(
request: ListAvailableCustomizationsRequest
): Promise<PromiseResult<ListAvailableCustomizationsResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override listAvailableProfiles(
request: ListAvailableProfilesRequest
): Promise<PromiseResult<ListAvailableProfilesRequest, AWSError>> {
throw new Error('Method not implemented.')
}
override sendTelemetryEvent(
request: SendTelemetryEventRequest
): Promise<PromiseResult<SendTelemetryEventResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override createWorkspace(
request: CreateWorkspaceRequest
): Promise<PromiseResult<CreateWorkspaceResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override listWorkspaceMetadata(
request: ListWorkspaceMetadataRequest
): Promise<PromiseResult<ListWorkspaceMetadataResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override deleteWorkspace(
request: DeleteWorkspaceRequest
): Promise<PromiseResult<DeleteWorkspaceResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override listFeatureEvaluations(
request: ListFeatureEvaluationsRequest
): Promise<PromiseResult<ListFeatureEvaluationsResponse, AWSError>> {
throw new Error('Method not implemented.')
}
override createSubscriptionToken(
request: CreateSubscriptionTokenRequest
): Promise<PromiseResult<CreateSubscriptionTokenResponse, AWSError>> {
throw new Error('Method not implemented.')
}
}

service = new TestCodeWhispererService('us-east-1', 'https://codewhisperer.us-east-1.amazonaws.com')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,57 @@ export interface GenerateSuggestionsResponse {
responseContext: ResponseContext
}

// TODO: CodeWhispererSigv4Client requests and responses do not exist yet and should be added in the future
export interface CreateUploadUrlRequest extends CodeWhispererTokenClient.CreateUploadUrlRequest {}
export interface CreateUploadUrlResponse extends CodeWhispererTokenClient.CreateUploadUrlResponse {}

export interface StartTransformationRequest extends CodeWhispererTokenClient.StartTransformationRequest {}
export interface StartTransformationResponse extends CodeWhispererTokenClient.StartTransformationResponse {}

export interface StopTransformationRequest extends CodeWhispererTokenClient.StopTransformationRequest {}
export interface StopTransformationResponse extends CodeWhispererTokenClient.StopTransformationResponse {}

export interface GetTransformationRequest extends CodeWhispererTokenClient.GetTransformationRequest {}
export interface GetTransformationResponse extends CodeWhispererTokenClient.GetTransformationResponse {}

export interface GetTransformationPlanRequest extends CodeWhispererTokenClient.GetTransformationPlanRequest {}
export interface GetTransformationPlanResponse extends CodeWhispererTokenClient.GetTransformationPlanResponse {}

export interface StartCodeAnalysisRequest extends CodeWhispererTokenClient.StartCodeAnalysisRequest {}
export interface StartCodeAnalysisResponse extends CodeWhispererTokenClient.StartCodeAnalysisResponse {}

export interface GetCodeAnalysisRequest extends CodeWhispererTokenClient.GetCodeAnalysisRequest {}
export interface GetCodeAnalysisResponse extends CodeWhispererTokenClient.GetCodeAnalysisResponse {}

export interface ListCodeAnalysisFindingsRequest extends CodeWhispererTokenClient.ListCodeAnalysisFindingsRequest {}
export interface ListCodeAnalysisFindingsResponse extends CodeWhispererTokenClient.ListCodeAnalysisFindingsResponse {}

export interface ListAvailableCustomizationsRequest
extends CodeWhispererTokenClient.ListAvailableCustomizationsRequest {}
export interface ListAvailableCustomizationsResponse
extends CodeWhispererTokenClient.ListAvailableCustomizationsResponse {}

export interface ListAvailableProfilesRequest extends CodeWhispererTokenClient.ListAvailableProfilesRequest {}
export interface ListAvailableProfilesResponse extends CodeWhispererTokenClient.ListAvailableProfilesResponse {}

export interface SendTelemetryEventRequest extends CodeWhispererTokenClient.SendTelemetryEventRequest {}
export interface SendTelemetryEventResponse extends CodeWhispererTokenClient.SendTelemetryEventResponse {}

export interface CreateWorkspaceRequest extends CodeWhispererTokenClient.CreateWorkspaceRequest {}
export interface CreateWorkspaceResponse extends CodeWhispererTokenClient.CreateWorkspaceResponse {}

export interface ListWorkspaceMetadataRequest extends CodeWhispererTokenClient.ListWorkspaceMetadataRequest {}
export interface ListWorkspaceMetadataResponse extends CodeWhispererTokenClient.ListWorkspaceMetadataResponse {}

export interface DeleteWorkspaceRequest extends CodeWhispererTokenClient.DeleteWorkspaceRequest {}
export interface DeleteWorkspaceResponse extends CodeWhispererTokenClient.DeleteWorkspaceResponse {}

export interface ListFeatureEvaluationsRequest extends CodeWhispererTokenClient.ListFeatureEvaluationsRequest {}
export interface ListFeatureEvaluationsResponse extends CodeWhispererTokenClient.ListFeatureEvaluationsResponse {}

export interface CreateSubscriptionTokenRequest extends CodeWhispererTokenClient.CreateSubscriptionTokenRequest {}
export interface CreateSubscriptionTokenResponse extends CodeWhispererTokenClient.CreateSubscriptionTokenResponse {}

type CodeWhispererClient = CodeWhispererSigv4Client | CodeWhispererTokenClient

// Right now the only difference between the token client and the IAM client for codewhsiperer is the difference in function name
Expand All @@ -45,7 +96,7 @@ export abstract class CodeWhispererServiceBase {
public shareCodeWhispererContentWithAWS = false
public customizationArn?: string
public profileArn?: string
abstract client: CodeWhispererSigv4Client | CodeWhispererTokenClient
abstract client: CodeWhispererClient

inflightRequests: Set<AWS.Request<any, AWSError> & RequestExtras> = new Set()

Expand All @@ -64,10 +115,6 @@ export abstract class CodeWhispererServiceBase {
this.inflightRequests.delete(request)
}

abstract getCredentialsType(): CredentialsType

abstract generateSuggestions(request: GenerateSuggestionsRequest): Promise<GenerateSuggestionsResponse>

constructor(codeWhispererRegion: string, codeWhispererEndpoint: string) {
this.codeWhispererRegion = codeWhispererRegion
this.codeWhispererEndpoint = codeWhispererEndpoint
Expand Down Expand Up @@ -95,4 +142,64 @@ export abstract class CodeWhispererServiceBase {
// No-op: base class doesn't support subscription polling
return false
}

abstract getCredentialsType(): CredentialsType

abstract generateSuggestions(request: GenerateSuggestionsRequest): Promise<GenerateSuggestionsResponse>

abstract codeModernizerCreateUploadUrl(request: CreateUploadUrlRequest): Promise<CreateUploadUrlResponse>

abstract codeModernizerStartCodeTransformation(
request: StartTransformationRequest
): Promise<PromiseResult<StartTransformationResponse, AWSError>>

abstract codeModernizerStopCodeTransformation(
request: StopTransformationRequest
): Promise<PromiseResult<StopTransformationResponse, AWSError>>

abstract codeModernizerGetCodeTransformation(
request: GetTransformationRequest
): Promise<PromiseResult<GetTransformationResponse, AWSError>>

abstract codeModernizerGetCodeTransformationPlan(
request: GetTransformationPlanRequest
): Promise<PromiseResult<GetTransformationPlanResponse, AWSError>>

abstract createUploadUrl(request: CreateUploadUrlRequest): Promise<PromiseResult<CreateUploadUrlResponse, AWSError>>

abstract startCodeAnalysis(
request: StartCodeAnalysisRequest
): Promise<PromiseResult<StartCodeAnalysisResponse, AWSError>>

abstract getCodeAnalysis(request: GetCodeAnalysisRequest): Promise<PromiseResult<GetCodeAnalysisResponse, AWSError>>

abstract listCodeAnalysisFindings(
request: ListCodeAnalysisFindingsRequest
): Promise<PromiseResult<ListCodeAnalysisFindingsResponse, AWSError>>

abstract listAvailableCustomizations(
request: ListAvailableCustomizationsRequest
): Promise<PromiseResult<ListAvailableCustomizationsResponse, AWSError>>

abstract listAvailableProfiles(
request: ListAvailableProfilesRequest
): Promise<PromiseResult<ListAvailableProfilesRequest, AWSError>>

abstract sendTelemetryEvent(
request: SendTelemetryEventRequest
): Promise<PromiseResult<SendTelemetryEventResponse, AWSError>>

abstract createWorkspace(request: CreateWorkspaceRequest): Promise<PromiseResult<CreateWorkspaceResponse, AWSError>>

abstract listWorkspaceMetadata(
request: ListWorkspaceMetadataRequest
): Promise<PromiseResult<ListWorkspaceMetadataResponse, AWSError>>

abstract deleteWorkspace(request: DeleteWorkspaceRequest): Promise<PromiseResult<DeleteWorkspaceResponse, AWSError>>

abstract listFeatureEvaluations(
request: ListFeatureEvaluationsRequest
): Promise<PromiseResult<ListFeatureEvaluationsResponse, AWSError>>

abstract createSubscriptionToken(request: CreateSubscriptionTokenRequest): Promise<CreateSubscriptionTokenResponse>
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,47 @@ import {
createCodeWhispererSigv4Client,
} from '../../client/sigv4/codewhisperer'
import CodeWhispererSigv4Client = require('../../client/sigv4/codewhisperersigv4client')
import CodeWhispererTokenClient = require('../../client/token/codewhispererbearertokenclient')
import {
CodeWhispererServiceBase,
CreateSubscriptionTokenRequest,
CreateSubscriptionTokenResponse,
CreateUploadUrlRequest,
CreateUploadUrlResponse,
CreateWorkspaceRequest,
CreateWorkspaceResponse,
DeleteWorkspaceRequest,
DeleteWorkspaceResponse,
GenerateSuggestionsRequest,
GenerateSuggestionsResponse,
GetCodeAnalysisRequest,
GetCodeAnalysisResponse,
GetTransformationPlanRequest,
GetTransformationPlanResponse,
GetTransformationRequest,
GetTransformationResponse,
ListAvailableCustomizationsRequest,
ListAvailableCustomizationsResponse,
ListAvailableProfilesRequest,
ListAvailableProfilesResponse,
ListCodeAnalysisFindingsRequest,
ListCodeAnalysisFindingsResponse,
ListFeatureEvaluationsRequest,
ListFeatureEvaluationsResponse,
ListWorkspaceMetadataRequest,
ListWorkspaceMetadataResponse,
SendTelemetryEventRequest,
SendTelemetryEventResponse,
StartCodeAnalysisRequest,
StartCodeAnalysisResponse,
StartTransformationRequest,
StartTransformationResponse,
StopTransformationRequest,
StopTransformationResponse,
Suggestion,
SuggestionType,
} from './codeWhispererServiceBase'
import { PromiseResult } from 'aws-sdk/lib/request'

export class CodeWhispererServiceIAM extends CodeWhispererServiceBase {
client: CodeWhispererSigv4Client
Expand Down Expand Up @@ -74,4 +108,94 @@ export class CodeWhispererServiceIAM extends CodeWhispererServiceBase {
responseContext,
}
}

async codeModernizerCreateUploadUrl(request: CreateUploadUrlRequest): Promise<CreateUploadUrlResponse> {
throw new Error('Method not implemented.')
}

async codeModernizerStartCodeTransformation(
request: StartTransformationRequest
): Promise<PromiseResult<StartTransformationResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async codeModernizerStopCodeTransformation(
request: StopTransformationRequest
): Promise<PromiseResult<StopTransformationResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async codeModernizerGetCodeTransformation(
request: GetTransformationRequest
): Promise<PromiseResult<GetTransformationResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async codeModernizerGetCodeTransformationPlan(
request: GetTransformationPlanRequest
): Promise<PromiseResult<GetTransformationPlanResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async createUploadUrl(request: CreateUploadUrlRequest): Promise<PromiseResult<CreateUploadUrlResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async startCodeAnalysis(
request: StartCodeAnalysisRequest
): Promise<PromiseResult<StartCodeAnalysisResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async getCodeAnalysis(request: GetCodeAnalysisRequest): Promise<PromiseResult<GetCodeAnalysisResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async listCodeAnalysisFindings(
request: ListCodeAnalysisFindingsRequest
): Promise<PromiseResult<ListCodeAnalysisFindingsResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async listAvailableCustomizations(
request: ListAvailableCustomizationsRequest
): Promise<PromiseResult<ListAvailableCustomizationsResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async listAvailableProfiles(
request: ListAvailableProfilesRequest
): Promise<PromiseResult<ListAvailableProfilesResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async sendTelemetryEvent(
request: SendTelemetryEventRequest
): Promise<PromiseResult<SendTelemetryEventResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async createWorkspace(request: CreateWorkspaceRequest): Promise<PromiseResult<CreateWorkspaceResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async listWorkspaceMetadata(
request: ListWorkspaceMetadataRequest
): Promise<PromiseResult<ListWorkspaceMetadataResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async deleteWorkspace(request: DeleteWorkspaceRequest): Promise<PromiseResult<DeleteWorkspaceResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async listFeatureEvaluations(
request: ListFeatureEvaluationsRequest
): Promise<PromiseResult<ListFeatureEvaluationsResponse, AWSError>> {
throw new Error('Method not implemented.')
}

async createSubscriptionToken(request: CreateSubscriptionTokenRequest): Promise<CreateSubscriptionTokenResponse> {
throw new Error('Method not implemented.')
}
}
Loading