whereby-ruby 0.1.4 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -4
- data/lib/whereby.rb +18 -1
- data/lib/whereby/api.rb +25 -25
- data/lib/whereby/configuration.rb +1 -1
- data/lib/whereby/element.rb +1 -1
- data/lib/whereby/version.rb +1 -1
- data/whereby-ruby.gemspec +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45795394cb6d7781f4a95b4dbfe1743936aa9a481ce705c087c655e1a1414d44
|
4
|
+
data.tar.gz: b398759018a9d83579e3cfd0c2d870e323bb5f202fc5d2ec8aa2f2de04025c14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2474e5b8ad6db3fd56aa3d3168f847ef2c11c6172bc29b7d2b073a4277283b0ea23b610e68f2f641a339e4b509b8742674cbcc259f15ba06e7119fbfcd6e5ee
|
7
|
+
data.tar.gz: 1e7624bb7ccc39f692ba712b7ae7f3a523d9e253c19715fdd39d0b94e178567629cdad96760ea7269ce3191eed1a5bec95afd5b375f4c317265df2cfcef1bfb0
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Whereby Ruby HTTP API Wrapper
|
2
2
|
|
3
|
-
|
3
|
+
This gem is a very simple [Whereby](https://whereby.com) HTTP API wrapper written for Ruby/Rails projects, to easly create video meetings and conferences.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -20,16 +20,18 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
If using Rails put the following into
|
23
|
+
If using Rails put the following into an initializer. If you use plain Ruby, run this code before trying to use the API.
|
24
24
|
|
25
25
|
```ruby
|
26
26
|
require 'whereby'
|
27
27
|
Whereby.configure do |config|
|
28
|
-
config.api_key =
|
28
|
+
config.api_key = "Your api key!"
|
29
29
|
end
|
30
30
|
```
|
31
|
+
By default, this gem try to read the `WHEREBY_API_KEY` environment variable and use that as api key. The above statement is therefore equivalent to setting this environment variable.
|
31
32
|
|
32
|
-
|
33
|
+
|
34
|
+
### Instantiate an API object
|
33
35
|
|
34
36
|
```ruby
|
35
37
|
api = Whereby::Api.new
|
@@ -42,6 +44,12 @@ api.meeting(id) # GET /v1/meetings/:id
|
|
42
44
|
api.create_meeting(options) # POST /v1/meetings
|
43
45
|
api.delete_meeting(id) # DELETE /v1/meetings/:id
|
44
46
|
```
|
47
|
+
Read more about the different endpoints and options at https://whereby.dev/http-api/
|
48
|
+
|
49
|
+
### Example creating a meeting
|
50
|
+
```ruby
|
51
|
+
api.create_meeting(room_name_prefix: '/example', room_mode: "normal", start_date: "2020-08-01T00:00:00Z", end_date: "2020-08-01T15:00:00Z", fields: ["hostRoomUrl"])
|
52
|
+
```
|
45
53
|
|
46
54
|
## Contributing
|
47
55
|
|
data/lib/whereby.rb
CHANGED
@@ -6,7 +6,7 @@ require 'whereby/api'
|
|
6
6
|
|
7
7
|
module Whereby
|
8
8
|
class << self
|
9
|
-
|
9
|
+
attr_writer :configuration
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.api_key
|
@@ -20,6 +20,23 @@ module Whereby
|
|
20
20
|
def self.configure
|
21
21
|
yield(configuration)
|
22
22
|
end
|
23
|
+
end
|
23
24
|
|
25
|
+
class String
|
26
|
+
def whereby_underscore
|
27
|
+
gsub(/::/, '/')
|
28
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
|
29
|
+
.gsub(/([a-z\d])([A-Z])/,'\1_\2')
|
30
|
+
.tr('-', '_')
|
31
|
+
.downcase
|
32
|
+
end
|
33
|
+
|
34
|
+
def whereby_camelize
|
35
|
+
split('_').collect(&:capitalize).join
|
36
|
+
end
|
24
37
|
|
38
|
+
def whereby_lower_camelize
|
39
|
+
res = whereby_camelize
|
40
|
+
res[0].downcase + res[1..-1]
|
41
|
+
end
|
25
42
|
end
|
data/lib/whereby/api.rb
CHANGED
@@ -1,60 +1,60 @@
|
|
1
1
|
require 'httparty'
|
2
|
+
require 'json'
|
3
|
+
|
2
4
|
module Whereby
|
3
5
|
class WherebyError < StandardError; end
|
4
6
|
|
5
7
|
class Api
|
6
|
-
API_VERSION = 'v1'
|
7
|
-
BASE_URL = "https://api.whereby.dev/#{API_VERSION}"
|
8
|
+
API_VERSION = 'v1'.freeze
|
9
|
+
BASE_URL = "https://api.whereby.dev/#{API_VERSION}".freeze
|
8
10
|
|
9
11
|
# GET /v1/meetings/:id
|
10
12
|
def meeting(id)
|
11
|
-
Meeting.new(whereby_request(:get, "meetings/#{id
|
13
|
+
Meeting.new(whereby_request(:get, "meetings/#{id}"))
|
12
14
|
end
|
13
15
|
|
14
16
|
# POST /v1/meetings/
|
15
|
-
def create_meeting(options
|
16
|
-
Meeting.new(whereby_request(:post,
|
17
|
+
def create_meeting(**options)
|
18
|
+
Meeting.new(whereby_request(:post, 'meetings', options))
|
17
19
|
end
|
18
20
|
|
19
21
|
# DELETE /v1/meetings/:id
|
20
22
|
def delete_meeting(id)
|
21
|
-
whereby_request(:delete, "meetings/#{id
|
23
|
+
whereby_request(:delete, "meetings/#{id}")
|
22
24
|
end
|
23
25
|
|
24
26
|
private
|
25
|
-
def whereby_request(method, url, options={})
|
26
|
-
url = "#{BASE_URL}/#{url}"
|
27
|
-
|
28
|
-
# Convert hash keys into camel case
|
29
|
-
options = Hash[options.map { |k,v| [k.to_s.camelize, v]}]
|
30
27
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# TODO: Create case/when for special cases for options
|
35
|
-
|
36
|
-
result = HTTParty.send(method, url, http_attrs)
|
28
|
+
def whereby_request(method, url, options = {})
|
29
|
+
url = "#{BASE_URL}/#{url}"
|
30
|
+
result = HTTParty.send(method, url, { headers: headers, body: body(options) })
|
37
31
|
|
38
32
|
if [200, 201].include? result.code
|
39
|
-
JSON.parse(result.body)
|
33
|
+
JSON.parse(result.body)
|
40
34
|
elsif result.code == 204
|
41
|
-
true
|
35
|
+
true
|
42
36
|
else
|
43
37
|
raise WherebyError.new error(result.code)
|
44
38
|
end
|
45
39
|
end
|
46
40
|
|
47
|
-
def
|
48
|
-
|
49
|
-
return "The requested resource doesn't exist" if code == 404
|
50
|
-
"Major fuck-up."
|
41
|
+
def body(options)
|
42
|
+
Hash[options.map { |k, v| [k.to_s.whereby_lower_camelize, v] }].to_json
|
51
43
|
end
|
52
44
|
|
53
45
|
def headers
|
54
46
|
{
|
55
|
-
|
56
|
-
|
47
|
+
'Content-type' => 'application/json',
|
48
|
+
'Authorization' => "Bearer #{Whereby.api_key}"
|
57
49
|
}
|
58
50
|
end
|
51
|
+
|
52
|
+
def error(code)
|
53
|
+
return 'Access token is missing or invalid' if code == 401
|
54
|
+
return 'The requested resource does not exist' if code == 404
|
55
|
+
|
56
|
+
"The API resulted in an unknown status code: #{code}"
|
57
|
+
end
|
58
|
+
|
59
59
|
end
|
60
60
|
end
|
data/lib/whereby/element.rb
CHANGED
@@ -2,7 +2,7 @@ module Whereby
|
|
2
2
|
class Element
|
3
3
|
def initialize(attrs = {})
|
4
4
|
# Only set attributes if the method exists
|
5
|
-
attrs.each{ |k,v| send("#{k.
|
5
|
+
attrs.each{ |k,v| send("#{k.whereby_underscore}=", v) if respond_to?(k.whereby_underscore.to_s) }
|
6
6
|
end
|
7
7
|
|
8
8
|
def to_h
|
data/lib/whereby/version.rb
CHANGED
data/whereby-ruby.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["tech@poption.com"]
|
11
11
|
|
12
12
|
spec.summary = "A Ruby Whereby Wrapper"
|
13
|
-
spec.description = "Easily use Whereby's HTTP API
|
13
|
+
spec.description = "Easily use Whereby's HTTP API to create video rooms and conferences"
|
14
14
|
spec.homepage = "https://github.com/poption/whereby-ruby"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whereby-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Kittilsen Henriksen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.18'
|
27
|
-
description: Easily use Whereby's HTTP API
|
27
|
+
description: Easily use Whereby's HTTP API to create video rooms and conferences
|
28
28
|
email:
|
29
29
|
- tech@poption.com
|
30
30
|
executables: []
|
@@ -54,7 +54,7 @@ metadata:
|
|
54
54
|
homepage_uri: https://github.com/poption/whereby-ruby
|
55
55
|
source_code_uri: https://github.com/poption/whereby-ruby
|
56
56
|
changelog_uri: https://github.com/poption/whereby-ruby
|
57
|
-
post_install_message:
|
57
|
+
post_install_message:
|
58
58
|
rdoc_options: []
|
59
59
|
require_paths:
|
60
60
|
- lib
|
@@ -69,8 +69,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
requirements: []
|
72
|
-
rubygems_version: 3.0.
|
73
|
-
signing_key:
|
72
|
+
rubygems_version: 3.0.8
|
73
|
+
signing_key:
|
74
74
|
specification_version: 4
|
75
75
|
summary: A Ruby Whereby Wrapper
|
76
76
|
test_files: []
|