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 / 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 / async-await.js
Created March 17, 2018 18:44
Apicase async/await
const { success, result } = await doRequest({ url: '/api/posts' })
@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 / 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 / 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 / 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 / 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 / meta.js
Created March 17, 2018 19:09
Apicase meta
const ApiRoot = ApiRoot.extend({
url: '/api',
hooks: {
/* Inject our token and go to the next step */
before ({ payload, meta, next }) {
if (!meta.requiresAuth) return next(payload)
const token = localStorage.getItem('token')
next(withToken(token, payload))
}
}
@Kelin2025
Kelin2025 / refresh-token.js
Created March 17, 2018 19:14
Apicase and refresh token
/* API base */
const ApiRoot = new ApiService(fetch, {
url: '/api'
})
/* Auth service */
const AuthService = ApiRoot.extend({
url: 'auth',
method: 'POST'
}).on('done', res => localStorage.setItem('token', res.body.token))
@Kelin2025
Kelin2025 / refresh-token-once.js
Last active March 17, 2018 19:15
Refresh token once
/* API base */
const ApiRoot = new ApiService(fetch, {
url: '/api'
})
/* Auth service */
const AuthService = ApiRoot.extend({
url: 'auth',
method: 'POST'
}).on('done', res => localStorage.setItem('token', res.body.token))