Skip to content

Instantly share code, notes, and snippets.

View Kelin2025's full-sized avatar
๐Ÿ‘‹
Let him cook

Anton Kosykh Kelin2025

๐Ÿ‘‹
Let him cook
View GitHub Profile
@Kelin2025
Kelin2025 / hooks-with-extending.js
Created March 17, 2018 19:08
Apicase hooks + extend
const ApiRoot = ApiRoot.extend({
url: '/api',
hooks: {
/* Inject our token and go to the next step */
before ({ payload, next }) {
const token = localStorage.getItem('token')
next(withToken(token, payload))
}
}
})
@Kelin2025
Kelin2025 / hooks.js
Created March 17, 2018 19:06
Apicase hooks
import { ApiService } from '@apicase/core'
import fetch from '@apicase/adapter-fetch'
import R from 'ramda'
/* I pretend I know Ramda */
const withToken = R.assoc(['headers', 'token'])
const ApiRoot = new ApiService(fetch, { url: '/api' })
.on('error', logError)
@Kelin2025
Kelin2025 / services-extending.js
Created March 17, 2018 19:04
Apicase services extending
import { ApiService } from '@apicase/core'
import fetch from '@apicase/adapter-fetch'
/* Api root with global logger and API base */
const ApiRoot = new ApiService(fetch, { url: '/api' })
.on('error', logError)
/* Inherit options and event listeners from ApiRoot */
const CreatePost = ApiRoot.extend({
url: 'posts',
@Kelin2025
Kelin2025 / services.js
Created March 17, 2018 19:02
Apicase services
import { ApiService } from '@apicase/core'
import fetch from '@apicase/adapter-fetch'
/* Create a service */
const EditPost = new ApiService(fetch, {
url: '/api/posts/:id',
method: 'POST',
headers: { token: localStorage.getItem('token') }
})
@Kelin2025
Kelin2025 / doRequest.js
Created March 17, 2018 18:49
Do requests
doRequest({
url: '/api/posts/:id',
method: 'POST',
params: { id: 1 },
headers: { token: localStorage.getItem('token') },
body: { title: 'Hello, Apicase!' }
})
@Kelin2025
Kelin2025 / async-await.js
Created March 17, 2018 18:44
Apicase async/await
const { success, result } = await doRequest({ url: '/api/posts' })
@Kelin2025
Kelin2025 / events.js
Created March 17, 2018 18:44
Apicase events
doRequest({ url: '/api/posts' })
.on('done', res => console.log('Success'))
.on('fail', res => console.log('Failed but it is OK'))
.on('error', err => console.log('JS Error', err))
.on('cancel', (_) => console.log('Request was cancelled'))
.on('progress', (p) => console.log('XHR progress', p.loaded / p.total))
@Kelin2025
Kelin2025 / request.js
Created March 17, 2018 18:42
Apicase request
doRequest({ url: '/api/posts' })
.on('done', res => console.log(res))
.on('fail', res => console.warn(res))
@Kelin2025
Kelin2025 / init.js
Last active March 17, 2018 18:41
Apicase init
import { apicase } from '@apicase/core'
import fetch from '@apicase/adapter-fetch'
const doRequest = apicase(fetch)
const asyncPipe = (...fns) => arg => {
const res = fns[0](arg)
const slice = fns.slice(1)
const next = slice.length ? asyncPipe(...slice) : identity
const isPromise = typeof res === 'object' && 'then' in res
return isPromise ? res.then(next) : next(res)
}
const add = a => b => a + b