calendlyr 0.3.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/CHANGELOG.md +3 -27
- data/Gemfile +1 -5
- data/README.md +47 -20
- data/bin/console +3 -3
- data/{calendly.gemspec → calendlyr.gemspec} +3 -3
- data/lib/{calendly → calendlyr}/client.rb +9 -9
- data/lib/{calendly → calendlyr}/collection.rb +4 -1
- data/lib/{calendly → calendlyr}/error.rb +1 -1
- data/lib/{calendly → calendlyr}/object.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/event_invitees.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/event_types.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/events.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/invitations.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/memberships.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/organizations.rb +9 -1
- data/lib/{calendly → calendlyr}/objects/scheduling_links.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/users.rb +1 -1
- data/lib/{calendly → calendlyr}/objects/webhooks.rb +1 -1
- data/lib/{calendly → calendlyr}/resource.rb +13 -25
- data/lib/{calendly → calendlyr}/resources/data_compliance.rb +1 -1
- data/lib/{calendly → calendlyr}/resources/event_invitees.rb +1 -1
- data/lib/{calendly → calendlyr}/resources/event_types.rb +1 -1
- data/lib/{calendly → calendlyr}/resources/events.rb +1 -1
- data/lib/{calendly → calendlyr}/resources/organizations.rb +2 -2
- data/lib/{calendly → calendlyr}/resources/scheduling_links.rb +1 -1
- data/lib/{calendly → calendlyr}/resources/users.rb +1 -1
- data/lib/{calendly → calendlyr}/resources/webhooks.rb +1 -1
- data/lib/calendlyr/version.rb +3 -0
- data/lib/calendlyr.rb +30 -0
- data/test/calendlyr/client_test.rb +11 -0
- data/test/calendlyr/object_test.rb +21 -0
- data/test/calendlyr/resource_test.rb +14 -0
- data/test/{calendly/resources/data_compliance.rb → calendlyr/resources/data_compliance_test.rb} +0 -0
- data/test/{calendly → calendlyr}/resources/event_invitees_test.rb +3 -3
- data/test/{calendly → calendlyr}/resources/event_types_test.rb +3 -3
- data/test/{calendly → calendlyr}/resources/events_test.rb +3 -3
- data/test/{calendly → calendlyr}/resources/organizations_test.rb +41 -26
- data/test/calendlyr/resources/scheduling_links_test.rb +15 -0
- data/test/{calendly → calendlyr}/resources/users_test.rb +24 -12
- data/test/{calendly → calendlyr}/resources/webhooks_test.rb +8 -5
- data/test/{calendly_test.rb → calendlyr_test.rb} +2 -2
- data/test/fixtures/organizations/invite.json +9 -7
- data/test/fixtures/organizations/list_invitations.json +1 -1
- data/test/fixtures/organizations/retrieve_invitation.json +1 -1
- data/test/fixtures/resources/400.json +10 -0
- data/test/fixtures/resources/401.json +10 -0
- data/test/fixtures/resources/403.json +10 -0
- data/test/fixtures/resources/404.json +10 -0
- data/test/fixtures/resources/409.json +4 -0
- data/test/fixtures/resources/500.json +10 -0
- data/test/fixtures/users/reload.json +14 -0
- data/test/test_helper.rb +9 -3
- metadata +67 -51
- data/lib/calendly/version.rb +0 -3
- data/lib/calendly.rb +0 -35
- data/test/calendly/client_test.rb +0 -8
- data/test/calendly/object_test.rb +0 -21
- data/test/calendly/resources/scheduling_links.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8333c9dbe0f1d7e633eaff538790c0cd4f57ee3d9cf8c1b0f5e4638373578a60
|
4
|
+
data.tar.gz: 9eb3dfaab07649e6b15d1fca3286c6fab0592a74f689f6809c7b2506e13e6b2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81f0d93eb9049accadaf68e8af5174800bfb6630570008a69d50e3f0ede02c60d9577a59e9a2aa161d92c68222957cefae618fee7471b5474d2569317b8e86ab
|
7
|
+
data.tar.gz: 6073bce53858d69dc7c40b814e54bd3d3dce0be7abf720873f55441b2b1e62eae360ecf30b4f201703c12cd337b94b8ff7a1e78370e1848bc1844e262c2f393a
|
data/.github/workflows/ci.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,31 +2,7 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
-
## [0.
|
6
|
-
*
|
7
|
-
* More testing = More coverage
|
5
|
+
## [0.5.0]
|
6
|
+
* First real usable release :tada:
|
8
7
|
|
9
|
-
|
10
|
-
* Minor fixes
|
11
|
-
|
12
|
-
## [0.3.0]
|
13
|
-
* No runtime dependencies
|
14
|
-
* Minor fixes
|
15
|
-
|
16
|
-
## [0.2.0]
|
17
|
-
* Support for ruby 3.0
|
18
|
-
* Minor fixes
|
19
|
-
|
20
|
-
## [0.1.1]
|
21
|
-
* Changed required ruby version from `>= 2.3.0` to `>= 2.4.0`
|
22
|
-
* Minitest
|
23
|
-
* Minor fixes
|
24
|
-
|
25
|
-
## 0.1.0
|
26
|
-
* Birthday!
|
27
|
-
|
28
|
-
[0.3.3]: https://github.com/araluce/calendly.rb/compare/v0.3.2...v0.3.3
|
29
|
-
[0.3.2]: https://github.com/araluce/calendly.rb/compare/v0.3.0...v0.3.2
|
30
|
-
[0.3.0]: https://github.com/araluce/calendly.rb/compare/v0.2.0...v0.3.0
|
31
|
-
[0.2.0]: https://github.com/araluce/calendly.rb/compare/v0.1.1...v0.2.0
|
32
|
-
[0.1.1]: https://github.com/araluce/calendly.rb/compare/v0.1.0...v0.1.1
|
8
|
+
[0.5.0]: https://github.com/araluce/calendlyr/compare/v0.1.0...v0.5.0
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,18 +1,28 @@
|
|
1
|
-
[![](https://img.shields.io/github/license/araluce/
|
2
|
-
![](https://github.com/araluce/
|
3
|
-
[![codecov](https://codecov.io/gh/araluce/
|
4
|
-
[![
|
1
|
+
[![](https://img.shields.io/github/license/araluce/calendlyr)](https://github.com/araluce/calendlyr/blob/master/LICENSE.txt)
|
2
|
+
[![](https://github.com/araluce/calendlyr/actions/workflows/ci.yml/badge.svg)](https://github.com/araluce/calendlyr/actions)
|
3
|
+
[![codecov](https://codecov.io/gh/araluce/calendlyr/branch/master/graph/badge.svg?token=YSUU4PHM6Y)](https://codecov.io/gh/araluce/calendlyr)
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/calendlyr.svg)](https://badge.fury.io/rb/calendlyr)
|
5
5
|
|
6
|
-
# Calendly API Rubygem
|
6
|
+
# Calendly API Rubygem LITE version
|
7
7
|
|
8
8
|
Easy and complete rubygem for [Calendly](https://calendly.com/). Currently supports [API v2](https://calendly.stoplight.io/docs/api-docs).
|
9
9
|
|
10
|
+
Just needed a Personal Access Token.
|
11
|
+
|
12
|
+
> If you need a Oauth authentication maybe you need [calendly-api-ruby-client](https://github.com/koshilife/calendly-api-ruby-client)
|
13
|
+
|
14
|
+
## Dependencies
|
15
|
+
|
16
|
+
No dependencies :tada:
|
17
|
+
|
18
|
+
We know about the importance of not add dependencies that you don't want.
|
19
|
+
|
10
20
|
## Installation
|
11
21
|
|
12
22
|
Add this line to your application's Gemfile:
|
13
23
|
|
14
24
|
```ruby
|
15
|
-
gem 'calendlyr'
|
25
|
+
gem 'calendlyr'
|
16
26
|
```
|
17
27
|
|
18
28
|
And then execute:
|
@@ -25,10 +35,10 @@ Or install it yourself as:
|
|
25
35
|
|
26
36
|
## Usage
|
27
37
|
|
28
|
-
To access the API, you'll need to create a `
|
38
|
+
To access the API, you'll need to create a `Calendlyr::Client` and pass in your token. You can generate your Personal Access Token at [https://calendly.com/integrations/api_webhooks](https://calendly.com/integrations/api_webhooks)
|
29
39
|
|
30
40
|
```ruby
|
31
|
-
client =
|
41
|
+
client = Calendlyr::Client.new(token: ENV["CALENDLY_TOKEN"])
|
32
42
|
```
|
33
43
|
|
34
44
|
The client then gives you access to each of the resources.
|
@@ -37,7 +47,7 @@ The client then gives you access to each of the resources.
|
|
37
47
|
|
38
48
|
The gem maps as closely as we can to the Calendly API so you can easily convert API examples to gem code.
|
39
49
|
|
40
|
-
Responses are created as objects like `
|
50
|
+
Responses are created as objects like `Calendlyr::Event`. Having types like `Calendlyr::User` is handy for understanding what type of object you're working with. They're built using OpenStruct so you can easily access data in a Ruby-ish way.
|
41
51
|
|
42
52
|
##### Pagination
|
43
53
|
|
@@ -45,20 +55,20 @@ Responses are created as objects like `Calendly::Event`. Having types like `Cale
|
|
45
55
|
|
46
56
|
```ruby
|
47
57
|
results = client.me.events(count: 5)
|
48
|
-
#=>
|
58
|
+
#=> Calendlyr::Collection
|
49
59
|
|
50
60
|
results.count
|
51
61
|
#=> 5
|
52
62
|
|
53
63
|
results.data
|
54
|
-
#=> [#<
|
64
|
+
#=> [#<Calendlyr::Event>, #<Calendlyr::Event>]
|
55
65
|
|
56
66
|
results.next_page_token
|
57
67
|
#=> "KfKBetd7bS0wsFINjYky9mp8ZJXv76aL"
|
58
68
|
|
59
69
|
# Retrieve the next page
|
60
70
|
client.me.events(count: 5, next_page_token: results.next_page_token)
|
61
|
-
#=>
|
71
|
+
#=> Calendlyr::Collection
|
62
72
|
```
|
63
73
|
|
64
74
|
### Users
|
@@ -68,18 +78,29 @@ client.users.me
|
|
68
78
|
client.retrieve(user_uuid: "uuid")
|
69
79
|
|
70
80
|
client.organization
|
71
|
-
#=> #<
|
81
|
+
#=> #<Calendlyr::Organization>
|
72
82
|
|
73
83
|
client.me.event_types
|
74
|
-
#=>
|
84
|
+
#=> Calendlyr::Collection @data=[#<Calendlyr::EventType>, #<Calendlyr::EventType>]
|
75
85
|
|
76
86
|
client.me.events
|
77
|
-
#=>
|
87
|
+
#=> Calendlyr::Collection @data=[#<Calendlyr::Event>, #<Calendlyr::Event>]
|
78
88
|
|
79
89
|
client.me.memberships
|
80
|
-
#=>
|
90
|
+
#=> Calendlyr::Collection @data=[#<Calendlyr::MemberShip>, #<Calendlyr::MemberShip>]
|
81
91
|
```
|
82
92
|
|
93
|
+
#### Me (Cached)
|
94
|
+
|
95
|
+
Probably you need to make many calls through `client.me`, so we decided to not make calls for every `client.me` reference by caching it the first time. However, if you need to reload the content of `me` you can `force_relaod` to force a new call.
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
client.me # makes a call and caches the response
|
99
|
+
client.me # no call, value cached
|
100
|
+
client.me(force_reload: true) # makes a new call and update cache value
|
101
|
+
```
|
102
|
+
|
103
|
+
|
83
104
|
### Event Types
|
84
105
|
````ruby
|
85
106
|
client.event_types.list user_uri: "user_uri", organization_uri: "organization_uri"
|
@@ -114,7 +135,7 @@ client.organization.list_invitations
|
|
114
135
|
# Get invitation
|
115
136
|
client.organizations.retrieve_invitation(organization_uuid: "organization_uuid", invitation_uuid: "invitation_uuid")
|
116
137
|
client.organization.invitation(invitation_uuid: "invitation_uuid")
|
117
|
-
#Revoke invitation
|
138
|
+
# Revoke invitation
|
118
139
|
client.organizations.revoke_invitation(organization_uuid: "organization_uuid", invitation_uuid: "organization_uuid")
|
119
140
|
client.organization.revoke_invitation(invitation_uuid: "organization_uuid")
|
120
141
|
invitation = client.organization.invitation(invitation_uuid: "invitation_uuid")
|
@@ -129,12 +150,16 @@ client.organizations.retrieve_membership(membership_uuid: "membership_uuid")
|
|
129
150
|
client.organizations.remove_user(membership_uuid: "membership_uuid")
|
130
151
|
|
131
152
|
client.organization.events
|
153
|
+
|
154
|
+
# List/Creaete webhooks
|
155
|
+
client.organization.list_webhooks(scope: "scope")
|
156
|
+
client.organization.create_webhook(url: "post_callback_url", events: ["invitee.canceled", "invitee.created"], scope: "scope")
|
132
157
|
````
|
133
158
|
|
134
159
|
### Webhooks
|
135
160
|
```ruby
|
136
161
|
client.webhooks.list(organization_uri: "organization_uri", scope: "scope")
|
137
|
-
client.webhooks.create(
|
162
|
+
client.webhooks.create(url: "post_callback_url", events: ["invitee.canceled", "invitee.created"], organization_uri: "organization_uri", scope: "scope")
|
138
163
|
client.webhooks.retrieve(webhook_uuid: "webhook_uuid")
|
139
164
|
client.webhooks.delete(webhook_uuid: "webhook_uuid")
|
140
165
|
```
|
@@ -146,14 +171,16 @@ client.data_compliance.delete_invitee_data
|
|
146
171
|
|
147
172
|
## Contributing
|
148
173
|
|
149
|
-
1. Fork it ( https://github.com/araluce/
|
174
|
+
1. Fork it ( https://github.com/araluce/calendlyr/fork )
|
150
175
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
151
176
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
152
177
|
4. Push to the branch (`git push origin my-new-feature`)
|
153
178
|
5. Create a new Pull Request
|
154
179
|
|
155
|
-
When adding resources, add to the list of resources in lib/
|
180
|
+
When adding resources, add to the list of resources in lib/calendlyr. Additionally, write a spec and add it to the list in the README.
|
156
181
|
|
157
182
|
## Thanks
|
158
183
|
|
184
|
+
Many thanks [@markets](https://github.com/markets) (our contributor in the shadows) for all comments, details and tips for this rubygem project and for made me grow professionally in my day by day :raised_hands:
|
185
|
+
|
159
186
|
Thanks [@excid3](https://github.com/excid3) and his [Vultr.rb](https://github.com/excid3/vultr.rb) rubygem project.
|
data/bin/console
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
|
-
require "
|
4
|
+
require "calendlyr"
|
5
5
|
|
6
|
-
client =
|
6
|
+
client = Calendlyr::Client.new(token: ENV["CALENDLY_TOKEN"])
|
7
7
|
|
8
8
|
puts
|
9
|
-
puts "We've created a 'client' variable as a
|
9
|
+
puts "We've created a 'client' variable as a Calendlyr::Client using ENV['CALENDLY_TOKEN'] as the Personal Access Token."
|
10
10
|
puts
|
11
11
|
|
12
12
|
require "irb"
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require "./lib/
|
1
|
+
require "./lib/calendlyr/version"
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "calendlyr"
|
5
|
-
spec.version =
|
5
|
+
spec.version = Calendlyr::VERSION
|
6
6
|
spec.authors = ["araluce"]
|
7
7
|
spec.email = ["araluce11@gmail.com"]
|
8
8
|
|
9
9
|
spec.summary = "Ruby bindings for Calendly API."
|
10
10
|
spec.description = "Ruby bindings for Calendly API. Calendly APIs can be found here: https://calendly.stoplight.io/docs/api-docs/"
|
11
|
-
spec.homepage = "https://github.com/araluce/
|
11
|
+
spec.homepage = "https://github.com/araluce/calendlyr"
|
12
12
|
spec.license = "MIT"
|
13
13
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
14
14
|
spec.metadata["homepage_uri"] = spec.homepage
|
@@ -1,16 +1,16 @@
|
|
1
|
-
module
|
1
|
+
module Calendlyr
|
2
2
|
class Client
|
3
3
|
BASE_URL = "https://api.calendly.com"
|
4
4
|
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :token
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
9
|
-
raise Error, "Add an api_key to use Calendly. Calendly::Client.new(api_key: 'your_api_key')" unless api_key
|
7
|
+
def initialize(token:)
|
8
|
+
@token = token
|
10
9
|
end
|
11
10
|
|
12
|
-
def me
|
13
|
-
|
11
|
+
def me(force_reload: false)
|
12
|
+
@me = nil if force_reload
|
13
|
+
@me ||= users.me
|
14
14
|
end
|
15
15
|
|
16
16
|
def organization
|
@@ -49,9 +49,9 @@ module Calendly
|
|
49
49
|
DataComplianceResource.new(self)
|
50
50
|
end
|
51
51
|
|
52
|
-
# Avoid returning #<
|
52
|
+
# Avoid returning #<Calendlyr::Client @token="token" ...>
|
53
53
|
def inspect
|
54
|
-
"#<
|
54
|
+
"#<Calendlyr::Client>"
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Calendlyr
|
2
2
|
class Organization < Object
|
3
3
|
def invite_user(email:)
|
4
4
|
client.organizations.invite organization_uuid: uuid, email: email
|
@@ -8,6 +8,14 @@ module Calendly
|
|
8
8
|
client.organizations.list_invitations organization_uuid: uuid, **params
|
9
9
|
end
|
10
10
|
|
11
|
+
def list_webhooks(**params)
|
12
|
+
client.webhooks.list(organization_uri: uri, **params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_webhook(**params)
|
16
|
+
client.webhooks.create(organization_uri: uri, **params)
|
17
|
+
end
|
18
|
+
|
11
19
|
def revoke_invitation(invitation_uuid:)
|
12
20
|
client.organizations.revoke_invitation(organization_uuid: uuid, invitation_uuid: invitation_uuid)
|
13
21
|
end
|
@@ -1,7 +1,14 @@
|
|
1
|
-
|
1
|
+
require "net/http"
|
2
|
+
require "json"
|
3
|
+
require "openssl"
|
4
|
+
require "uri"
|
5
|
+
|
6
|
+
module Calendlyr
|
2
7
|
class Resource
|
3
8
|
attr_reader :client
|
4
9
|
|
10
|
+
ERROR_CODES = %w[400 401 403 404 409 500]
|
11
|
+
|
5
12
|
def initialize(client)
|
6
13
|
@client = client
|
7
14
|
end
|
@@ -16,14 +23,6 @@ module Calendly
|
|
16
23
|
handle_response request(url, Net::HTTP::Post, body: body)
|
17
24
|
end
|
18
25
|
|
19
|
-
def patch_request(url, body:)
|
20
|
-
handle_response request(url, Net::HTTP::Patch, body: body)
|
21
|
-
end
|
22
|
-
|
23
|
-
def put_request(url, body)
|
24
|
-
handle_response request(url, Net::HTTP::Put, body: body)
|
25
|
-
end
|
26
|
-
|
27
26
|
def delete_request(url, params: {})
|
28
27
|
handle_response request(url, Net::HTTP::Delete, params: params)
|
29
28
|
end
|
@@ -42,29 +41,18 @@ module Calendly
|
|
42
41
|
|
43
42
|
request = req_type.new(uri)
|
44
43
|
request["Content-Type"] = "application/json"
|
45
|
-
request["Authorization"] = "Bearer #{client.
|
44
|
+
request["Authorization"] = "Bearer #{client.token}"
|
46
45
|
request.body = body.to_json if body.any?
|
47
46
|
|
48
47
|
http.request(request)
|
49
48
|
end
|
50
49
|
|
51
50
|
def handle_response(response)
|
51
|
+
return true unless response.read_body
|
52
|
+
|
52
53
|
body = JSON.parse(response.read_body)
|
53
|
-
|
54
|
-
|
55
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
56
|
-
when 401
|
57
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
58
|
-
when 403
|
59
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
60
|
-
when 404
|
61
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
62
|
-
when 429
|
63
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
64
|
-
when 500
|
65
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
66
|
-
when 503
|
67
|
-
raise Error, "#{body["title"]}. #{body["message"]}"
|
54
|
+
if ERROR_CODES.include? response.code
|
55
|
+
raise Error, "[Error #{response.code}] #{body["title"]}. #{body["message"]}"
|
68
56
|
else
|
69
57
|
body
|
70
58
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module
|
1
|
+
module Calendlyr
|
2
2
|
class OrganizationResource < Resource
|
3
3
|
def invite(organization_uuid:, email:)
|
4
|
-
Invitation.new post_request("organizations/#{organization_uuid}/invitations", body: {email: email}).merge(client: client)
|
4
|
+
Invitation.new post_request("organizations/#{organization_uuid}/invitations", body: {email: email}).dig("resource").merge(client: client)
|
5
5
|
end
|
6
6
|
|
7
7
|
def list_invitations(organization_uuid:, **params)
|
data/lib/calendlyr.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require "calendlyr/version"
|
2
|
+
|
3
|
+
module Calendlyr
|
4
|
+
autoload :Client, "calendlyr/client"
|
5
|
+
autoload :Collection, "calendlyr/collection"
|
6
|
+
autoload :Error, "calendlyr/error"
|
7
|
+
autoload :Resource, "calendlyr/resource"
|
8
|
+
autoload :Object, "calendlyr/object"
|
9
|
+
|
10
|
+
# High-level categories of Calendly API calls
|
11
|
+
autoload :UserResource, "calendlyr/resources/users"
|
12
|
+
autoload :EventTypeResource, "calendlyr/resources/event_types"
|
13
|
+
autoload :OrganizationResource, "calendlyr/resources/organizations"
|
14
|
+
autoload :EventResource, "calendlyr/resources/events"
|
15
|
+
autoload :EventInviteeResource, "calendlyr/resources/event_invitees"
|
16
|
+
autoload :SchedulingLinkResource, "calendlyr/resources/scheduling_links"
|
17
|
+
autoload :WebhookResource, "calendlyr/resources/webhooks"
|
18
|
+
autoload :DataComplianceResource, "calendlyr/resources/data_compliance"
|
19
|
+
|
20
|
+
# Classes used to return a nicer object wrapping the response data
|
21
|
+
autoload :User, "calendlyr/objects/users"
|
22
|
+
autoload :EventType, "calendlyr/objects/event_types"
|
23
|
+
autoload :Event, "calendlyr/objects/events"
|
24
|
+
autoload :Organization, "calendlyr/objects/organizations"
|
25
|
+
autoload :Invitation, "calendlyr/objects/invitations"
|
26
|
+
autoload :EventInvitee, "calendlyr/objects/event_invitees"
|
27
|
+
autoload :SchedulingLink, "calendlyr/objects/scheduling_links"
|
28
|
+
autoload :Membership, "calendlyr/objects/memberships"
|
29
|
+
autoload :Webhook, "calendlyr/objects/webhooks"
|
30
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ObjectTest < Minitest::Test
|
4
|
+
def test_creating_object_from_hash
|
5
|
+
assert_equal "bar", Calendlyr::Object.new(foo: "bar").foo
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_nested_hash
|
9
|
+
assert_equal "foobar", Calendlyr::Object.new(foo: {bar: {baz: "foobar"}}, client: nil).foo.bar.baz
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_nested_number
|
13
|
+
assert_equal 1, Calendlyr::Object.new(foo: {bar: 1}, client: nil).foo.bar
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_array
|
17
|
+
object = Calendlyr::Object.new(foo: [{bar: :baz}], client: nil)
|
18
|
+
assert_equal OpenStruct, object.foo.first.class
|
19
|
+
assert_equal :baz, object.foo.first.bar
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class ResourceTest < Minitest::Test
|
6
|
+
def test_handle_response_error
|
7
|
+
error_code = Calendlyr::Resource::ERROR_CODES.sample
|
8
|
+
stub(path: "users/me", response: {body: fixture_file("resources/#{error_code}"), status: error_code.to_i})
|
9
|
+
|
10
|
+
assert_raises Calendlyr::Error do
|
11
|
+
client.me
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/test/{calendly/resources/data_compliance.rb → calendlyr/resources/data_compliance_test.rb}
RENAMED
File without changes
|
@@ -9,8 +9,8 @@ class EventInviteesResourceTest < Minitest::Test
|
|
9
9
|
stub(path: "scheduled_events/#{event_uuid}/invitees", response: response)
|
10
10
|
event_invitees = client.event_invitees.list(event_uuid: event_uuid)
|
11
11
|
|
12
|
-
assert_equal
|
13
|
-
assert_equal
|
12
|
+
assert_equal Calendlyr::Collection, event_invitees.class
|
13
|
+
assert_equal Calendlyr::EventInvitee, event_invitees.data.first.class
|
14
14
|
assert_equal 1, event_invitees.count
|
15
15
|
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", event_invitees.next_page_token
|
16
16
|
end
|
@@ -22,7 +22,7 @@ class EventInviteesResourceTest < Minitest::Test
|
|
22
22
|
stub(path: "scheduled_events/#{event_uuid}/invitees/#{invitee_uuid}", response: response)
|
23
23
|
event_invitee = client.event_invitees.retrieve(event_uuid: event_uuid, invitee_uuid: invitee_uuid)
|
24
24
|
|
25
|
-
assert_equal
|
25
|
+
assert_equal Calendlyr::EventInvitee, event_invitee.class
|
26
26
|
assert_equal "https://api.calendly.com/api/v2/scheduled_events/ABCDABCDABCDABCD/invitees/ABCDABCDABCDABCD", event_invitee.uri
|
27
27
|
assert_equal "John Doe", event_invitee.name
|
28
28
|
end
|