antaeus-sdk 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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: []