bigbluebutton-api-ruby 1.8.0 → 1.9.1
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/.github/workflows/publish-gem-on-tag-push.yml +22 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +1 -1
- data/bigbluebutton-api-ruby.gemspec +1 -1
- data/lib/bigbluebutton_api.rb +8 -3
- data/spec/bigbluebutton_api_spec.rb +28 -11
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 895a139be87984c857d275c4d7df9268b06684da8afa4e645cbbdb89d52506f3
|
4
|
+
data.tar.gz: bc4c39bc4f9b9dd2e9985e2f70063df489ef0e43b46a43399550f0aa5a75cecc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30fc3a5fb527ffdfd58c9690075665e8a54b9385a184214b6d50da43ed3b5963b203b147426b02bcbe7644dfca65ca73ad30d831d7c2c8ad766d7aaa930c1fa6
|
7
|
+
data.tar.gz: 940781ee78ee9c962be935eff1c8d66b971c5658467dd92c827291b581a38a17badcfe4381a8e58bd1157176191a54f59d895fe197f1e6ca5399d9635d354067
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Publish gem on tag push
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
tags:
|
5
|
+
- 'v*'
|
6
|
+
- '!v**-mconf*'
|
7
|
+
# Tags that will trigger: v1.9.0; v1.9.0-beta1
|
8
|
+
# Tags excluded (with the '!'): v1.9.0-mconf; v1.9.0-mconf-beta1
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
publish-gem:
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
steps:
|
14
|
+
- name: Checkout
|
15
|
+
uses: actions/checkout@v2
|
16
|
+
- name: Publish
|
17
|
+
uses: dawidd6/action-publish-gem@v1.2.0
|
18
|
+
with:
|
19
|
+
# Optional, will publish to RubyGems if specified
|
20
|
+
api_key: ${{secrets.RUBYGEMS_API_KEY}}
|
21
|
+
# Optional, will publish to GitHub Packages if specified
|
22
|
+
github_token: ${{secrets.GITHUB_TOKEN}}
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [1.9.1] - 2023-03-31
|
4
|
+
* [#60] Prevent problems with double slashes on API calls [thanks to [@farhatahmad](https://github.com/farhatahmad)]
|
5
|
+
|
6
|
+
[#60]: https://github.com/mconf/bigbluebutton-api-ruby/pull/60
|
7
|
+
[1.9.1]: https://github.com/mconf/bigbluebutton-api-ruby/compare/v1.9.0...v1.9.1
|
8
|
+
|
9
|
+
## [1.9.0] - 2022-05-03
|
10
|
+
* [#56] Add support for checksum using SHA256
|
11
|
+
|
12
|
+
[#56]: https://github.com/mconf/bigbluebutton-api-ruby/pull/56
|
13
|
+
[1.9.0]: https://github.com/mconf/bigbluebutton-api-ruby/compare/v1.8.0...v1.9.0
|
14
|
+
|
3
15
|
## [1.8.0] - 2021-12-06
|
4
16
|
* [#43] Add keys to every `BigBlueButtonException`, to better identify them.
|
5
17
|
* [#42] Change `BigBlueButtonException` to inherit from `StandardError` instead of `Exception`.
|
data/Gemfile.lock
CHANGED
@@ -2,7 +2,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "bigbluebutton-api-ruby"
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.9.1"
|
6
6
|
s.licenses = ["MIT"]
|
7
7
|
s.extra_rdoc_files = ["README.md", "LICENSE", "LICENSE_003", "CHANGELOG.md"]
|
8
8
|
s.summary = "BigBlueButton integration for ruby"
|
data/lib/bigbluebutton_api.rb
CHANGED
@@ -2,6 +2,7 @@ require 'net/http'
|
|
2
2
|
require 'cgi'
|
3
3
|
require 'rexml/document'
|
4
4
|
require 'digest/sha1'
|
5
|
+
require 'digest/sha2'
|
5
6
|
require 'rubygems'
|
6
7
|
require 'bigbluebutton_hash_to_xml'
|
7
8
|
require 'bigbluebutton_exception'
|
@@ -68,13 +69,17 @@ module BigBlueButton
|
|
68
69
|
# url:: URL to a BigBlueButton server (e.g. http://demo.bigbluebutton.org/bigbluebutton/api)
|
69
70
|
# secret:: Shared secret for this server
|
70
71
|
# version:: API version e.g. 0.81
|
71
|
-
|
72
|
+
# logger:: Logger object to log actions (so apps can use their own loggers)
|
73
|
+
# sha256:: Flag to use sha256 when hashing url contents for checksum
|
74
|
+
def initialize(url, secret, version=nil, logger=nil, sha256=false)
|
72
75
|
@supported_versions = ['0.8', '0.81', '0.9', '1.0']
|
73
|
-
@url = url
|
76
|
+
@url = url.chomp('/')
|
74
77
|
@secret = secret
|
75
78
|
@timeout = 10 # default timeout for api requests
|
76
79
|
@request_headers = {} # http headers sent in all requests
|
77
80
|
@logger = logger
|
81
|
+
@sha256 = sha256
|
82
|
+
# If logger is not informed, it defaults to STDOUT with INFO level
|
78
83
|
if logger.nil?
|
79
84
|
@logger = Logger.new(STDOUT)
|
80
85
|
@logger.level = Logger::INFO
|
@@ -680,7 +685,7 @@ module BigBlueButton
|
|
680
685
|
# checksum calc
|
681
686
|
checksum_param = params_string + @secret
|
682
687
|
checksum_param = method.to_s + checksum_param
|
683
|
-
checksum = Digest::SHA1.hexdigest(checksum_param)
|
688
|
+
checksum = @sha256 ? Digest::SHA256.hexdigest(checksum_param) : Digest::SHA1.hexdigest(checksum_param)
|
684
689
|
|
685
690
|
if method == :setConfigXML
|
686
691
|
params_string = "checksum=#{checksum}&#{params_string}"
|
@@ -474,17 +474,34 @@ describe BigBlueButton::BigBlueButtonApi do
|
|
474
474
|
end
|
475
475
|
|
476
476
|
context "includes the checksum" do
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
477
|
+
context "when @sha256 is false or nil" do
|
478
|
+
let(:params) { { param1: "value1", param2: "value2" } }
|
479
|
+
let(:checksum) {
|
480
|
+
# the hash can be sorted differently depending on the ruby version
|
481
|
+
if params.map{ |k, v| k }.join =~ /^param1/
|
482
|
+
"67882ae54f49600f56f358c10d24697ef7d8c6b2"
|
483
|
+
else
|
484
|
+
"85a54e28e4ec18bfdcb214a73f74d35b09a84176"
|
485
|
+
end
|
486
|
+
}
|
487
|
+
subject { api.get_url(:join, params)[0] }
|
488
|
+
it('uses SHA1') { subject.should match(/checksum=#{checksum}$/) }
|
489
|
+
end
|
490
|
+
|
491
|
+
context "when @sha256 flag is true" do
|
492
|
+
let(:api) { BigBlueButton::BigBlueButtonApi.new(url, secret, version, logger, true) }
|
493
|
+
let(:params) { { param1: "value1", param2: "value2" } }
|
494
|
+
let(:checksum) {
|
495
|
+
# the hash can be sorted differently depending on the ruby version
|
496
|
+
if params.map{ |k,v| k }.join =~ /^param1/
|
497
|
+
"0e7b1611809fad890a114dddae1a37fecf14c28971afc10ee3eac432da5b8b41"
|
498
|
+
else
|
499
|
+
"21bf2d24c27251c4b2b2f0d5dd4b966a2f16fbfc7882e102b44c6d67f728f0c8"
|
500
|
+
end
|
501
|
+
}
|
502
|
+
subject { api.get_url(:join, params)[0] }
|
503
|
+
it('uses SHA256') { subject.should match(/checksum=#{checksum}$/) }
|
504
|
+
end
|
488
505
|
end
|
489
506
|
end
|
490
507
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bigbluebutton-api-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mconf
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: childprocess
|
@@ -122,6 +122,7 @@ extra_rdoc_files:
|
|
122
122
|
- LICENSE_003
|
123
123
|
- CHANGELOG.md
|
124
124
|
files:
|
125
|
+
- ".github/workflows/publish-gem-on-tag-push.yml"
|
125
126
|
- ".gitignore"
|
126
127
|
- ".rspec"
|
127
128
|
- ".ruby-version"
|
@@ -199,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
200
|
- !ruby/object:Gem::Version
|
200
201
|
version: '0'
|
201
202
|
requirements: []
|
202
|
-
rubygems_version: 3.
|
203
|
+
rubygems_version: 3.3.5
|
203
204
|
signing_key:
|
204
205
|
specification_version: 4
|
205
206
|
summary: BigBlueButton integration for ruby
|