Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add RESTful web server and webhook parser #96

Merged
merged 8 commits into from
Feb 5, 2017

Conversation

jacobtomlinson
Copy link
Member

@jacobtomlinson jacobtomlinson commented Feb 4, 2017

  • code
    • web server
    • matcher
  • tests
  • documentation

This PR adds a web server to opsdroid. The two main uses of this will be adding a RESTful web server for querying things like stats for monitoring and also a new matcher for webhooks to specific urls.

Web server and RESTful API

There are currently two methods implemented:

  • / returns a welcome message to opsdroid
  • /stats/ returns a dictionary of metrics for opsdroid including messages parsed

There are new optional config items for specifying the server host and port numbers.

web:
  host: "127.0.0.1"  # Only accept local requests, set to "0.0.0.0" to accept all traffic
  port: 8080

webhook parser

A new matcher match_webhook has been added which will cause a skill to be executed when an API endpoint receives a request. The API will return a success message if a skill is triggered but no information on the skill's execution as it happens asynchronously.

Methods will be added dynamically at load time and follow this format:

  • /skill/{skillname}/{webhookname}/

example skill

from opsdroid.matchers import match_webhook

@match_webhook("testhook")
async def testhook(opsdroid, config, message):
    # Call some skill code

example config

skills:
  - name: "testskill"

To trigger this skill make a request to http://localhost:8080/skill/testskill/testhook. The response body will look like:

{
  "timestamp": "2017-02-03T23:49:06.130275",
  "status": 200,
  "result": {
    "called_skill": "testhook"
  }
}

@coveralls
Copy link

Coverage Status

Coverage decreased (-6.5%) to 88.849% when pulling d1b6fbf on jacobtomlinson:aiohttp-server into 27e8cb4 on opsdroid:dev.

@coveralls
Copy link

coveralls commented Feb 4, 2017

Coverage Status

Coverage decreased (-6.5%) to 88.849% when pulling 73a0b39 on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@coveralls
Copy link

Coverage Status

Coverage decreased (-6.5%) to 88.829% when pulling 01e1761 on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

1 similar comment
@coveralls
Copy link

coveralls commented Feb 4, 2017

Coverage Status

Coverage decreased (-6.5%) to 88.829% when pulling 01e1761 on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@coveralls
Copy link

coveralls commented Feb 5, 2017

Coverage Status

Coverage decreased (-2.4%) to 92.973% when pulling 2aca84e on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@coveralls
Copy link

coveralls commented Feb 5, 2017

Coverage Status

Coverage decreased (-2.001%) to 93.333% when pulling f98ec20 on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@coveralls
Copy link

Coverage Status

Coverage decreased (-0.4%) to 94.955% when pulling 891548c on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

1 similar comment
@coveralls
Copy link

coveralls commented Feb 5, 2017

Coverage Status

Coverage decreased (-0.4%) to 94.955% when pulling 891548c on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@coveralls
Copy link

coveralls commented Feb 5, 2017

Coverage Status

Coverage increased (+0.3%) to 95.676% when pulling 68813bf on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

1 similar comment
@coveralls
Copy link

Coverage Status

Coverage increased (+0.3%) to 95.676% when pulling 68813bf on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@coveralls
Copy link

coveralls commented Feb 5, 2017

Coverage Status

Coverage increased (+0.3%) to 95.676% when pulling 51a27ec on jacobtomlinson:aiohttp-server into 7d7a980 on opsdroid:dev.

@jacobtomlinson jacobtomlinson merged commit 5300bc3 into opsdroid:dev Feb 5, 2017
@jacobtomlinson jacobtomlinson deleted the aiohttp-server branch February 5, 2017 12:35
This was referenced Feb 5, 2017
@jacobtomlinson jacobtomlinson mentioned this pull request Feb 16, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants