Skip to content

Commit

Permalink
Merge pull request #21 from datopian/method-to-put-dataset
Browse files Browse the repository at this point in the history
#11  - Feature: create() and push() dataset
  • Loading branch information
rufuspollock committed Sep 15, 2020
2 parents 5ce75cc + 96e2b71 commit dea9055
Show file tree
Hide file tree
Showing 10 changed files with 225 additions and 260 deletions.
4 changes: 3 additions & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"trailingComma": "es5",
"tabWidth": 2,
"semi": false,
"singleQuote": true
"singleQuote": true,
"printWidth": 79
}
39 changes: 34 additions & 5 deletions lib/index.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
const mapper = require('frictionless-ckan-mapper-js')
const frictionlessCkanMapper = require('frictionless-ckan-mapper-js')
const axios = require('axios')

const CkanAuthApi = require('./util/ckan-auth-api')
const CkanUploadAPI = require('./util/ckan-upload-api')
const ActionApi = require('./util/action-api')
const Open = require('./file')

const { camelToSnakeCase } = require('./util/general')

/**
* @class Client.
* @param {string} apiKey
* @param {number} organizationId
* @param {string} organizationId
* @param {string} datasetId
* @param {string} api
*/
Expand Down Expand Up @@ -70,8 +71,36 @@ class Client {
return response.data
}

put(actionType, data) {
return ActionApi.action(this.api, this.apiKey, actionType, data)
/**
* @async
* @param {(string|Object)} datasetNameOrMetadata
* @return {Promise<Object>} The frictionless dataset
*/
async create(datasetNameOrMetadata) {
const datasetMetadata =
typeof datasetNameOrMetadata === 'string'
? { name: datasetNameOrMetadata }
: datasetNameOrMetadata

const ckanMetadata = frictionlessCkanMapper.packageFrictionlessToCkan(
datasetMetadata
)

const response = await this.action('package_create', ckanMetadata)
return frictionlessCkanMapper.packageCkanToFrictionless(response.result)
}

/**
* @async
* @param {Object} datasetMetadata
* @return {Promise<Object>} The frictionless dataset
*/
async push(datasetMetadata) {
const ckanMetadata = frictionlessCkanMapper.packageFrictionlessToCkan(
datasetMetadata
)
const response = await this.action('package_update', ckanMetadata)
return frictionlessCkanMapper.packageCkanToFrictionless(response.result)
}

/**
Expand All @@ -90,7 +119,7 @@ class Client {
true
)

return mapper.packageCkanToFrictionless(response.result)
return frictionlessCkanMapper.packageCkanToFrictionless(response.result)
}

/**
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"test": "test"
},
"scripts": {
"test": "ava test/upload.test.js --verbose",
"test": "ava test/*.test.js --verbose",
"test:watch": "ava test/*.test.js --verbose --watch",
"build": "webpack",
"build:watch": "webpack --watch"
Expand Down
2 changes: 1 addition & 1 deletion test/get.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ test('get package', async (t) => {
)
const packageResponseConvertedToFrictionless = JSON.parse(
await fs.readFileSync(
__dirname + '/mocks/getPackageFrictionlessResponse.json'
__dirname + '/mocks/frictionless-dataset-converted-from-ckan.json'
)
)
// Testing dataname/id
Expand Down
234 changes: 0 additions & 234 deletions test/metadata.test.js

This file was deleted.

0 comments on commit dea9055

Please sign in to comment.