hipchat_elixir
HipChat client library for Elixir.
Policy
- Using Erlang’s built-in
httpc
as HTTP client, for easier dependency management. - No state. Access tokens and other credentials should be retrieved/stored by caller applications.
- Relying on HipChat cloud for parameter validations.
- Covering APIs used in server side only.
Generating codes from Swagger (OpenAPI) specifications in ymtszw/hipchat_swagger.
- Read more in here.
Basic Usage
- Add
:hipchat_elixir
as a dependency. Create client struct (
Hipchat.ApiClient.new/3
).- Pass
access_token
if the targeted API requires authentication. - See here for details.
- Pass
- Pass the resultant client and other parameters to the targeted API function.
Hipchat.ApiClient.new("access_token")
|> Hipchat.V2.Rooms.send_room_notification("room_id", %{message: "Hello HipChat!"})
# {:ok, %Hipchat.Httpc.Response{body: "", headers: ..., status: 204}}
About Content-Type
Request bodies are sent as content-type: application/json
or
content-type: x-www-form-urlencoded
depending on :serializer
config value.
- See
config/config.exs
for example. Some HipChat APIs (implicitly) require
content-type: application/json
, so introducing JSON serializer is almost mandatory.- Currently only supports
Poison
.
- Currently only supports
Status
Basic chat related APIs (CRUD operation of rooms/users, sending messages/notifications, etc) are covered.
Many add-on (extension) related APIs are not covered. Since HipChat itself is sunsetting and moving toward Stride, I may not revisit to perfect these. If interested, contributions are welcomed.
Only supports HipChat cloud (not HipChat server).
License
MIT