-
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
262 additions
and
76 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import ProviderBase from '../../providers/ProviderBase' | ||
import DeeplProvider from '../../providers/DeeplProvider' | ||
|
||
require('dotenv').config(); | ||
|
||
describe('DeeplProvider', () => { | ||
test('should get correct translation', async () => { | ||
const provider: ProviderBase = | ||
new DeeplProvider(process.env.DEEPL_API_KEY || '') | ||
const translations = await provider.translate('Poem', 'en-uk') | ||
expect(translations.length).toEqual(1) | ||
expect(translations[0]).toEqual('Вірш') | ||
}) | ||
|
||
test('should fail because of invalid lang', async () => { | ||
const provider: ProviderBase = | ||
new DeeplProvider(process.env.DEEPL_API_KEY || '') | ||
try { | ||
await provider.translate('Evening', 'en-abc123') | ||
} catch (e) { | ||
expect(e).toBeTruthy() | ||
return | ||
} | ||
throw new Error('Request should fail due to unknown target language') | ||
}) | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,31 @@ | ||
import * as core from '@actions/core'; | ||
import extract from './extract'; | ||
import FunTranslationsProvider from './providers/FunTranslationsProvider'; | ||
import LinguaToolsProvider from './providers/LinguaToolsProvider'; | ||
import MicrosoftProvider from './providers/MicrosoftProvider'; | ||
import MyMemoryProvider from './providers/MyMemoryProvider'; | ||
import ProviderBase, { ProviderError } from './providers/ProviderBase'; | ||
import YandexProvider from './providers/YandexProvider'; | ||
|
||
type ProviderType = | ||
'funtranslations' | 'linguatools' | 'microsoft' | 'mymemory' | 'yandex'; | ||
|
||
const getProvider = (): ProviderBase => { | ||
const provider: ProviderType = core.getInput('provider') as ProviderType; | ||
switch (provider) { | ||
case 'funtranslations': | ||
return new FunTranslationsProvider(); | ||
case 'linguatools': | ||
return new LinguaToolsProvider(); | ||
case 'microsoft': | ||
return new MicrosoftProvider( | ||
core.getInput('api_key'), core.getInput('api_additional_parameter')); | ||
case 'mymemory': | ||
return new MyMemoryProvider(core.getInput('api_key')); | ||
case 'yandex': | ||
return new YandexProvider(core.getInput('api_key')); | ||
default: | ||
throw new Error(`${provider} is not supported`); | ||
} | ||
} | ||
import * as core from '@actions/core' | ||
import extract from './extract' | ||
import ProviderBase, { ProviderError } from './providers/ProviderBase' | ||
import ProviderFactory, { ProviderType } from './providers/ProviderFactory' | ||
|
||
async function run() { | ||
try { | ||
const source: string = extract(core.getInput('source')); | ||
const provider: ProviderBase = getProvider(); | ||
let text: string; | ||
const source: string = extract(core.getInput('source')) | ||
const providerFactory: ProviderFactory = new ProviderFactory() | ||
const provider: ProviderBase = providerFactory.getProvider( | ||
core.getInput('provider') as ProviderType, | ||
core.getInput('api_key'), | ||
core.getInput('api_additional_parameter') | ||
) | ||
let text: string | ||
try { | ||
text = (await provider.translate(source, core.getInput('lang')))[0]; | ||
text = (await provider.translate(source, core.getInput('lang')))[0] | ||
} catch (e) { | ||
if (e instanceof ProviderError) { | ||
text = source; | ||
text = source | ||
} else { | ||
throw e; | ||
throw e | ||
} | ||
} | ||
core.setOutput('text', text); | ||
core.setOutput('text', text) | ||
} catch (e) { | ||
core.setFailed((<Error>e).message); | ||
core.setFailed((<Error>e).message) | ||
} | ||
} | ||
|
||
run(); | ||
run() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import ProviderBase from './ProviderBase' | ||
import {SourceLanguageCode, TargetLanguageCode, Translator} from 'deepl-node' | ||
|
||
export default class DeeplProvider extends ProviderBase { | ||
private translator: Translator | ||
|
||
constructor(apiKey: string) { | ||
super() | ||
this.translator = new Translator(apiKey) | ||
} | ||
|
||
async translate(text: string, lang: string): Promise<string[]> { | ||
const l: string[] = lang.split('-') | ||
const result = await this.translator.translateText<string>( | ||
text, l[0] as SourceLanguageCode, l[1] as TargetLanguageCode | ||
) | ||
return Promise.resolve([result.text]) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
import ProviderBase from './ProviderBase' | ||
import FunTranslationsProvider from './FunTranslationsProvider' | ||
import LinguaToolsProvider from './LinguaToolsProvider' | ||
import MicrosoftProvider from './MicrosoftProvider' | ||
import MyMemoryProvider from './MyMemoryProvider' | ||
import YandexProvider from './YandexProvider' | ||
import DeeplProvider from './DeeplProvider'; | ||
|
||
export type ProviderType = | ||
'deepl' | | ||
'funtranslations' | | ||
'linguatools' | | ||
'microsoft' | | ||
'mymemory' | | ||
'yandex' | ||
|
||
export default class ProviderFactory { | ||
getProvider( | ||
type: ProviderType, apiKey: string, apiAdditionalParam: string | ||
): ProviderBase { | ||
switch (type) { | ||
case 'deepl': | ||
return new DeeplProvider(apiKey) | ||
case 'funtranslations': | ||
return new FunTranslationsProvider() | ||
case 'linguatools': | ||
return new LinguaToolsProvider() | ||
case 'microsoft': | ||
return new MicrosoftProvider(apiKey, apiAdditionalParam) | ||
case 'mymemory': | ||
return new MyMemoryProvider(apiKey) | ||
case 'yandex': | ||
return new YandexProvider(apiKey) | ||
default: | ||
throw new Error(`${type} is not supported`) | ||
} | ||
} | ||
} |
Oops, something went wrong.