Skip to content

Commit

Permalink
fix: request data from generated files correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
jrea committed Apr 7, 2022
1 parent d04e1fa commit 2c7be86
Show file tree
Hide file tree
Showing 49 changed files with 21,443 additions and 2,543 deletions.
3 changes: 2 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
dist
lib/nile/src/generated
lib/nile/src/generated
node_modules
28 changes: 25 additions & 3 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
{
"extends": ["prettier", "plugin:@typescript-eslint/recommended"],
"parser": "@typescript-eslint/parser",
"plugins": [
"react-hooks",
"@typescript-eslint"
],
"extends": [
"eslint:recommended",
"prettier",
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended"
],
"env": {
"browser": true,
"node": true
},
"rules": {
"quotes": ["error", "single", { "avoidEscape": true }]
"quotes": [
"error",
"single",
{
"avoidEscape": true
}
],
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "error"
}
}
}
2 changes: 1 addition & 1 deletion lib/nile/spec/auth.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ info:
servers:
- url: 'https://admin.api.thenile.dev/v0'
paths:
/:
/login:
post:
operationId: login
summary: Log in to service
Expand Down
23 changes: 23 additions & 0 deletions lib/nile/src/Nile.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import NileApi from './NileApi';
/**
* the below files need generated with `yarn build:exp`
*/
import { createConfiguration, ConfigurationParameters } from './generated/openapi/configuration';
import { ServerConfiguration } from './generated/openapi/servers';


import { DefaultApiRequestFactory, DefaultApiResponseProcessor } from './generated/openapi/apis/DefaultApi';

function ApiImpl(config?: ConfigurationParameters & { apiUrl: string }): NileApi {
const server = new ServerConfiguration<{ [key: string]: string }>(config?.apiUrl ?? '/', {})
const _config = {
baseServer: server,
...config,
};
const cfg = createConfiguration(_config);
const nileService = new DefaultApiRequestFactory(cfg);
const nileProcessor = new DefaultApiResponseProcessor();
const nile = new NileApi(cfg, nileService, nileProcessor);
return nile
}
export default ApiImpl;
180 changes: 180 additions & 0 deletions lib/nile/src/NileApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
import { Configuration } from './generated/openapi/configuration';
import { AcceptedInvite } from './generated/openapi/models/AcceptedInvite';
import { CreateOrganizationRequest } from './generated/openapi/models/CreateOrganizationRequest';
import { CreateUserRequest } from './generated/openapi/models/CreateUserRequest';
import { InlineResponse200 } from './generated/openapi/models/InlineResponse200';
import { Invite } from './generated/openapi/models/Invite';
import { LoginInfo } from './generated/openapi/models/LoginInfo';
import { Organization } from './generated/openapi/models/Organization';
import { PatchOrganizationRequest } from './generated/openapi/models/PatchOrganizationRequest';
import { PatchUserRequest } from './generated/openapi/models/PatchUserRequest';
import { User } from './generated/openapi/models/User';
import { PromiseDefaultApi } from './generated/openapi/types/PromiseAPI';
import { ObservableDefaultApi } from './generated/openapi/types/ObservableAPI';
import { DefaultApiRequestFactory, DefaultApiResponseProcessor } from './generated/openapi/apis/DefaultApi';
import { RequestContext } from './generated/openapi/http/http';

import { AuthMethods } from './generated/openapi/auth/auth';
export default class NileApi extends PromiseDefaultApi implements PromiseDefaultApi {
private _api: ObservableDefaultApi
private _config: Configuration;
authToken: string
public constructor(
configuration: Configuration,
requestFactory?: DefaultApiRequestFactory,
responseProcessor?: DefaultApiResponseProcessor
) {
super(configuration, requestFactory, responseProcessor);
this._api = new ObservableDefaultApi(configuration, requestFactory, responseProcessor);
this._config = configuration;
this.authToken = '';
}
private applyOptions(_options?: Configuration) {
const authentication: AuthMethods = {
default: {
getName: (): string => 'Bearer Authentication',
applySecurityAuthentication: (requestContext: RequestContext): void => {
requestContext.setHeaderParam('Authorization', `Bearer ${this.authToken}`);
}
}
}
return { ..._options, ...this._config, authMethods: authentication }
}
/**
* Accept an invite.
* @param code Invite code.
*/
public acceptInvite(code: number, _options?: Configuration): Promise<void> {
const result = this._api.acceptInvite(code, this.applyOptions(_options));
return result.toPromise();
}
/**
* Create a new Organization.
* @param createOrganizationRequest
*/
public createOrganization(createOrganizationRequest: CreateOrganizationRequest, _options?: Configuration): Promise<void> {
const result = this._api.createOrganization(createOrganizationRequest, this.applyOptions(_options));
return result.toPromise();
}
/**
* Create a new User.
* @param createUserRequest
*/
public createUser(createUserRequest: CreateUserRequest, _options?: Configuration): Promise<void> {
const result = this._api.createUser(createUserRequest, this.applyOptions(_options));
return result.toPromise();
}
/**
* Delete this Organization.
* @param id Unique identifier.
*/
public deleteOrganization(id: number, _options?: Configuration): Promise<void> {
const result = this._api.deleteOrganization(id, this.applyOptions(_options));
return result.toPromise();
}
/**
* Delete this User.
* @param id Unique identifier.
*/
public deleteUser(id: number, _options?: Configuration): Promise<void> {
const result = this._api.deleteUser(id, this.applyOptions(_options));
return result.toPromise();
}
/**
* Get an accepted invite.
* @param id Unique identifier.
*/
public getAcceptedInvite(id: number, _options?: Configuration): Promise<AcceptedInvite> {
const result = this._api.getAcceptedInvite(id, this.applyOptions(_options));
return result.toPromise();
}
/**
* Get an invite.
* @param code Invite code.
*/
public getInvite(code: number, _options?: Configuration): Promise<Invite> {
const result = this._api.getInvite(code, this.applyOptions(_options));
return result.toPromise();
}
/**
* Get information for this Organization.
* @param id Unique identifier.
*/
public getOrganization(id: number, _options?: Configuration): Promise<Organization> {
const result = this._api.getOrganization(id, this.applyOptions(_options));
return result.toPromise();
}
/**
* Get information for this User.
* @param id Unique identifier.
*/
public getUser(id: number, _options?: Configuration): Promise<User> {
const result = this._api.getUser(id, this.applyOptions(_options));
return result.toPromise();
}
/**
* List all accepted invites.
*/
public listAcceptedInvites(_options?: Configuration): Promise<AcceptedInvite[]> {
const result = this._api.listAcceptedInvites(this.applyOptions(_options));
return result.toPromise();
}
/**
* List all Invites.
* @param orgId Org ID.
*/

public listInvites(orgId?: number, _options?: Configuration): Promise<Invite[]> {
const result = this._api.listInvites(orgId, this.applyOptions(_options));
return result.toPromise();
}
/**
* List all Organizations.
*/
public listOrganizations(_options?: Configuration): Promise<Organization[]> {
const result = this._api.listOrganizations(this.applyOptions(_options));
return result.toPromise();
}
/**
* List all Users.
* @param orgId Org ID.
* @param email User email.
*/
public listUsers(orgId?: number, email?: string, _options?: Configuration): Promise<void | User[]> {
const result = this._api.listUsers(orgId, email, this.applyOptions(_options));
return result.toPromise();
}
/**
* Log in to service
* Saves an auth token for later calls
* @param loginInfo
*/
public async login(loginInfo: LoginInfo, _options?: Configuration): Promise<InlineResponse200> {
const result = this._api.login(loginInfo, this.applyOptions(_options));
const res = await result.toPromise();
const { token } = ((res as unknown) as { token: string }) ?? {};
if (token) {
this.authToken = token;
}
return res;
}
/**
* Update this Organization.
* @param id Unique identifier.
* @param patchOrganizationRequest
*/
public updateOrganization(id: number, patchOrganizationRequest: PatchOrganizationRequest, _options?: Configuration): Promise<Organization> {
const result = this._api.updateOrganization(id, patchOrganizationRequest, this.applyOptions(_options));
return result.toPromise();
}
/**
* Update this User.
* @param id Unique identifier.
* @param patchUserRequest
*/
public updateUser(id: number, patchUserRequest: PatchUserRequest, _options?: Configuration): Promise<User> {
const result = this._api.updateUser(id, patchUserRequest, this.applyOptions(_options));
return result.toPromise();
}

}
Loading

0 comments on commit 2c7be86

Please sign in to comment.