Skip to content

Commit

Permalink
fix:return util configs and change docs
Browse files Browse the repository at this point in the history
Signed-off-by: Hunter Achieng ([email protected])

Signed-off-by: Hunter Achieng <[email protected]>
  • Loading branch information
hunterachieng committed Feb 20, 2024
1 parent bfe8f0f commit 4006fba
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 0 deletions.
2 changes: 2 additions & 0 deletions packages/openmrs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Language Pack for building expressions and operations for working with the
[OpenMRS API](https://wiki.openmrs.org/display/docs/API).

[OpenMRS Rest API](https://rest.openmrs.org/?javascript#openmrs-rest-api)

[OpenMRS Data Model Explorer](http://burkeware.com/openmrs-data-model/openmrs-data-model-1.11.html#)

## Documentation
Expand Down
1 change: 1 addition & 0 deletions packages/openmrs/src/Adaptor.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
import request from 'superagent';
import { Log, handleError, handleResponse } from './Utils';


let agent = null;

/**
Expand Down
87 changes: 87 additions & 0 deletions packages/openmrs/src/Utils.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
import { composeNextState } from '@openfn/language-common';
import {
request as commonRequest,
expandReferences,
logResponse,
makeBasicAuthHeader,
} from '@openfn/language-common/util';

export const Log = {
success: message => console.log(`✓ Success at ${new Date()}:\n∟ ${message}`),
Expand Down Expand Up @@ -42,3 +48,84 @@ const isArray = variable => !!variable && variable.constructor === Array;
export function nestArray(data, key) {
return isArray(data) ? { [key]: data } : data;
}

export function addBasicAuth(configuration = {}, headers) {
const { username, password } = configuration;
if (username && password) {
Object.assign(headers, makeBasicAuthHeader(username, password));
}
}

function encodeFormBody(data) {
const form = new FormData();
for (const [key, value] of Object.entries(data)) {
form.append(key, value);
}
return form;
}

export function request(method, path, params, callback = s => s) {
return state => {
const [resolvedPath, resolvedParams = {}] = expandReferences(
state,
path,
params
);

let { body, headers = {} } = resolvedParams;

if (resolvedParams.json) {
console.warn(
'WARNING: The `json` option has been deprecated. Use `body` instead'
);
body = resolvedParams.json;
}

if (resolvedParams.form) {
body = encodeFormBody(resolvedParams.form);
}

const baseUrl = state.configuration?.baseUrl;

addBasicAuth(state.configuration, headers);

const maxRedirections =
resolvedParams.maxRedirections ??
(resolvedParams.followAllRedirects === false ? 0 : 5);

const tls = resolvedParams.tls ?? resolvedParams.agentOptions;

if (resolvedParams.agentOptions) {
console.warn(
'WARNING: The `agentOptions` option has been deprecated. Use `tls` instead'
);
}

const options = {
...resolvedParams,
headers,
baseUrl,
body,
tls,
maxRedirections,
};

return commonRequest(method, resolvedPath, options)
.then(response => {
logResponse(response);

return {
...composeNextState(state, response.body),
response,
};
})
.then(callback)
.catch(err => {
logResponse(err);

throw err;
});
};
}


0 comments on commit 4006fba

Please sign in to comment.