mirror of
https://github.com/hackku21/loc-chain-backend.git
synced 2024-10-27 20:34:03 +00:00
Add API endpoint for testing transaction
This commit is contained in:
parent
5ae20e945f
commit
7e15291806
@ -2,7 +2,7 @@ import {Inject, Injectable} from "@extollo/di"
|
|||||||
import {Collection, Iterable} from "@extollo/util"
|
import {Collection, Iterable} from "@extollo/util"
|
||||||
import {FirebaseUnit, RTDBRef} from "./units/FirebaseUnit"
|
import {FirebaseUnit, RTDBRef} from "./units/FirebaseUnit"
|
||||||
import * as firebase from "firebase-admin"
|
import * as firebase from "firebase-admin"
|
||||||
import {Application} from "@extollo/lib";
|
import {Application} from "@extollo/lib"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base interface for an item in a Firebase RTDB collection.
|
* Base interface for an item in a Firebase RTDB collection.
|
||||||
|
29
src/app/http/controllers/api/Blockchain.controller.ts
Normal file
29
src/app/http/controllers/api/Blockchain.controller.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import {Controller} from "@extollo/lib"
|
||||||
|
import {Inject, Injectable} from "@extollo/di"
|
||||||
|
import {TransactionResource, TransactionResourceItem} from "../../../rtdb/TransactionResource"
|
||||||
|
import {one} from "@extollo/util"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Blockchain Controller
|
||||||
|
* ------------------------------------
|
||||||
|
* Route handlers for API endpoints.
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class Blockchain extends Controller {
|
||||||
|
|
||||||
|
public async postTransaction() {
|
||||||
|
const item: TransactionResourceItem = {
|
||||||
|
firebaseID: '',
|
||||||
|
seqID: -1,
|
||||||
|
combinedHash: String(this.request.input('combinedHash')),
|
||||||
|
timestamp: parseInt(String(this.request.input('timestamp'))),
|
||||||
|
encodedGPSLocation: String(this.request.input('encodedGPSLocation')),
|
||||||
|
partnerPublicKey: String(this.request.input('partnerPublicKey')),
|
||||||
|
validationSignature: String(this.request.input('validationSignature')),
|
||||||
|
}
|
||||||
|
|
||||||
|
await (<TransactionResource> this.make(TransactionResource)).push(item)
|
||||||
|
return one(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
import {Controller, view, Session} from '@extollo/lib';
|
|
||||||
import {Inject, Injectable} from "@extollo/di";
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class Home extends Controller {
|
|
||||||
@Inject()
|
|
||||||
protected readonly session!: Session;
|
|
||||||
|
|
||||||
public welcome() {
|
|
||||||
this.session.set('app_visits', this.session.get('app_visits', 0) + 1)
|
|
||||||
|
|
||||||
return view('welcome', {
|
|
||||||
app_visits: this.session.get('app_visits'),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,27 @@
|
|||||||
|
import {error, Middleware} from "@extollo/lib"
|
||||||
|
import {Injectable} from "@extollo/di"
|
||||||
|
import {HTTPStatus} from "@extollo/util";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ValidateEncounterTransaction Middleware
|
||||||
|
* --------------------------------------------
|
||||||
|
* Put some description here.
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class ValidateEncounterTransaction extends Middleware {
|
||||||
|
public async apply() {
|
||||||
|
const required: string[] = [
|
||||||
|
'combinedHash',
|
||||||
|
'encodedGPSLocation',
|
||||||
|
'partnerPublicKey',
|
||||||
|
'validationSignature',
|
||||||
|
'timestamp',
|
||||||
|
]
|
||||||
|
|
||||||
|
for ( const field of required ) {
|
||||||
|
if ( !this.request.input(field) ) {
|
||||||
|
return error(`Missing required field: ${field}`, HTTPStatus.BAD_REQUEST, 'json')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,6 @@
|
|||||||
import {Route} from "@extollo/lib"
|
import {Route} from "@extollo/lib"
|
||||||
|
|
||||||
Route.get('/', 'main:Home.welcome')
|
Route.group('/api/v1', () => {
|
||||||
|
Route.post('/encounter', 'api:Blockchain.postTransaction')
|
||||||
|
.pre('api:ValidateEncounterTransaction')
|
||||||
|
})
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {FirebaseResource, FirebaseResourceItem} from "../FirebaseResource"
|
import {FirebaseResource, FirebaseResourceItem} from "../FirebaseResource"
|
||||||
import {Injectable} from "@extollo/di"
|
import {Injectable} from "@extollo/di"
|
||||||
import {RTDBRef} from "../units/FirebaseUnit"
|
import {RTDBRef} from "../units/FirebaseUnit"
|
||||||
import {AsyncCollection} from "@extollo/util";
|
import {AsyncCollection} from "@extollo/util"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface representing a client-submitted encounter transaction.
|
* Interface representing a client-submitted encounter transaction.
|
||||||
|
Loading…
Reference in New Issue
Block a user