Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wjsc/api-resource-migrator
Easy API resource migration library
https://github.com/wjsc/api-resource-migrator
api clone copy environment library migration npm objects resources rest
Last synced: about 2 months ago
JSON representation
Easy API resource migration library
- Host: GitHub
- URL: https://github.com/wjsc/api-resource-migrator
- Owner: wjsc
- License: mit
- Created: 2018-09-20T23:36:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-10-28T16:38:01.000Z (about 6 years ago)
- Last Synced: 2024-10-13T16:10:22.224Z (3 months ago)
- Topics: api, clone, copy, environment, library, migration, npm, objects, resources, rest
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/api-resource-migrator
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![Current Version](https://img.shields.io/npm/v/api-resource-migrator.svg)
![NPM Minified size](https://img.shields.io/bundlephobia/min/api-resource-migrator.svg)
![Github Code Size](https://img.shields.io/github/languages/code-size/wjsc/api-resource-migrator.svg)
![Downloads/Year](https://img.shields.io/npm/dy/api-resource-migrator.svg)
![Issues](https://img.shields.io/github/issues/wjsc/api-resource-migrator.svg)
![License](https://img.shields.io/github/license/wjsc/api-resource-migrator.svg)
![Contributors](https://img.shields.io/github/contributors/wjsc/api-resource-migrator.svg)[![NPM](https://nodei.co/npm/api-resource-migrator.png)](https://nodei.co/npm/api-resource-migrator)
# api-resource-migrator
Easy API resource migration library## Simple configuration
### Migrate objects from one API to another.```
// Require and create migrator
const migrator = require('api-resource-migrator')();// Create migrations objects
const migration = {
source: {
url: "http://origin.com/resource/",
headers: {
"content-type": "application/json"
}
},
target: {
url: "http://target.com/resource/",
headers: {
"content-type": "application/json"
}
},
ids: [
"Resource-1",
"Resource-2",
"Resource-3",
"Resource-4"
]
}// Add all your migration objects to the queue
migrator.add(migration);// Run all migrations!
migrator.run();
```## Advanced configuration
### Limit parallelism level
```
// This will copy 5 resources in parallel
migrator.run(5);
```### Set custom HTTP Headers
```
const migration = {
source: {
url: "http://origin.com/resource/",
headers: {
"content-type": "application/json",
"accept-version":"3.0.0",
"X-My-Header": "This is a custom header field"
}
},
target: {
url: "http://target.com/resource/",
headers: {
"content-type": "application/json",
"authorization":"my-secret-token",
"User-Agent": "MyUseragent/1.0"
}
},
ids: [
"Resource-1",
"Resource-2",
"Resource-3",
"Resource-4"
]
}```
All request will be made with: https://www.npmjs.com/package/fetch
### Set Resource ID Range
```
const migration = {
source: {
url: "http://origin.com/resource/",
headers: {
"content-type": "application/json"
}
},
target: {
url: "http://target.com/resource/",
headers: {
"content-type": "application/json"
}
},
ids: {
prefix: "some-resource-prefix-",
from: 1,
to: 200
}
}// This will copy:
// some-resource-prefix-1
// some-resource-prefix-2
// ...
// some-resource-prefix-200```
### Wait for all migrations to finish
```
const runAll = async () => {
await migrator.run();
}
runAll();
```### Transform objects before migration
```
// Create a custom intermediate function
const transform = resource => {
delete resource.someKey;
resource.date = new Date().toDateString();
return resource;
}// Append function to migration object
const migration = {
source: {
process: transform,
url: "http://origin.com/resource/",
headers: {
"content-type": "application/json"
}
},
target: {
url: "http://target.com/resource/",
headers: {
"content-type": "application/json"
}
},
ids: [
"Resource-1",
"Resource-2",
"Resource-3",
"Resource-4"
]
}```