🐬🦄 Webtasks doing automatic things for us via webtask.io
Go to file
Matthias Kretschmann 16aa77df07
syntax fixes
2019-11-11 14:51:00 +01:00
.editorconfig drop da base ☃️ 2018-03-20 18:12:48 +01:00
.eslintrc switch to eslint-config-oceanprotocol 2018-06-27 20:55:02 +02:00
.gitignore prototype CRM endpoint 2018-06-21 17:54:41 +02:00
.prettierrc updates 2019-08-21 11:46:02 +02:00
.travis.yml updates 2019-08-21 11:46:02 +02:00
CONTRIBUTING.md Standardize contrib guidelines across public repos 2018-11-30 17:43:28 +01:00
LICENSE drop da base ☃️ 2018-03-20 18:12:48 +01:00
README.md cleanup, remove unused tasks 2019-08-20 17:00:43 +02:00
package.json syntax fixes 2019-11-11 14:51:00 +01:00
webtask-mailchimp.js updates 2019-08-21 11:46:02 +02:00
webtask-medium.js syntax fixes 2019-11-11 14:51:00 +01:00
webtask-meetup.js updates 2019-08-21 11:46:02 +02:00
webtask-youtube.js updates 2019-08-21 11:46:02 +02:00

README.md

banner

webtasks

🐬 Ocean Protocol's webtasks doing automatic things for us via webtask.io

giphy

Build Status js oceanprotocol Greenkeeper badge


Tasks

Medium

webtask-medium.js: Generic task to fetch and reconstruct items from any medium publication.

Get Latest Posts

Requires the Medium username appended at the end of the url:

http://localhost:8080/:medium_username

# when published on webtask.io
https://TASK_URL/TASK_NAME/:medium_username

Get Followers Count

http://localhost:8080/:medium_username/followers

# when published on webtask.io
https://TASK_URL/TASK_NAME/:medium_username/followers

Response

{
  "followers": 2528
}

Get Categories

Reflecting the navigation categories used in the blog.

http://localhost:8080/:medium_username/categories

# when published on webtask.io
https://TASK_URL/TASK_NAME/:medium_username/categories

Response

[
    {
        "title": "Product",
        "url": "https://blog.oceanprotocol.com/product/home"
    }, {
        "title": "Community",
        "url": "https://blog.oceanprotocol.com/community/home"
    }, {
        "title": "Deep Tech",
        "url": "https://blog.oceanprotocol.com/deep-tech/home"
    }, {
        "title": "People",
        "url": "https://blog.oceanprotocol.com/people/home"
    }, {
        "title": "Token Launch",
        "url": "https://blog.oceanprotocol.com/token/home"
    }, {
        "title": "Use Cases",
        "url": "https://blog.oceanprotocol.com/usecases/home"
    }
]

YouTube

webtask-youtube.js: Generic task to fetch and reconstruct items from any YouTube account. YouTube API key is provided via secret environment variable YOUTUBE_API_KEY setup in web editor of webtask.io.

  • /playlist/:playlistId: returns all videos in the given playlist.
  • /channel/:channelId: returns latest 10 videos in the given channel, sorted by date.

Construct your GET request urls like so:

http://localhost:8080/playlist/:youtube_playlist_id
http://localhost:8080/channel/:youtube_channel_id

# when published on webtask.io
https://TASK_URL/TASK_NAME/playlist/:youtube_playlist_id
https://TASK_URL/TASK_NAME/channel/:youtube_channel_id

Response

For all endpoints, response is reconstructed in the same format:

[{
    "id": "8EMowpNlWPE",
    "title": "Fang Gong, Researcher - Bringing Privacy to Ocean Protocol",
    "description": "At Ocean Protocol, we unlock data for AI and use TCRs to maintain a registry of high-quality data sets through voting. Privacy is essential to protecting the ...",
    "imageUrl": "https://i.ytimg.com/vi/8EMowpNlWPE/mqdefault.jpg",
    "videoUrl": "https://www.youtube.com/watch?v=8EMowpNlWPE"
},
{
    ...
}]

If you want to get the original response returned from YouTube API, append /raw at the end of your request, e.g.:

https://TASK_URL/TASK_NAME/playlist/:youtube_playlist_id/raw

MailChimp

webtask-mailchimp.js: Task to add a new newsletter subscriber.

Construct your POST /newsletter request url like so, e.g. locally:

http://localhost:8080/newsletter/jelly@mcjellyfish.com

# when published on webtask.io
https://TASK_URL/TASK_NAME/newsletter/jelly@mcjellyfish.com

Response

When subscription is successful:

{ "status": "created" }

When subscriber already exists:

{ "status": "exists" }

All errors from MailChimp (when "status" is a number) are simply passed through and follow the MailChimp API error responses, e.g.:

{
  "type": "http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
  "title": "Forgotten Email Not Subscribed",
  "status": 400,
  "detail": "matthias@bigchaindb.com was permanently deleted and cannot be re-imported. The contact must re-subscribe to get back on the list.",
  "instance": "06171156-4bca-4b6c-a84f-aa3690a82798"
}

Meetup

webtask-meetup.js: Task to get information from Meetup.

GET /

http://localhost:8080/meetup

# when published on webtask.io
https://TASK_URL/TASK_NAME/meetup

Response

Field groups holds passed through array of objects with all groups. See https://www.meetup.com/meetup_api/docs/pro/:urlname/groups/

{
    "groups": [{
        ...
    }],
    "members": 40238
}

Development

npm install wt-cli -g
npm start

And go to localhost:8080

Deployment

All tasks are running serverless on webtask.io where you can login with your GitHub account. Then interact with it locally with the wt-cli:

npm install wt-cli -g
wt init YOUR_GITHUB_EMAIL

wt create webtask-medium.js --name medium

# make sure it's there and get url
wt ls

Authors

License

Copyright 2018 Ocean Protocol Foundation Ltd.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.