demio-ruby 0.1.0 → 0.2.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 +5 -5
- data/.github/workflows/ruby.yml +24 -0
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +50 -50
- data/README.md +5 -3
- data/bin/console +1 -0
- data/demio-ruby.gemspec +7 -7
- data/lib/demio/client.rb +32 -19
- data/lib/demio/event.rb +5 -3
- data/lib/demio/event_date.rb +5 -5
- data/lib/demio/events.rb +5 -3
- data/lib/demio/participants.rb +17 -0
- data/lib/demio/register.rb +1 -0
- data/lib/demio/version.rb +3 -1
- metadata +20 -18
- data/.travis.yml +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 794b5a958104aec0cdc5fabb7d9fa802eef1e0d3c76e609a6f788216d6dac50e
|
4
|
+
data.tar.gz: 76a4eb0d171dc6339d42f292707cdc638a7de99e2c502403dbcce54403f47920
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f169723c782d57faf8bbf011677e2c29faffd8628c7dfcacf46026af3ad2803d399ba6affdfcec52954106b6c221d21122be7540f3b7cfa61b03bcf1f6cce7b
|
7
|
+
data.tar.gz: 24f712997e3d648248cb25770e1fa6ce0fe1589b7125b19243aec5929558aacfa9a342d56708fd3d81db28d9f81f5ee66a1c4dbad5d788399a09e988953b9816
|
@@ -0,0 +1,24 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on: [push]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby-version: ['2.5', '2.6', '2.7']
|
11
|
+
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- name: Set up Ruby
|
15
|
+
uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
|
16
|
+
with:
|
17
|
+
ruby-version: ${{ matrix.ruby-version }}
|
18
|
+
bundler-cache: true
|
19
|
+
- name: Install dependencies
|
20
|
+
run: bundle install
|
21
|
+
- name: Run tests
|
22
|
+
run: bundle exec rspec
|
23
|
+
- name: Rubocop linting
|
24
|
+
run: bundle exec rubocop
|
data/.rubocop.yml
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.4
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,73 +1,73 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
demio-ruby (0.
|
4
|
+
demio-ruby (0.2.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
addressable (2.
|
10
|
-
public_suffix (>= 2.0.2, <
|
11
|
-
ast (2.4.
|
12
|
-
coderay (1.1.
|
13
|
-
crack (0.4.
|
14
|
-
|
15
|
-
diff-lcs (1.
|
16
|
-
hashdiff (0.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
method_source (~> 0.8.1)
|
26
|
-
slop (~> 3.4)
|
27
|
-
public_suffix (3.0.2)
|
9
|
+
addressable (2.8.0)
|
10
|
+
public_suffix (>= 2.0.2, < 5.0)
|
11
|
+
ast (2.4.2)
|
12
|
+
coderay (1.1.3)
|
13
|
+
crack (0.4.5)
|
14
|
+
rexml
|
15
|
+
diff-lcs (1.4.4)
|
16
|
+
hashdiff (1.0.1)
|
17
|
+
method_source (1.0.0)
|
18
|
+
parallel (1.20.1)
|
19
|
+
parser (3.0.2.0)
|
20
|
+
ast (~> 2.4.1)
|
21
|
+
pry (0.14.1)
|
22
|
+
coderay (~> 1.1)
|
23
|
+
method_source (~> 1.0)
|
24
|
+
public_suffix (4.0.6)
|
28
25
|
rainbow (3.0.0)
|
29
|
-
rake (
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
rspec-
|
34
|
-
|
35
|
-
rspec-
|
36
|
-
rspec-
|
26
|
+
rake (13.0.6)
|
27
|
+
regexp_parser (2.1.1)
|
28
|
+
rexml (3.2.5)
|
29
|
+
rspec (3.10.0)
|
30
|
+
rspec-core (~> 3.10.0)
|
31
|
+
rspec-expectations (~> 3.10.0)
|
32
|
+
rspec-mocks (~> 3.10.0)
|
33
|
+
rspec-core (3.10.1)
|
34
|
+
rspec-support (~> 3.10.0)
|
35
|
+
rspec-expectations (3.10.1)
|
37
36
|
diff-lcs (>= 1.2.0, < 2.0)
|
38
|
-
rspec-support (~> 3.
|
39
|
-
rspec-mocks (3.
|
37
|
+
rspec-support (~> 3.10.0)
|
38
|
+
rspec-mocks (3.10.2)
|
40
39
|
diff-lcs (>= 1.2.0, < 2.0)
|
41
|
-
rspec-support (~> 3.
|
42
|
-
rspec-support (3.
|
43
|
-
rubocop (
|
44
|
-
jaro_winkler (~> 1.5.1)
|
40
|
+
rspec-support (~> 3.10.0)
|
41
|
+
rspec-support (3.10.2)
|
42
|
+
rubocop (1.18.3)
|
45
43
|
parallel (~> 1.10)
|
46
|
-
parser (>=
|
47
|
-
powerpack (~> 0.1)
|
44
|
+
parser (>= 3.0.0.0)
|
48
45
|
rainbow (>= 2.2.2, < 4.0)
|
46
|
+
regexp_parser (>= 1.8, < 3.0)
|
47
|
+
rexml
|
48
|
+
rubocop-ast (>= 1.7.0, < 2.0)
|
49
49
|
ruby-progressbar (~> 1.7)
|
50
|
-
unicode-display_width (
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
unicode-display_width (
|
55
|
-
webmock (3.
|
50
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
51
|
+
rubocop-ast (1.7.0)
|
52
|
+
parser (>= 3.0.1.1)
|
53
|
+
ruby-progressbar (1.11.0)
|
54
|
+
unicode-display_width (2.0.0)
|
55
|
+
webmock (3.13.0)
|
56
56
|
addressable (>= 2.3.6)
|
57
57
|
crack (>= 0.3.2)
|
58
|
-
hashdiff
|
58
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
59
59
|
|
60
60
|
PLATFORMS
|
61
61
|
ruby
|
62
62
|
|
63
63
|
DEPENDENCIES
|
64
|
-
bundler (~>
|
64
|
+
bundler (~> 2.2.23)
|
65
65
|
demio-ruby!
|
66
|
-
pry (~> 0.
|
67
|
-
rake (~>
|
68
|
-
rspec (~> 3.0)
|
69
|
-
rubocop (~>
|
70
|
-
webmock (~> 3.
|
66
|
+
pry (~> 0.14.1)
|
67
|
+
rake (~> 13.0.6)
|
68
|
+
rspec (~> 3.10.0)
|
69
|
+
rubocop (~> 1.18.3)
|
70
|
+
webmock (~> 3.13.0)
|
71
71
|
|
72
72
|
BUNDLED WITH
|
73
|
-
|
73
|
+
2.2.23
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Demio Ruby Client
|
2
2
|
|
3
|
-
|
3
|
+

|
4
|
+
|
4
5
|
|
5
6
|
A Ruby gem for interacting with the [Demio API](https://publicdemioapi.docs.apiary.io/).
|
6
7
|
|
@@ -9,7 +10,7 @@ A Ruby gem for interacting with the [Demio API](https://publicdemioapi.docs.apia
|
|
9
10
|
Add this line to your application's Gemfile:
|
10
11
|
|
11
12
|
```ruby
|
12
|
-
gem
|
13
|
+
gem "demio-ruby", require: "demio"
|
13
14
|
```
|
14
15
|
|
15
16
|
And then execute:
|
@@ -37,7 +38,8 @@ client = Demio::Client.new(
|
|
37
38
|
| :------------------------- | :--------------------------------------------------- |
|
38
39
|
| List events | `#events` |
|
39
40
|
| Fetch an event | `#event(event_id)` |
|
40
|
-
| Fetch event date info | `#event_date(event_id,
|
41
|
+
| Fetch event date info | `#event_date(event_id, event_date_id)` |
|
42
|
+
| Fetch participants list | `#participants(event_date_id)` |
|
41
43
|
| Register a registrant | `#register(payload = {})` |
|
42
44
|
| Ping | `#ping` |
|
43
45
|
|
data/bin/console
CHANGED
data/demio-ruby.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["robyn@yuraki.com"]
|
11
11
|
|
12
12
|
spec.summary = "A wrapper for interacting with the Demio API"
|
13
|
-
spec.description = "
|
13
|
+
spec.description = "Supports all methods for interacting with the Demio API as described at https://publicdemioapi.docs.apiary.io/"
|
14
14
|
spec.homepage = "https://github.com/samudary/demio-ruby"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -24,10 +24,10 @@ Gem::Specification.new do |spec|
|
|
24
24
|
|
25
25
|
spec.required_ruby_version = '>= 2.1'
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", "~>
|
28
|
-
spec.add_development_dependency "rake", "~>
|
29
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
30
|
-
spec.add_development_dependency "rubocop", "~>
|
31
|
-
spec.add_development_dependency "pry", "~> 0.
|
32
|
-
spec.add_development_dependency "webmock", "~> 3.
|
27
|
+
spec.add_development_dependency "bundler", "~> 2.2.23"
|
28
|
+
spec.add_development_dependency "rake", "~> 13.0.6"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.10.0"
|
30
|
+
spec.add_development_dependency "rubocop", "~> 1.18.3"
|
31
|
+
spec.add_development_dependency "pry", "~> 0.14.1"
|
32
|
+
spec.add_development_dependency "webmock", "~> 3.13.0"
|
33
33
|
end
|
data/lib/demio/client.rb
CHANGED
@@ -4,6 +4,7 @@ require "demio/errors"
|
|
4
4
|
require "demio/event"
|
5
5
|
require "demio/event_date"
|
6
6
|
require "demio/events"
|
7
|
+
require "demio/participants"
|
7
8
|
require "demio/register"
|
8
9
|
require "json"
|
9
10
|
require "net/http"
|
@@ -14,10 +15,13 @@ module Demio
|
|
14
15
|
include Event
|
15
16
|
include EventDate
|
16
17
|
include Events
|
18
|
+
include Participants
|
17
19
|
include Register
|
18
20
|
|
19
21
|
attr_reader :api_key, :api_secret
|
20
22
|
|
23
|
+
REQUEST_REDIRECT_FOLLOW_LIMIT = 10
|
24
|
+
|
21
25
|
def initialize(options = {})
|
22
26
|
@api_key = options[:api_key]
|
23
27
|
@api_secret = options[:api_secret]
|
@@ -40,28 +44,33 @@ module Demio
|
|
40
44
|
|
41
45
|
private
|
42
46
|
|
43
|
-
def make_request(verb_klass, uri, payload = {},
|
44
|
-
raise TooManyRedirectsError, "too many HTTP redirects" if
|
47
|
+
def make_request(verb_klass, uri, payload = {}, request_limit = REQUEST_REDIRECT_FOLLOW_LIMIT)
|
48
|
+
raise TooManyRedirectsError, "too many HTTP redirects" if request_limit.zero?
|
45
49
|
|
46
|
-
uri = format_uri(uri)
|
50
|
+
uri = redirected_request?(request_limit) ? URI(uri) : format_uri(uri)
|
47
51
|
|
48
52
|
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
53
|
+
response = http.request(create_request(verb_klass, uri, payload))
|
54
|
+
handle_response(response, verb_klass, payload, request_limit)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def create_request(verb_klass, uri, payload)
|
59
|
+
request = verb_klass.new(uri)
|
60
|
+
request = create_headers(request)
|
61
|
+
request.body = payload.to_json if verb_klass == Net::HTTP::Put
|
62
|
+
request
|
63
|
+
end
|
64
|
+
|
65
|
+
def handle_response(response, verb_klass, payload, request_limit)
|
66
|
+
case response
|
67
|
+
when Net::HTTPSuccess
|
68
|
+
response
|
69
|
+
when Net::HTTPRedirection
|
70
|
+
location = response["Location"]
|
71
|
+
make_request(verb_klass, location, payload, request_limit - 1)
|
72
|
+
else
|
73
|
+
response.value
|
65
74
|
end
|
66
75
|
end
|
67
76
|
|
@@ -73,6 +82,10 @@ module Demio
|
|
73
82
|
request
|
74
83
|
end
|
75
84
|
|
85
|
+
def redirected_request?(request_limit)
|
86
|
+
request_limit < REQUEST_REDIRECT_FOLLOW_LIMIT
|
87
|
+
end
|
88
|
+
|
76
89
|
def format_uri(path)
|
77
90
|
URI(base_uri + path)
|
78
91
|
end
|
data/lib/demio/event.rb
CHANGED
@@ -6,9 +6,11 @@ module Demio
|
|
6
6
|
# Fetches a single event from Demio
|
7
7
|
#
|
8
8
|
# @param id [String]
|
9
|
-
# @
|
10
|
-
|
11
|
-
|
9
|
+
# @param active [Boolean]
|
10
|
+
# @return [Net::HTTPOk]
|
11
|
+
def event(id, active = nil)
|
12
|
+
active_param = active ? "?active=#{active}" : nil
|
13
|
+
get "event/#{id}#{active_param}"
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
data/lib/demio/event_date.rb
CHANGED
@@ -5,11 +5,11 @@ module Demio
|
|
5
5
|
module EventDate
|
6
6
|
# Fetches info about a specific date from Demio
|
7
7
|
#
|
8
|
-
# @param
|
9
|
-
# @param
|
10
|
-
# @return [Net::
|
11
|
-
def event_date(
|
12
|
-
get "event/#{
|
8
|
+
# @param event_id [String]
|
9
|
+
# @param event_date_id [String]
|
10
|
+
# @return [Net::HTTPOk]
|
11
|
+
def event_date(event_id, event_date_id)
|
12
|
+
get "event/#{event_id}/date/#{event_date_id}"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/lib/demio/events.rb
CHANGED
@@ -5,9 +5,11 @@ module Demio
|
|
5
5
|
module Events
|
6
6
|
# Fetches all events from Demio
|
7
7
|
#
|
8
|
-
# @
|
9
|
-
|
10
|
-
|
8
|
+
# @param type [String]
|
9
|
+
# @return [Net::HTTPOk]
|
10
|
+
def events(type = nil)
|
11
|
+
type_param = type ? "?type=#{type}" : nil
|
12
|
+
get "events#{type_param}"
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Demio
|
4
|
+
class Client
|
5
|
+
module Participants
|
6
|
+
# Returns Event Date participants list
|
7
|
+
#
|
8
|
+
# @param event_date_id [String]
|
9
|
+
# @params status [String]
|
10
|
+
# @return [Net::HTTPOk]
|
11
|
+
def participants(event_date_id, status = nil)
|
12
|
+
status_param = status ? "?status=#{status}" : nil
|
13
|
+
get "report/#{event_date_id}/participants#{status_param}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/demio/register.rb
CHANGED
data/lib/demio/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: demio-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robyn-Dale Samuda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,85 +16,86 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.23
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.2.23
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 13.0.6
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 13.0.6
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.10.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.10.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.18.3
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.18.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.14.1
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.14.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: webmock
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 3.13.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
description:
|
96
|
+
version: 3.13.0
|
97
|
+
description: Supports all methods for interacting with the Demio API as described
|
98
|
+
at https://publicdemioapi.docs.apiary.io/
|
98
99
|
email:
|
99
100
|
- robyn@yuraki.com
|
100
101
|
executables:
|
@@ -103,11 +104,12 @@ executables:
|
|
103
104
|
extensions: []
|
104
105
|
extra_rdoc_files: []
|
105
106
|
files:
|
107
|
+
- ".github/workflows/ruby.yml"
|
106
108
|
- ".gitignore"
|
107
109
|
- ".rspec"
|
108
110
|
- ".rubocop.yml"
|
109
111
|
- ".rubocop_todo.yml"
|
110
|
-
- ".
|
112
|
+
- ".ruby-version"
|
111
113
|
- CODE_OF_CONDUCT.md
|
112
114
|
- Gemfile
|
113
115
|
- Gemfile.lock
|
@@ -123,6 +125,7 @@ files:
|
|
123
125
|
- lib/demio/event.rb
|
124
126
|
- lib/demio/event_date.rb
|
125
127
|
- lib/demio/events.rb
|
128
|
+
- lib/demio/participants.rb
|
126
129
|
- lib/demio/register.rb
|
127
130
|
- lib/demio/version.rb
|
128
131
|
homepage: https://github.com/samudary/demio-ruby
|
@@ -144,8 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
147
|
- !ruby/object:Gem::Version
|
145
148
|
version: '0'
|
146
149
|
requirements: []
|
147
|
-
|
148
|
-
rubygems_version: 2.6.11
|
150
|
+
rubygems_version: 3.1.6
|
149
151
|
signing_key:
|
150
152
|
specification_version: 4
|
151
153
|
summary: A wrapper for interacting with the Demio API
|