Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
pb-services
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Jira
Jira
Analytics
Analytics
Repository
Value Stream
External Wiki
External Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Public entries
pb-services
Commits
d523341c
Project 'ds/pb-services' was moved to 'public-entries/pb-services'. Please update any links and bookmarks that may still have the old path.
Commit
d523341c
authored
5 years ago
by
Dmitriy Sintsov
🤗
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs(checker): Add documentation
parent
23a5197f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
262 additions
and
0 deletions
+262
-0
src/services/checker/README.md
src/services/checker/README.md
+262
-0
No files found.
src/services/checker/README.md
0 → 100644
View file @
d523341c
# Service for check availability other services
## Quick Start
```
js
// If you need the single service
export
{
CheckerService
}
from
'
@pb/services
'
const
service
=
new
CheckerService
()
```
or
```
js
// If you need all services
export
{
Services
}
from
'
@pb/services
'
const
services
=
new
Services
(
PromobotAPI
)
services
.
checkerService
```
## API
| method | description |
| ------------------ | ---------------------------------------------------------- |
| on | Allow subscribe to one of known events |
| registerService | Allow register service with name |
| checkServiceByName | Allow check registered service |
| checkService | Allow check any service by instance |
| getAllServices | Returns array with all registered CheckerItem (see below) |
| getServiceByName | Return known CheckerItem (see below) |
## API explanation
### CheckerItem interface
```
js
interface
CheckerItem
{
name
:
string
instance
:
Service
state
:
'
init
'
|
'
pending
'
|
'
resolve
'
isActive
:
boolean
}
```
### `on`
The
`on`
method allow subscribe to one of known events.
| event | description | payload |
| ------ | ------------------------------- | ----------- |
| START | Emit when check started | CheckerItem |
| FINISH | Emit when check finished | CheckerItem |
| ERROR | Emit when an error has occurred | Reason |
Quick access is also available.
```
js
CheckerService
.
START
CheckerService
.
FINISH
CheckerService
.
ERROR
```
Accordingly.
**Syntax**
```
js
on
(
event
,
callback
)
```
**Parameters**
1.
`event`
: (string) - One of known event.
2.
`callback`
- Function, given 1 parameter with instance or error.
**Example**
```
js
const
checker
=
new
CheckerService
()
checker
.
registerService
(
'
test
'
,
{
async
check
()
{
return
Promise
.
resolve
(
true
)
}
})
checker
.
on
(
CheckerService
.
START
,
(
service
)
=>
{
console
.
log
(
service
)
})
checker
.
checkServiceByName
(
'
test
'
)
// {
// name: 'test',
// instance: { serviceInstance },
// state: 'pending',
// isActive: false
// }
```
### `registerService`
The
`registerService`
method allow register service with name as key.
**Syntax**
```
js
registerService
(
name
,
service
)
```
**Parameters**
1.
`name`
: (string) - The service name which he will be registered and you will have access by this name.
2.
`service`
- A service instance
**Example**
```
js
const
checker
=
new
CheckerService
()
const
service
=
{
async
check
()
{
return
Promise
.
resolve
(
true
)
}
}
checker
.
registerService
(
'
test
'
,
service
)
```
### `checkServiceByName`
The
`checkServiceByName`
method allow check registered service by name.
**Syntax**
```
js
checkServiceByName
(
name
)
```
**Parameters**
1.
`name`
: (string) - The service name which you want check.
**Example**
```
js
const
checker
=
new
CheckerService
()
// We believe that you are already was
// register service
// else this will not work ¯\_(ツ)_/¯
checker
.
checkServiceByName
(
'
test
'
)
```
### `checkService`
The
`checkService`
method allow check any service which have the
`check`
function.
**Syntax**
```
js
checkService
(
instance
)
```
**Parameters**
1.
`instance`
: - Any object, which have the
`check`
function.
**Example**
```
js
const
checker
=
new
CheckerService
()
const
service
=
{
async
check
()
{
return
Promise
.
resolve
(
true
)
}
}
checker
.
checkService
(
service
)
.
then
(()
=>
console
.
log
(
'
Service available
'
))
// Service available
```
### `getAllServices`
The
`getAllServices`
method return an array with
`CheckerItem`
.
**Syntax**
```
js
getAllServices
()
```
**Example**
```
js
const
checker
=
new
CheckerService
()
// Register service
const
allServices
=
checker
.
getAllServices
()
```
### `getServiceByName`
The
`getServiceByName`
method return a
`CheckerItem`
by name if exists else
`undefined`
.
**Parameters**
1.
`name`
: (string) - The service name which you want get.
**Syntax**
```
js
getServiceByName
(
name
)
```
**Example**
```
js
const
checker
=
new
CheckerService
()
const
originService
=
{
async
check
()
{
return
Promise
.
resolve
(
true
)
}
}
checker
.
registerService
(
'
test
'
,
originService
)
const
service
=
checker
.
getServiceByName
(
'
test
'
)
(
originService
===
service
.
instance
)
// true
```
## Example usage
Form more usage examples see
`checker.spec.ts`
```
js
const
checker
=
new
CheckerService
()
const
workingService
=
{
async
check
()
{
return
Promise
.
resolve
(
true
)
}
}
const
notWorkingService
=
{
async
check
()
{
return
Promise
.
reject
(
new
Error
(
'
Some reason of error
'
))
}
}
checker
.
registerService
(
'
workingService
'
,
workingService
)
checker
.
registerService
(
'
notWorkingService
'
,
notWorkingService
)
const
allServices
=
checker
.
getAllServices
()
const
resultsOfCheckServices
=
allServices
.
reduce
(
async
(
previousPromise
,
service
)
=>
{
const
acc
=
await
previousPromise
const
isServiceActive
=
await
checker
.
checkService
(
service
.
instance
)
// You can catch error as you need.
// In this example error was ignored and returned false
.
catch
(()
=>
false
)
acc
.
push
(
isServiceActive
)
return
Promise
.
resolve
(
acc
)
},
Promise
.
resolve
([])
)
resultsOfCheckServices
.
then
((
checkResult
)
=>
{
consol
.
log
(
checkResult
)
// [true, false]
})
```
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment