The Open Source kanban (built with Meteor). Keep variable/table/field names camelCase. For translations, only add Pull Request changes to wekan/i18n/en.i18n.json , other translations are done at https://transifex.com/wekan/wekan only.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
wekan/packages/wekan-cfs-http-publish
Lauri Ojansivu c2da477735 Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
..
packages Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
.editorconfig Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
.gitignore Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
.jshintrc Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
.travis.yml Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
LICENSE.md Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
README.md Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
api.md Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
http.publish.client.api.js Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
http.publish.server.api.js Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
http.publish.tests.client.js Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
http.publish.tests.server.js Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
internal.api.md Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago
package.js Fixed Non-ASCII attachment filename will crash when downloading. 4 years ago

README.md

wekan-cfs-http-publish Build Status

This package add the ability to add HTTP server publish to your project. It's a server-side package only.

DEPRECATING: Use https://atmospherejs.com/simple/rest instead

Usage

HTTP.publish creates a http crud restpoint for a collection - only one cursor is allowed pr. publish

Security

CRUD+L - Create Read Update Delete + List are common rest point operations.

All CUD methods are the exact same as the ddp methods handlers - This means that Meteor.allow and Meteor.deny are setting the access rules for both ddp and http collection methods.

All R+L methods are limited to the publish function.

Fully mounted

If handed a collection and a publish function the HTTP.publish will mount on follow urls and methods:

  • GET - /api/list - all published data
  • POST - /api/list - insert a document into collection
  • GET - /api/list/:id - find one published document
  • PUT - /api/list/:id - update a document
  • DELETE - /api/list/:id - remove a document
  myCollection = new Meteor.Collection('list');

  // Add access points for `GET`, `POST`, `PUT`, `DELETE`
  HTTP.publish({collection: myCollection}, function(data) {
    // this.userId, this.query, this.params
    return myCollection.find({});
  });

Publish view only

If handed a mount name and a publish function the HTTP.publish will mount:

  • GET - /mylist - all published data
  myCollection = new Meteor.Collection('list');

  // Add access points for `GET`
  HTTP.publish({name: 'mylist'}, function(data) {
    // this.userId, this.query, this.params
    return myCollection.find({});
  });

Create Update Delete only

If handed a collection only the HTTP.publish will mount:

  • POST - /api/list - insert a document into collection
  • PUT - /api/list/:id - update a document
  • DELETE - /api/list/:id - remove a document
  myCollection = new Meteor.Collection('list');

  // Add access points for `POST`, `PUT`, `DELETE`
  HTTP.publish({collection: myCollection});

Publish scope

The publish scope contains different kinds of inputs. We can also get user details if logged in.

  • this.userId The user whos id and token was used to run this method, if set/found
  • this.query - query params ?token=1 -> { token: 1 }
  • this.params - Set params /foo/:name/test/:id -> { name: '', id: '' }

Passing data via header

From the client:

  HTTP.get('/api/list', {
    data: { foo: 'bar' }
  }, function(err, result) {
    console.log('Content in parsed json: ');
    console.log(result.data);
  });

HTTP Server method:

  HTTP.publish({collection: myCollection}, function(data) {
    // data === { foo: 'bar' }
  });

Authentication

For details on authentication of http calls please read the Authentication part in HTTP.methods package

The publish will have the this.userId set if an authenticated user is making the request.

Format handlers

The query parametre format is used to set different output formats. The buildin format is json (EJSON since we are on Meteor)

Example: (json is buildin)

  // Format the output into json
  HTTP.publishFormats({
    'json': function(result) {
      // Set the method scope content type to json
      this.setContentType('application/json');
      // Return EJSON string
      return EJSON.stringify(result);
    }
  });

GET url: /api/list?format=json

    HTTP.get('/api/list', {
      params: {
        format: 'json'
      }
    }, function(err, result) {
      console.log('Back from update');
      if (err) {
        console.log('Got error');
      }
      console.log('Got json back: ' + result.content);
    });

Unpublish

For api integrity theres added an HTTP.unpublish method that takes a collection or name of mount point to remove.

API Documentation

Here