Compare commits

...

6 Commits

Author SHA1 Message Date
64897e8e0b 1.0.9 2020-06-22 13:49:55 +00:00
530fc59880 fix(core): update 2020-06-22 13:49:53 +00:00
82cf0c2257 1.0.8 2020-06-22 13:40:05 +00:00
ea16521ca3 fix(core): update 2020-06-22 13:40:05 +00:00
15889699b4 1.0.7 2020-06-21 18:41:05 +00:00
765e56076d fix(core): update 2020-06-21 18:41:04 +00:00
10 changed files with 261 additions and 18 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/ora",
"version": "1.0.6",
"version": "1.0.9",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/ora",
"version": "1.0.6",
"version": "1.0.9",
"private": false,
"description": "an api abstraction package for ora.pm",
"main": "dist_ts/index.js",

View File

@ -30,8 +30,62 @@ tap.test('should get all lists for a project', async () => {
});
const projectsInLosslessOrg = await losslessOrganization.getProjects();
const featureProjects = projectsInLosslessOrg.filter(oraProjectArg => {
return oraProjectArg.title
})
return oraProjectArg.title.includes('Feature');
});
console.log('The following Feature Boards are available:');
featureProjects.forEach(oraProjectArg => console.log(oraProjectArg.title));
const layerIoProject = featureProjects.find(oraProjectArg =>
oraProjectArg.title.includes('layer.io')
);
const lists = await layerIoProject.getLists();
console.log('\nThe following lists are available');
lists.forEach(listArg => console.log(listArg.title));
});
tap.test('should get all tasks for a project', async () => {
const organizations = await oraInstance.getOrganizations();
const losslessOrganization = organizations.find(orgArg => {
return orgArg.name.startsWith('Lossless');
});
const projectsInLosslessOrg = await losslessOrganization.getProjects();
const featureProjects = projectsInLosslessOrg.filter(oraProjectArg => {
return oraProjectArg.title.includes('Feature');
});
const layerIoProject = featureProjects.find(oraProjectArg =>
oraProjectArg.title.includes('layer.io')
);
const lists = await layerIoProject.getLists();
let tasks: ora.OraTask[] = [];
for (const list of lists) {
tasks = tasks.concat(await list.getTasks());
}
console.log('the following tasks are available:');
tasks.forEach(taskArg => console.log(taskArg.title));
});
tap.test('should get a milestone', async () => {
const organizations = await oraInstance.getOrganizations();
const losslessOrganization = organizations.find(orgArg => {
return orgArg.name.startsWith('Lossless');
});
const projectsInLosslessOrg = await losslessOrganization.getProjects();
const featureProjects = projectsInLosslessOrg.filter(oraProjectArg => {
return oraProjectArg.title.includes('Feature');
});
const layerIoProject = featureProjects.find(oraProjectArg =>
oraProjectArg.title.includes('layer.io')
);
const lists = await layerIoProject.getLists();
let tasks: ora.OraTask[] = [];
for (const list of lists) {
tasks = tasks.concat(await list.getTasks());
}
console.log('the following tasks are available:');
const milestone = await tasks[0].getMilestone();
expect(milestone).to.be.instanceOf(ora.OraMilestone);
console.log(`Task with title "${tasks[0].title}" is part of milestone "${milestone.title}"`);
});
tap.start();

View File

@ -1,2 +1,6 @@
export * from './ora.classes.ora';
export * from './ora.classes.organization';
export * from './ora.classes.project';
export * from './ora.classes.list';
export * from './ora.classes.task';
export * from './ora.classes.milestone';

View File

@ -1,12 +1,33 @@
import * as plugins from './ora.plugins';
import { OraProject } from './ora.classes.project';
import { OraTask } from './ora.classes.task';
export class OraList {
/**
* the interface for an ora list
*/
export interface IOraList {
actions: number;
archived: false;
color: string;
id: number;
list_type: number;
position: number;
project_id: number;
public: boolean;
title: string;
updated_at: string;
view_id: number;
}
export class OraList implements IOraList {
// ======
// STATIC
// ======
public static async getAllLists(oraProjectRef: OraProject) {
const response = await oraProjectRef.oraOrganizationRef.oraRef.request(`/projects/${oraProjectRef.id}/lists`, 'GET');
const response = await oraProjectRef.oraOrganizationRef.oraRef.request(
`/projects/${oraProjectRef.id}/lists`,
'GET'
);
const oraLists: OraList[] = [];
for (const dataObject of response.data) {
oraLists.push(new OraList(oraProjectRef, dataObject));
@ -17,6 +38,17 @@ export class OraList {
// ========
// INSTANCE
// ========
public actions: number;
public archived: false;
public color: string;
public id: number;
public list_type: number;
public position: number;
public project_id: number;
public public: boolean;
public title: string;
public updated_at: string;
public view_id: number;
public oraProjectObjectRef: OraProject;
@ -24,4 +56,8 @@ export class OraList {
this.oraProjectObjectRef = oraProjectRefArg;
Object.assign(this, creationObjectArg);
}
}
public async getTasks() {
return OraTask.getAllOraTasks(this);
}
}

View File

@ -0,0 +1,47 @@
import * as plugins from './ora.plugins';
import { OraProject } from './ora.classes.project';
export interface IOraMilestone {
id: number;
title: string;
created_at: string;
updated_at: string;
archived: boolean;
complete: boolean;
deadline: string;
color: string;
position: number;
}
export class OraMilestone implements IOraMilestone {
// ======
// STATIC
// ======
public static async getAllMilestonesForProject(oraProjectArg: OraProject) {
const response = await oraProjectArg.oraOrganizationRef.oraRef.request(`/projects/${oraProjectArg.id}/milestones`, 'GET');
const milestones: OraMilestone[] = [];
for (const dataObject of response.data) {
milestones.push(new OraMilestone(oraProjectArg, dataObject));
}
return milestones;
}
// ========
// INSTANCE
// ========
public id: number;
public title: string;
public created_at: string;
public updated_at: string;
public archived: boolean;
public complete: boolean;
public deadline: string;
public color: string;
public position: number;
public oraProjectRef: OraProject;
constructor(oraProjectRef: OraProject, creationObjectArg: IOraMilestone) {
this.oraProjectRef = oraProjectRef;
Object.assign(this, creationObjectArg);
}
}

View File

@ -9,25 +9,25 @@ export class Ora {
this.apiToken = apiTokenArg;
}
public async getOrganizations () {
public async getOrganizations() {
return await OraOrganization.getAllOrganizations(this);
}
/**
* make a request
* @param routeArg
* @param methodArg
* @param payloadArg
* @param routeArg
* @param methodArg
* @param payloadArg
*/
public async request (routeArg: string, methodArg: string, payloadArg?: string) {
public async request(routeArg: string, methodArg: string, payloadArg?: string) {
const response = await plugins.smartrequest.request(this.apiBase + routeArg, {
method: methodArg,
requestBody: payloadArg,
headers: {
accept: "application/json",
accept: 'application/json',
authorization: `Bearer ${this.apiToken}`
}
});
return response.body;
}
}
}

View File

@ -2,6 +2,7 @@ import * as plugins from './ora.plugins';
import { Ora } from './ora.classes.ora';
import { OraOrganization } from './ora.classes.organization';
import { OraList } from './ora.classes.list';
import { OraMilestone } from './ora.classes.milestone';
export interface IOraProject {
archived: boolean;
@ -72,7 +73,6 @@ export class OraProject implements IOraProject {
public view_title: 'Backlog';
public web: string;
public oraOrganizationRef: OraOrganization;
constructor(oraOrganiazionRefArg: OraOrganization, creationObjectArg: IOraProject) {
this.oraOrganizationRef = oraOrganiazionRefArg;
@ -82,4 +82,8 @@ export class OraProject implements IOraProject {
public async getLists(): Promise<OraList[]> {
return OraList.getAllLists(this);
}
public async getMileStones(): Promise<OraMilestone[]> {
return OraMilestone.getAllMilestonesForProject(this);
}
}

100
ts/ora.classes.task.ts Normal file
View File

@ -0,0 +1,100 @@
import * as plugins from './ora.plugins';
import { OraList } from './ora.classes.list';
import { OraMilestone } from './ora.classes.milestone';
export interface IOraTask {
milestone_id: number;
task_type: number;
creator: number;
second_id: number;
title: string;
description: string;
last_picture: string;
last_picture_external_url: string;
created_at: string;
updated_at: string;
deadline: string;
archived: boolean;
color: string;
estimated: string;
time_tracked: string;
public: boolean;
state: string;
cover_width: number;
cover_height: number;
checklist: string;
comments: number;
public_comments: number;
likes: number;
attachments: number;
commits: number;
support_tickets: number;
value: number;
points: number;
points_done: number;
sprint_id: number;
position: number;
}
export class OraTask implements IOraTask {
// ======
// STATIC
// ======
public static async getAllOraTasks(oraListArg: OraList): Promise<OraTask[]> {
const response = await oraListArg.oraProjectObjectRef.oraOrganizationRef.oraRef.request(
`/projects/${oraListArg.oraProjectObjectRef.id}/lists/${oraListArg.id}/tasks`,
'GET'
);
const oraTasks: OraTask[] = [];
for (const dataObject of response.data) {
oraTasks.push(new OraTask(oraListArg, dataObject));
}
return oraTasks;
}
// ========
// INSTANCE
// ========
public milestone_id: number;
public task_type: number;
public creator: number;
public second_id: number;
public title: string;
public description: string;
public last_picture: string;
public last_picture_external_url: string;
public created_at: string;
public updated_at: string;
public deadline: string;
public archived: boolean;
public color: string;
public estimated: string;
public time_tracked: string;
public public: boolean;
public state: string;
public cover_width: number;
public cover_height: number;
public checklist: string;
public comments: number;
public public_comments: number;
public likes: number;
public attachments: number;
public commits: number;
public support_tickets: number;
public value: number;
public points: number;
public points_done: number;
public sprint_id: number;
public position: number;
public oraListRef: OraList;
constructor(oraListRefArg: OraList, creationObjectArg: IOraTask) {
this.oraListRef = oraListRefArg;
Object.assign(this, creationObjectArg);
}
public async getMilestone (): Promise<OraMilestone> {
return (await this.oraListRef.oraProjectObjectRef.getMileStones()).find(milestoneArg => milestoneArg.id === this.milestone_id);
}
}

View File

@ -1,6 +1,4 @@
// pushrocks scope
import * as smartrequest from '@pushrocks/smartrequest';
export {
smartrequest
};
export { smartrequest };