daisho
Version:
Modular dashboard framework
185 lines (154 loc) • 3.81 kB
text/coffeescript
import isFunction from 'es-is/function'
sp = (u) ->
(x) ->
if isFunction u
url = u x
else
url = u
if @storeId?
"/store/#{@storeId}" + url
else
url
byId = (name) ->
switch name
when 'coupon'
sp (x) -> "/coupon/#{x.code ? x}"
# when 'collection'
# sp (x) -> "/collection/#{x.slug ? x}"
when 'product'
sp (x) -> "/product/#{x.id ? x.slug ? x}"
# when 'variant'
# sp (x) -> "/variant/#{x.id ? x.sku ? x}"
when 'user'
sp (x) -> "/user/#{x.id ? x.email ? x}"
# when 'site'
# (x) -> "/site/#{x.id ? x.name ? x}"
else
(x) -> "/#{name}/#{x.id ? x}"
statusOk = (res) -> res.status is 200
statusCreated = (res) -> res.status is 201
statusNoContent = (res) -> res.status is 204
# Complete RESTful API available with secret key, so all methods are
# exposed in server environment.
createBlueprint = (name) ->
endpoint = "/#{name}"
url = byId name
list:
url: endpoint
method: 'GET'
get:
url: url
method: 'GET'
expects: statusOk
create:
url: endpoint
method: 'POST'
expects: statusCreated
update:
url: url
method: 'PATCH'
expects: statusOk
delete:
url: url
method: 'DELETE'
expects: statusNoContent
blueprints =
oauth:
auth:
# expects: statusOk
method: 'POST'
url: '/auth'
account:
organization:
method: 'GET'
url: '/_/account/organizations'
dashv2:
login:
method: 'POST'
url: '/dashv2/login'
counter:
search:
method: 'POST'
url: '/counter'
library:
daisho:
method: 'GET'
url: '/library/daisho'
models = [
'order'
'note'
'product'
'subscriber'
'user'
'wallet'
'tokentransaction'
]
for model in models
do (model) ->
blueprints[model] = createBlueprint model
blueprints.note.search =
method: 'POST'
url: '/search/note'
blueprints.user.orders =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/orders"
expects: statusOk
blueprints.user.transactions =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/transactions"
expects: statusOk
blueprints.user.tokentransactions =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/tokentransactions"
expects: statusOk
blueprints.user.referrals =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/referrals"
expects: statusOk
blueprints.user.referrers =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/referrers"
expects: statusOk
blueprints.user.resetPassword =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/password/reset"
expects: statusOk
blueprints.user.wallet =
method: 'GET'
url: (x) -> "/user/#{x.id ? x}/wallet"
expects: statusOk
blueprints.transaction =
create:
url: '/transaction'
method: 'POST'
expects: statusCreated
blueprints.library.daisho =
url: '/library/daisho'
method: 'POST'
expects: statusOk
blueprints.order.sendOrderConfirmation =
method: 'GET'
url: (x) -> "/order/#{x.id ? x}/sendorderconfirmation"
expects: statusNoContent
blueprints.order.sendRefundConfirmation =
method: 'GET'
url: (x) -> "/order/#{x.id ? x}/sendrefundconfirmation"
expects: statusNoContent
blueprints.order.sendFulfillmentConfirmation =
method: 'GET'
url: (x) -> "/order/#{x.id ? x}/sendfulfillmentconfirmation"
expects: statusNoContent
blueprints.order.payments =
method: 'GET'
url: (x) -> "/order/#{x.id ? x}/payments"
expects: statusOk
blueprints.organization =
get:
url: (x) -> "/c/organization/#{x.id ? x}"
method: 'GET'
expects: statusOk
update:
url: (x) -> "/c/organization/#{x.id ? x}"
method: 'PATCH'
expects: statusOk
export default blueprints