antaeus-sdk 0.2.3

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.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +119 -0
  4. data/bin/antaeus-cli +35 -0
  5. data/lib/antaeus-sdk.rb +58 -0
  6. data/lib/antaeus-sdk/api_client.rb +105 -0
  7. data/lib/antaeus-sdk/api_info.rb +47 -0
  8. data/lib/antaeus-sdk/config.rb +54 -0
  9. data/lib/antaeus-sdk/exception.rb +5 -0
  10. data/lib/antaeus-sdk/exceptions/approval_change_failed.rb +6 -0
  11. data/lib/antaeus-sdk/exceptions/authentication_failure.rb +6 -0
  12. data/lib/antaeus-sdk/exceptions/checkin_change_failed.rb +6 -0
  13. data/lib/antaeus-sdk/exceptions/checkout_change_failed.rb +6 -0
  14. data/lib/antaeus-sdk/exceptions/immutable_instance.rb +6 -0
  15. data/lib/antaeus-sdk/exceptions/immutable_modification.rb +6 -0
  16. data/lib/antaeus-sdk/exceptions/invalid_api_client.rb +6 -0
  17. data/lib/antaeus-sdk/exceptions/invalid_config_data.rb +6 -0
  18. data/lib/antaeus-sdk/exceptions/invalid_entity.rb +6 -0
  19. data/lib/antaeus-sdk/exceptions/invalid_input.rb +6 -0
  20. data/lib/antaeus-sdk/exceptions/invalid_options.rb +6 -0
  21. data/lib/antaeus-sdk/exceptions/invalid_property.rb +6 -0
  22. data/lib/antaeus-sdk/exceptions/invalid_where_query.rb +6 -0
  23. data/lib/antaeus-sdk/exceptions/login_required.rb +6 -0
  24. data/lib/antaeus-sdk/exceptions/missing_api_client.rb +6 -0
  25. data/lib/antaeus-sdk/exceptions/missing_entity.rb +6 -0
  26. data/lib/antaeus-sdk/exceptions/missing_path.rb +6 -0
  27. data/lib/antaeus-sdk/exceptions/new_instance_with_id.rb +6 -0
  28. data/lib/antaeus-sdk/guest_api_client.rb +63 -0
  29. data/lib/antaeus-sdk/helpers/string.rb +24 -0
  30. data/lib/antaeus-sdk/resource.rb +363 -0
  31. data/lib/antaeus-sdk/resource_collection.rb +198 -0
  32. data/lib/antaeus-sdk/resources/appointment.rb +166 -0
  33. data/lib/antaeus-sdk/resources/group.rb +27 -0
  34. data/lib/antaeus-sdk/resources/guest.rb +41 -0
  35. data/lib/antaeus-sdk/resources/hook.rb +17 -0
  36. data/lib/antaeus-sdk/resources/location.rb +50 -0
  37. data/lib/antaeus-sdk/resources/remote_application.rb +13 -0
  38. data/lib/antaeus-sdk/resources/user.rb +28 -0
  39. data/lib/antaeus-sdk/user_api_client.rb +63 -0
  40. data/lib/antaeus-sdk/version.rb +7 -0
  41. metadata +209 -0
@@ -0,0 +1,50 @@
1
+ module Antaeus
2
+ module Resources
3
+ class Location < Resource
4
+ property :shortname
5
+ property :address_line1
6
+ property :address_line2
7
+ property :city
8
+ property :state
9
+ property :zip
10
+ property :country
11
+ property :phone
12
+ property :details
13
+ property :public_details
14
+ property :email_instructions
15
+ property :created_at, read_only: true, type: :time
16
+
17
+ path :all, '/locations'
18
+
19
+ def appointments
20
+ ResourceCollection.new(
21
+ @client.get("#{path_for(:all)}/#{id}/appointments?all=true")['appointments'].collect do |record|
22
+ Appointment.new(
23
+ entity: record,
24
+ lazy: true,
25
+ tainted: false,
26
+ client: @client
27
+ )
28
+ end,
29
+ type: Antaeus::Resources::Appointment,
30
+ client: @client
31
+ )
32
+ end
33
+
34
+ def upcoming_appointments
35
+ ResourceCollection.new(
36
+ @client.get("#{path_for(:all)}/#{id}/appointments")['appointments'].collect do |record|
37
+ Appointment.new(
38
+ entity: record,
39
+ lazy: true,
40
+ tainted: false,
41
+ client: @client
42
+ )
43
+ end,
44
+ type: Antaeus::Resources::Appointment,
45
+ client: @client
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,13 @@
1
+ module Antaeus
2
+ module Resources
3
+ class RemoteApplication < Resource
4
+ property :app_name
5
+ property :ident
6
+ property :app_key
7
+ property :url
8
+ property :created_at, read_only: true, type: :time
9
+
10
+ path :all, '/remote_applications'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ module Antaeus
2
+ module Resources
3
+ class User < Resource
4
+ property :display_name
5
+ delayed_property { Antaeus.config.user_mail_attribute || :mail }
6
+
7
+ path :all, '/users'
8
+ immutable true
9
+
10
+ def memberships
11
+ ResourceCollection.new(
12
+ @client.get("/users/#{id}/memberships")['groups'].collect do |record|
13
+ Group.new(
14
+ entity: record,
15
+ lazy: true,
16
+ tainted: false,
17
+ client: @client
18
+ )
19
+ end,
20
+ type: Antaeus::Resources::Group,
21
+ client: @client
22
+ )
23
+ end
24
+
25
+ alias_method :groups, :memberships
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,63 @@
1
+ module Antaeus
2
+ class UserAPIClient < APIClient
3
+ def authenticate(login, pass)
4
+ @login ||= login
5
+ begin
6
+ raw_token_data = RestClient.post(
7
+ "#{Antaeus.config.base_url}/users/authenticate",
8
+ { login: @login, password: pass }.to_json,
9
+ content_type: :json,
10
+ accept: :json
11
+ )
12
+ token_data = JSON.load(raw_token_data)
13
+ set_token(@login, token_data['api_token'])
14
+ true
15
+ rescue RestClient::Exception => e
16
+ raise Exceptions::AuthenticationFailure, e.response
17
+ end
18
+ end
19
+
20
+ # Set the token in memory for the given user
21
+ def set_token(login, token)
22
+ # this should probably be improved to handle race conditions
23
+ @login ||= login
24
+ @user_data ||= {}
25
+ @user_data[login] ||= {}
26
+ @user_data[login][:token] = token
27
+ end
28
+
29
+ # Retrieve the token for a given user
30
+ def get_token(login)
31
+ return nil unless @login
32
+ return nil unless @login == login
33
+ return nil unless @user_data
34
+ return nil unless @user_data[login]
35
+ @user_data[login][:token] ? @user_data[login][:token].dup : nil
36
+ end
37
+
38
+ def authenticated?
39
+ if @login && @user_data[@login] && @user_data[@login][:token]
40
+ true
41
+ else
42
+ false
43
+ end
44
+ end
45
+
46
+ def connect
47
+ return true if connected?
48
+
49
+ if authenticated?
50
+ @rest_client = RestClient::Resource.new(
51
+ Antaeus.config.base_url,
52
+ content_type: :json,
53
+ accept: :json,
54
+ headers: {
55
+ 'X-API-Token:': @user_data[@login][:token]
56
+ }
57
+ )
58
+ else
59
+ raise Exceptions::LoginRequired
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,7 @@
1
+ module Antaeus
2
+ module SDK
3
+ def self.version
4
+ '0.2.3'
5
+ end
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,209 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: antaeus-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.3
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Gnagy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: crypt
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: linguistics
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: addressable
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.4'
83
+ - !ruby/object:Gem::Dependency
84
+ name: will_paginate
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.35'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.35'
125
+ - !ruby/object:Gem::Dependency
126
+ name: yard
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.8'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.8'
139
+ description: The Ruby SDK for the Antaeus Guest Management SDK
140
+ email: jgnagy@knuedge.com
141
+ executables:
142
+ - antaeus-cli
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - LICENSE
147
+ - README.md
148
+ - bin/antaeus-cli
149
+ - lib/antaeus-sdk.rb
150
+ - lib/antaeus-sdk/api_client.rb
151
+ - lib/antaeus-sdk/api_info.rb
152
+ - lib/antaeus-sdk/config.rb
153
+ - lib/antaeus-sdk/exception.rb
154
+ - lib/antaeus-sdk/exceptions/approval_change_failed.rb
155
+ - lib/antaeus-sdk/exceptions/authentication_failure.rb
156
+ - lib/antaeus-sdk/exceptions/checkin_change_failed.rb
157
+ - lib/antaeus-sdk/exceptions/checkout_change_failed.rb
158
+ - lib/antaeus-sdk/exceptions/immutable_instance.rb
159
+ - lib/antaeus-sdk/exceptions/immutable_modification.rb
160
+ - lib/antaeus-sdk/exceptions/invalid_api_client.rb
161
+ - lib/antaeus-sdk/exceptions/invalid_config_data.rb
162
+ - lib/antaeus-sdk/exceptions/invalid_entity.rb
163
+ - lib/antaeus-sdk/exceptions/invalid_input.rb
164
+ - lib/antaeus-sdk/exceptions/invalid_options.rb
165
+ - lib/antaeus-sdk/exceptions/invalid_property.rb
166
+ - lib/antaeus-sdk/exceptions/invalid_where_query.rb
167
+ - lib/antaeus-sdk/exceptions/login_required.rb
168
+ - lib/antaeus-sdk/exceptions/missing_api_client.rb
169
+ - lib/antaeus-sdk/exceptions/missing_entity.rb
170
+ - lib/antaeus-sdk/exceptions/missing_path.rb
171
+ - lib/antaeus-sdk/exceptions/new_instance_with_id.rb
172
+ - lib/antaeus-sdk/guest_api_client.rb
173
+ - lib/antaeus-sdk/helpers/string.rb
174
+ - lib/antaeus-sdk/resource.rb
175
+ - lib/antaeus-sdk/resource_collection.rb
176
+ - lib/antaeus-sdk/resources/appointment.rb
177
+ - lib/antaeus-sdk/resources/group.rb
178
+ - lib/antaeus-sdk/resources/guest.rb
179
+ - lib/antaeus-sdk/resources/hook.rb
180
+ - lib/antaeus-sdk/resources/location.rb
181
+ - lib/antaeus-sdk/resources/remote_application.rb
182
+ - lib/antaeus-sdk/resources/user.rb
183
+ - lib/antaeus-sdk/user_api_client.rb
184
+ - lib/antaeus-sdk/version.rb
185
+ homepage: https://github.com/knuedge/antaeus-sdk-ruby
186
+ licenses:
187
+ - MIT
188
+ metadata: {}
189
+ post_install_message: Thanks for installing the Antaeus Ruby SDK!
190
+ rdoc_options: []
191
+ require_paths:
192
+ - lib
193
+ required_ruby_version: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: '2.0'
198
+ required_rubygems_version: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ requirements: []
204
+ rubyforge_project:
205
+ rubygems_version: 2.5.1
206
+ signing_key:
207
+ specification_version: 4
208
+ summary: Antaeus Guest Management SDK
209
+ test_files: []