Skip to content

Commit 0a7cde2

Browse files
committed
Unified interface
1 parent 1971230 commit 0a7cde2

File tree

15 files changed

+61
-36
lines changed

15 files changed

+61
-36
lines changed

src/export_command/cite_function/web.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import * as cheerio from "cheerio";
99
import fetch from "node-fetch";
1010
import type { Response } from "node-fetch";
1111
import { DateTime } from "luxon";
12-
import { ArchiveConvert, ArchiveResult } from "../../interface_definition/archiveInterface";
12+
import { ArchiveConvert, ArchiveResult } from "../../interface_definition/api_interface/archive";
1313

1414
export async function addWebCite(): Promise<void> {
1515
const config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("wikitext");
@@ -94,7 +94,7 @@ class WebCiteInfo {
9494
this.metaData = cheerio.load(websiteText);
9595

9696
const archiveJSON = await results[1].json();
97-
const re: ArchiveResult = ArchiveConvert.toArchiveResult(archiveJSON);
97+
const re: ArchiveResult = ArchiveConvert.toResult(archiveJSON);
9898

9999
// Check archive and get the closest
100100
if (re.archivedSnapshots.closest) {

src/export_command/uri_function/viewPage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { getDefaultBot } from '../wikimedia_function/bot';
99
import { Action, alterNativeValues, Prop } from '../wikimedia_function/args';
1010
import { showViewer } from '../wikimedia_function/view';
1111
import { isRemoteBot, parseArgs } from './uri';
12-
import { getHost } from '../host_function/host';
12+
import { getHost } from '../vscode_function/host';
1313

1414
export async function viewPage(query: string): Promise<void> {
1515
function setArgs(par: string, defaultValue?: string): void {

src/export_command/wikimedia_function/bot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import MWBot from 'mwbot';
77
import * as vscode from 'vscode';
8-
import { getHost } from '../host_function/host';
8+
import { getHost } from '../vscode_function/host';
99
import { Action, Meta } from './args';
1010
import { showMWErrorMessage } from './err_msg';
1111

src/export_command/wikimedia_function/err_msg.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import * as vscode from 'vscode';
7-
import { instanceOfMWError } from '../../interface_definition/commonInterface';
7+
import { instanceOfMWError } from '../../interface_definition/api_interface/commonInterface';
88

99
export function showMWErrorMessage(name: string, error: unknown, moreInfo = ''): void {
1010
if (instanceOfMWError(error)) {

src/export_command/wikimedia_function/page.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import * as vscode from 'vscode';
77
import type MWBot from 'mwbot';
88
import { Action, Prop, RvProp, alterNativeValues, List } from './args';
9-
import { ReadPageConvert, ReadPageResult, Main, Revision, Jump, Page } from '../../interface_definition/readPageInterface';
10-
import { OldTokensConvert, OldTokensResult } from '../../interface_definition/oldTokensInterface';
9+
import { ReadPageConvert, ReadPageResult, Main, Revision, Jump, Page } from '../../interface_definition/api_interface/readPage';
10+
import { OldTokensConvert, OldTokensResult } from '../../interface_definition/api_interface/oldTokens';
1111
import { compareVersion, getDefaultBot, getLoggedInBot } from './bot';
12-
import { TokensConvert, TokensResult } from '../../interface_definition/tokensInterface';
12+
import { TokensConvert, TokensResult } from '../../interface_definition/api_interface/tokens';
1313
import { showMWErrorMessage } from './err_msg';
14-
import { TagsConvert, TagsResult } from '../../interface_definition/tagsInterface';
14+
import { TagsConvert, TagsResult } from '../../interface_definition/api_interface/tags';
1515

1616
interface ContentInfo {
1717
content: string;
@@ -31,7 +31,7 @@ export async function postPage(): Promise<void> {
3131
type: 'csrf'
3232
};
3333
const result: unknown = await bot.request(args);
34-
const reNew: TokensResult = TokensConvert.toTokensResult(result);
34+
const reNew: TokensResult = TokensConvert.toResult(result);
3535
const token: string | undefined = reNew.query?.tokens?.csrftoken;
3636
if (token) {
3737
return token;
@@ -47,7 +47,7 @@ export async function postPage(): Promise<void> {
4747
type: "edit"
4848
};
4949
const result: unknown = await bot.request(args);
50-
const reOld: OldTokensResult = OldTokensConvert.toOldTokensResult(result);
50+
const reOld: OldTokensResult = OldTokensConvert.toResult(result);
5151
const token: string | undefined = reOld.tokens?.edittoken;
5252
if (token) {
5353
return token;
@@ -251,7 +251,7 @@ ${infoLine}
251251
const result: unknown = await tBot.request(args);
252252
// console.log(result);
253253
// Convert result as class
254-
const re: ReadPageResult = ReadPageConvert.toReadPageResult(result);
254+
const re: ReadPageResult = ReadPageConvert.toResult(result);
255255
if (re.query?.interwiki) {
256256
vscode.window.showWarningMessage(
257257
`Interwiki page "${re.query.interwiki[0].title}" in space "${re.query.interwiki[0].iw}" are currently not supported. Please try to modify host.`
@@ -357,7 +357,7 @@ async function getValidTagList(tBot: MWBot): Promise<(number | string)[]> {
357357
const tagList: (number | string)[] = [];
358358
for (; ;) {
359359
const result: unknown = await tBot.request(args);
360-
const re: TagsResult = TagsConvert.toTagsResult(result);
360+
const re: TagsResult = TagsConvert.toResult(result);
361361

362362
tagList.push(
363363
...re.query.tags.filter(tag =>

src/export_command/wikimedia_function/view.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import * as vscode from 'vscode';
77
import type MWBot from 'mwbot';
88
import { extensionContext } from '../../extension';
99
import { Action, ContextModel, alterNativeValues, Prop } from './args';
10-
import { GetViewResult, ViewConverter } from '../../interface_definition/getViewInterface';
11-
import { getHost } from '../host_function/host';
10+
import { GetViewResult, ViewConvert } from '../../interface_definition/api_interface/getView';
11+
import { getHost } from '../vscode_function/host';
1212
import { getDefaultBot } from './bot';
1313
import { getContentInfo } from './page';
1414
import { showMWErrorMessage } from './err_msg';
@@ -120,7 +120,7 @@ export async function showViewer(currentPanel: vscode.WebviewPanel | string, vie
120120
const barMessage: vscode.Disposable = vscode.window.setStatusBarMessage("Wikitext: Getting view...");
121121
try {
122122
const result: unknown = await tBot.request(args);
123-
const re: GetViewResult = ViewConverter.toGetViewResult(result);
123+
const re: GetViewResult = ViewConvert.toResult(result);
124124
if (!re.parse) { return undefined; }
125125

126126
const baseElem = `<base href="${baseURI}" />`;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
interface IObjectConverter<TargetType> {
2+
toResult(json: unknown): TargetType;
3+
resultToJson(value: TargetType): unknown;
4+
}
5+
6+
function staticImplements<T>(): <U extends T>(constructor: U) => void {
7+
return <U extends T>(constructor: U): void => { constructor; };
8+
}
9+
10+
export function staticObjectConverter<TargetType>(): (constructor: IObjectConverter<TargetType>) => void {
11+
return staticImplements<IObjectConverter<TargetType>>();
12+
}

src/interface_definition/archiveInterface.ts renamed to src/interface_definition/api_interface/archive.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { u, o, r, cast, uncast, TypeMap } from "./convertFunction";
6+
import { u, o, r, cast, uncast, TypeMap } from "../convertFunction";
7+
import { staticObjectConverter } from "../IObjectConverter";
78

89
// https://archive.org/help/wayback_api.php
910

@@ -37,12 +38,13 @@ export interface Closest {
3738
status: string;
3839
}
3940

41+
@staticObjectConverter<ArchiveResult>()
4042
export class ArchiveConvert {
41-
public static toArchiveResult(json: unknown): ArchiveResult {
43+
public static toResult(json: unknown): ArchiveResult {
4244
return cast(json, r("ArchiveResult"), archiveTypeMap);
4345
}
4446

45-
public static archiveResultToJson(value: ArchiveResult): unknown {
47+
public static resultToJson(value: ArchiveResult): unknown {
4648
return uncast(value, r("ArchiveResult"), archiveTypeMap);
4749
}
4850
}

src/interface_definition/commonInterface.ts renamed to src/interface_definition/api_interface/commonInterface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { u, o, r, TypeMap } from "./convertFunction";
6+
import { u, o, r, TypeMap } from "../convertFunction";
77

88
//#region Error
99

0 commit comments

Comments
 (0)