Skip to content

Commit

Permalink
Merge pull request #4 from fabrix-app/v1.1
Browse files Browse the repository at this point in the history
[chore] base classes for generics [fix] config conflicts
  • Loading branch information
scott-wyatt authored Aug 5, 2018
2 parents 6bc8962 + 547f41d commit d09c435
Show file tree
Hide file tree
Showing 23 changed files with 326 additions and 272 deletions.
2 changes: 1 addition & 1 deletion lib/GenericsSpool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export class GenericsSpool extends Spool {
defaultsDeep(this.api, generics[generic].api)
}
if (generics[generic].hasOwnProperty('config')) {
this.config = Object.assign(this.config, generics[generic].config)
this.app.config.set(generic, generics[generic].config)
}
})
}
Expand Down
28 changes: 27 additions & 1 deletion lib/defaults/DataStoreDefault.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
export class DataStoreDefault {
import { Generic } from '../Generic'

export class DataStoreDefault extends Generic {
upload(buffer) {
const res = {
status: 'success',
url: 'https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150'
}
return Promise.resolve(res)
}

uploadFile(file) {
const res = {
status: 'success',
url: file.url
}
return Promise.resolve(res)
}

uploadFiles(files) {
const res = files.map(file => {
return {
status: 'success',
url: file.url
}
})
return Promise.resolve(res)
}
}
10 changes: 9 additions & 1 deletion lib/defaults/EmailDefault.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
export class EmailDefault {
import { Generic } from '../Generic'

export class EmailDefault extends Generic {
send(data) {
return Promise.resolve([])
}

sendTemplate(data) {
return Promise.resolve([])
}
}
33 changes: 32 additions & 1 deletion lib/defaults/FulfillmentDefault.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
export class FulfillmentDefault {
import { Generic } from '../Generic'

export class FulfillmentDefault extends Generic {
createOrder(data) {
return Promise.resolve({})
}
createOrders(data) {
return Promise.resolve([])
}
updateOrder(data) {
return Promise.resolve({})
}
updateOrders(data) {
return Promise.resolve([])
}
destroyOrder(data) {
return Promise.resolve({})
}
destroyOrders(data) {
return Promise.resolve([])
}
getOrder(data) {
return Promise.resolve({})
}
getOrders(data) {
return Promise.resolve([])
}
holdOrder(data) {
return Promise.resolve({})
}
holdOrders(data) {
return Promise.resolve([])
}
}
10 changes: 10 additions & 0 deletions lib/defaults/GeolocationDefault.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Generic } from '../Generic'

export class GeolocationDefault extends Generic {
locate(data) {
return Promise.resolve({
latitude: 0.000000,
longitude: 0.000000
})
}
}
5 changes: 5 additions & 0 deletions lib/defaults/ImageDefault.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { Generic } from '../Generic'

export class ImageDefault extends Generic {

}
152 changes: 151 additions & 1 deletion lib/defaults/PaymentDefault.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,153 @@
export class PaymentDefault {
import { Generic } from '../Generic'
import * as shortid from 'shortid'

export class PaymentDefault extends Generic {
authorize(transaction) {

transaction.kind = 'authorize'
transaction.authorization = 'abc123'

if (transaction.payment_details.length === 0) {
transaction.error_code = 'processing_error'
transaction.status = 'failure'
}
else {
transaction.status = 'success'
transaction.payment_details.avs_result_code = '123'
transaction.payment_details.credit_card_iin = '123'
transaction.payment_details.credit_card_company = 'visa'
transaction.payment_details.credit_card_number = '**** **** **** 1234'
transaction.payment_details.cvv_result_code = 'Y'
}
return Promise.resolve(transaction)
}

capture(transaction) {
transaction.status = 'success'
transaction.kind = 'capture'
return Promise.resolve(transaction)
}

sale(transaction) {
transaction.authorization = 'abc123'
transaction.status = 'success'
transaction.kind = 'sale'
transaction.payment_details.avs_result_code = '123'
transaction.payment_details.credit_card_iin = '123'
transaction.payment_details.credit_card_company = 'visa'
transaction.payment_details.credit_card_number = '**** **** **** 1234'
transaction.payment_details.cvv_result_code = 'Y'

return Promise.resolve(transaction)
}

void(transaction) {
transaction.kind = 'void'
transaction.status = 'success'
return Promise.resolve(transaction)
}

refund(transaction) {
transaction.kind = 'refund'
transaction.status = 'success'
return Promise.resolve(transaction)
}

createCustomer(customer) {
const res = {
gateway: 'payment_processor',
foreign_key: 'customer',
foreign_id: 'customer_' + shortid.generate(),
data: customer
}
return Promise.resolve(res)
}

createCustomerSource(source) {
const res = {
gateway: 'payment_processor',
account_foreign_key: 'customer',
account_foreign_id: source.account_foreign_id,
foreign_key: 'customer',
foreign_id: 'source_' + shortid.generate(),
payment_details: source
}
return Promise.resolve(res)
}

findCustomer(customer) {
const res = {
gateway: 'payment_processor',
foreign_key: 'customer',
foreign_id: customer.foreign_id,
data: customer
}
return Promise.resolve(res)
}

findCustomerSource(source) {
const res = {
gateway: 'payment_processor',
account_foreign_key: 'customer',
account_foreign_id: source.account_foreign_id,
foreign_key: 'source',
foreign_id: source.foreign_key,
payment_details: source
}
return Promise.resolve(res)
}

getCustomerSources(customer) {
const res = {
gateway: 'payment_processor',
foreign_key: 'customer',
foreign_id: customer.foreign_id,
data: customer,
sources: [
{
gateway: 'payment_processor',
account_foreign_key: 'customer',
account_foreign_id: customer.foreign_id,
foreign_key: 'source',
foreign_id: 'source_' + shortid.generate(),
payment_details: {}
}
]
}
return Promise.resolve(res)
}

updateCustomer(customer) {
const res = {
gateway: 'payment_processor',
foreign_key: 'customer',
foreign_id: customer.id,
data: customer
}
return Promise.resolve(res)
}

updateCustomerSource(source) {
const res = {
gateway: 'payment_processor',
account_foreign_id: source.account_foreign_id,
account_foreign_key: 'customer',
foreign_key: 'source',
foreign_id: source.foreign_id,
payment_details: source
}
return Promise.resolve(res)
}

removeCustomerSource(source) {
const res = {
gateway: 'payment_processor',
account_foreign_id: source.account_foreign_id,
account_foreign_key: 'customer',
foreign_key: 'source',
foreign_id: source.foreign_id,
payment_details: source
}
return Promise.resolve(res)
}
}
10 changes: 10 additions & 0 deletions lib/defaults/RenderDefault.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Generic } from '../Generic'

export class RenderDefault extends Generic {
render(data) {
return Promise.resolve({document: data})
}
renderSync(data) {
return { document: data }
}
}
14 changes: 13 additions & 1 deletion lib/defaults/ShippingDefault.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
export class ShippingDefault {
import { Generic } from '../Generic'

export class ShippingDefault extends Generic {
validateAddress(data) {
return Promise.resolve(data)
}

getRate(data) {
return Promise.resolve({})
}

getRates(data) {
return Promise.resolve([])
}
}
34 changes: 33 additions & 1 deletion lib/defaults/TaxDefault.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
export class TaxDefault {
import { Generic } from '../Generic'

export class TaxDefault extends Generic {
getRate(data) {
return Promise.resolve({
amount: 1000,
rate: 0.075,
title: 'Sales Tax',
tax_details: {}
})
}

taxForOrder(data) {
return Promise.resolve({
total_taxes: 10,
tax_lines: [
{
name: 'fake sales tax',
price: data.line_items.length * 5
}
],
line_items: data.line_items.map(item => {
return Object.assign({}, item, {
total_taxes: 5,
tax_lines: [
{
name: 'fake sales tax',
price: 5
}
]
})
})
})
}
}
9 changes: 9 additions & 0 deletions lib/defaults/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
export { DataStoreDefault } from './DataStoreDefault'
export { EmailDefault } from './EmailDefault'
export { FulfillmentDefault } from './FulfillmentDefault'
export { GeolocationDefault } from './GeolocationDefault'
export { ImageDefault } from './ImageDefault'
export { PaymentDefault } from './PaymentDefault'
export { RenderDefault } from './RenderDefault'
export { ShippingDefault } from './ShippingDefault'
export { TaxDefault } from './TaxDefault'
8 changes: 4 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@fabrix/spool-generics",
"version": "1.1.1",
"version": "1.1.2",
"description": "Spool - Generic API",
"homepage": "https://fabrix.app",
"author": {
Expand Down Expand Up @@ -40,7 +40,7 @@
"joi": "^13.4.0"
},
"devDependencies": {
"@fabrix/fabrix": "^1.1.3",
"@fabrix/fabrix": "^1.1.4",
"@fabrix/lint": "^1.0.0-alpha.3",
"@fabrix/spool-router": "^1.1.3",
"@types/lodash": "^4.14.109",
Expand All @@ -57,7 +57,7 @@
"typescript": "~2.8.1"
},
"peerDependencies": {
"@fabrix/fabrix": "^1.1.3",
"@fabrix/fabrix": "^1.1.4",
"@fabrix/spool-router": "^1.1.3"
},
"engines": {
Expand Down
Loading

0 comments on commit d09c435

Please sign in to comment.