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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b4cd193d6d33811121095b87cb6436c2b306cf0a
4
- data.tar.gz: cae5fe432d0dc3460b98a5c3b2b7acdf00ca9eaa
2
+ SHA256:
3
+ metadata.gz: 794b5a958104aec0cdc5fabb7d9fa802eef1e0d3c76e609a6f788216d6dac50e
4
+ data.tar.gz: 76a4eb0d171dc6339d42f292707cdc638a7de99e2c502403dbcce54403f47920
5
5
  SHA512:
6
- metadata.gz: 7e1d3fcd85ea5b1a89a12a48205da18a60d01b6f6800dbd5d7d083f8bcfadb16f1b744ef4d2c9fe7d05037a6f2010faabb2658b95b6666d7a56208eed6bef95f
7
- data.tar.gz: 4311fe39548a57b6b1cafe78e240b2074d8d90d2f6e41cef529987cf10c576b1172104daa7873c934acfb6ad0e312ac87436728e711fd6fee4e17a3c748a8bdf
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
@@ -5,7 +5,7 @@ AllCops:
5
5
  - "demio-ruby.gemspec"
6
6
  - "Gemfile"
7
7
  - "Rakefile"
8
- - 'vendor/**/*' # Fixes weird Travis CI incorrect cop issue
8
+ - "vendor/**/*" # Fixes weird Travis CI incorrect cop issue
9
9
 
10
10
  Metrics/BlockLength:
11
11
  Exclude:
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.4
data/Gemfile CHANGED
@@ -2,5 +2,4 @@ source "https://rubygems.org"
2
2
 
3
3
  git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
- # Specify your gem's dependencies in demio_ruby.gemspec
6
5
  gemspec
data/Gemfile.lock CHANGED
@@ -1,73 +1,73 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- demio-ruby (0.1.0)
4
+ demio-ruby (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.5.2)
10
- public_suffix (>= 2.0.2, < 4.0)
11
- ast (2.4.0)
12
- coderay (1.1.2)
13
- crack (0.4.3)
14
- safe_yaml (~> 1.0.0)
15
- diff-lcs (1.3)
16
- hashdiff (0.3.7)
17
- jaro_winkler (1.5.1)
18
- method_source (0.8.2)
19
- parallel (1.12.1)
20
- parser (2.5.1.0)
21
- ast (~> 2.4.0)
22
- powerpack (0.1.2)
23
- pry (0.10.4)
24
- coderay (~> 1.1.0)
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 (10.5.0)
30
- rspec (3.7.0)
31
- rspec-core (~> 3.7.0)
32
- rspec-expectations (~> 3.7.0)
33
- rspec-mocks (~> 3.7.0)
34
- rspec-core (3.7.0)
35
- rspec-support (~> 3.7.0)
36
- rspec-expectations (3.7.0)
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.7.0)
39
- rspec-mocks (3.7.0)
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.7.0)
42
- rspec-support (3.7.0)
43
- rubocop (0.57.2)
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 (>= 2.5)
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 (~> 1.0, >= 1.0.1)
51
- ruby-progressbar (1.9.0)
52
- safe_yaml (1.0.4)
53
- slop (3.6.0)
54
- unicode-display_width (1.4.0)
55
- webmock (3.4.2)
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 (~> 1.16)
64
+ bundler (~> 2.2.23)
65
65
  demio-ruby!
66
- pry (~> 0.10.3)
67
- rake (~> 10.0)
68
- rspec (~> 3.0)
69
- rubocop (~> 0.57.1)
70
- webmock (~> 3.4)
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
- 1.16.1
73
+ 2.2.23
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Demio Ruby Client
2
2
 
3
- [![Build Status](https://travis-ci.org/samudary/demio-ruby.svg?branch=master)](https://travis-ci.org/samudary/demio-ruby)
3
+ ![example workflow](https://github.com/samudary/demio-ruby/actions/workflows/ruby.yml/badge.svg)
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 'demio-ruby'
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, date_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
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "demio"
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 = "A wrapper for interacting with the Demio API"
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", "~> 1.16"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.0"
30
- spec.add_development_dependency "rubocop", "~> 0.57.1"
31
- spec.add_development_dependency "pry", "~> 0.10.3"
32
- spec.add_development_dependency "webmock", "~> 3.4"
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 = {}, limit = 10)
44
- raise TooManyRedirectsError, "too many HTTP redirects" if limit.zero?
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
- request = verb_klass.new uri
50
- request = create_headers(request)
51
-
52
- request.body = payload.to_json if verb_klass == Net::HTTP::Put
53
-
54
- response = http.request request
55
-
56
- case response
57
- when Net::HTTPSuccess then
58
- response
59
- when Net::HTTPRedirection then
60
- location = response["location"]
61
- make_request(verb_klass, location, payload, limit - 1)
62
- else
63
- response.value
64
- end
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
- # @return [Net::HTTPCreated]
10
- def event(id)
11
- get "event/#{id}"
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
@@ -5,11 +5,11 @@ module Demio
5
5
  module EventDate
6
6
  # Fetches info about a specific date from Demio
7
7
  #
8
- # @param id [String]
9
- # @param date_id [String]
10
- # @return [Net::HTTPCreated]
11
- def event_date(id, date_id)
12
- get "event/#{id}/#{date_id}"
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
- # @return [Net::HTTPCreated]
9
- def events
10
- get "events"
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
@@ -4,6 +4,7 @@ module Demio
4
4
  class Client
5
5
  module Register
6
6
  # Adds a registrant to an event in Demio
7
+ # Docs: https://publicdemioapi.docs.apiary.io/#reference/events/register/register
7
8
  #
8
9
  # @param payload [Hash]
9
10
  # @return [Net::HTTPCreated]
data/lib/demio/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Demio
2
- VERSION = "0.1.0".freeze
4
+ VERSION = "0.2.0"
3
5
  end
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.1.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: 2018-06-17 00:00:00.000000000 Z
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: '1.16'
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: '1.16'
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: '10.0'
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: '10.0'
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: '3.0'
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: '3.0'
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: 0.57.1
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: 0.57.1
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.10.3
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.10.3
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: '3.4'
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: '3.4'
97
- description: A wrapper for interacting with the Demio API
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
- - ".travis.yml"
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
- rubyforge_project:
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
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.5.0
5
- - 2.4.0
6
- - 2.3.0
7
- - 2.2.0
8
- before_install:
9
- - gem install bundler -v 1.16.1