Skip to content
This repository has been archived by the owner on Oct 24, 2022. It is now read-only.

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
taylordowns2000 committed Mar 23, 2017
1 parent 5b12996 commit e783153
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 203 deletions.
6 changes: 3 additions & 3 deletions package.json
@@ -1,7 +1,7 @@
{
"name": "language-http",
"version": "0.4.0",
"description": "An HTTP Language Pack for OpenFn",
"name": "language-googlesheets",
"version": "0.1.0",
"description": "A Google Sheets Language Pack for OpenFn",
"main": "lib/index.js",
"scripts": {
"build": "make",
Expand Down
140 changes: 4 additions & 136 deletions src/Adaptor.js
@@ -1,5 +1,4 @@
import { execute as commonExecute, expandReferences } from 'language-common';
import { getThenPost, clientPost } from './Client';
import request from 'request';
import { resolve as resolveUrl } from 'url';

Expand Down Expand Up @@ -30,147 +29,16 @@ export function execute(...operations) {
}

/**
* Make a GET request and POST it somewhere else
* Write a new row to a google sheets table
* @example
* execute(
* fetch(params)
* insertRow(table, params)
* )(state)
* @constructor
* @param {object} params - data to make the fetch
* @param {string} table - the table identifier
* @param {object} params - data to write to the row
* @returns {Operation}
*/
export function fetch(params) {

return state => {

const { getEndpoint, query, postUrl } = expandReferences(params)(state);

const { username, password, baseUrl, authType } = state.configuration;

var sendImmediately = authType == 'digest' ? false : true;

const url = resolveUrl(baseUrl + '/', getEndpoint)

console.log("Fetching data from URL: " + url);
console.log("Applying query: " + JSON.stringify(query))

return getThenPost({ username, password, query, url, sendImmediately, postUrl })
.then((response) => {
console.log("Success:", response);
let result = (typeof response === 'object') ? response : JSON.parse(response);
return { ...state, references: [ result, ...state.references ] }
}).then((data) => {
const nextState = { ...state, response: { body: data } };
if (callback) return callback(nextState);
return nextState;
})

}
}

/**
* Make a GET request and POST the response somewhere else without failing.
*/
export function fetchWithErrors(params) {

return state => {

const { getEndpoint, query, externalId, postUrl } = expandReferences(params)(state);

const { username, password, baseUrl, authType } = state.configuration;

var sendImmediately = authType == 'digest' ? false : true;

const url = resolveUrl(baseUrl + '/', getEndpoint)

console.log("Performing an error-less GET on URL: " + url);
console.log("Applying query: " + JSON.stringify(query))

function assembleError({ response, error }) {
if (response && ([200,201,202].indexOf(response.statusCode) > -1)) return false;
if (error) return error;
return new Error(`Server responded with ${response.statusCode}`)
}

return new Promise((resolve, reject) => {

request({
url: url, //URL to hit
qs: query, //Query string data
method: 'GET', //Specify the method
auth: {
'user': username,
'pass': password,
'sendImmediately': sendImmediately
}
}, function(error, response, body){
var taggedResponse = {
response: response,
externalId: externalId
}
console.log(taggedResponse)
request.post ({
url: postUrl,
json: taggedResponse
}, function(error, response, postResponseBody){
error = assembleError({error, response})
if (error) {
console.error("POST failed.")
reject(error);
} else {
console.log("POST succeeded.");
resolve(body);
}
})
});

}).then((data) => {
const nextState = { ...state, response: { body: data } };
return nextState;
})
}
}

/**
* Make a POST request
* @example
* execute(
* post(params)
* )(state)
* @constructor
* @param {object} params - data to make the POST
* @returns {Operation}
*/
export function post(url, {body, callback, headers}) {

return state => {

return new Promise((resolve, reject) => {
request.post ({
url: url,
json: body,
headers
}, function(error, response, body){
if(error) {
reject(error);
} else {
console.log("POST succeeded.");
resolve(body);
}
})
}).then((data) => {
const nextState = { ...state, response: { body: data } };
if (callback) return callback(nextState);
return nextState;
})

}
}

/*
* Make a POST request using existing data from another POST
*/

export function postData(params) {

return state => {
Expand Down
64 changes: 0 additions & 64 deletions src/Client.js

This file was deleted.

0 comments on commit e783153

Please sign in to comment.