flexipass 0.1.3 → 0.1.4
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 +4 -4
- data/lib/flexipass/client.rb +20 -0
- data/lib/flexipass/company.rb +10 -0
- data/lib/flexipass/configuration.rb +4 -2
- data/lib/flexipass/door.rb +7 -0
- data/lib/flexipass/mobile_key.rb +68 -0
- data/lib/flexipass/version.rb +1 -1
- data/lib/flexipass.rb +13 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30a77fddc6cce4ad68a97f565d5cab887d90f4fc177e295546d899b910c11894
|
4
|
+
data.tar.gz: b8111112a54163738e08b5dbb927dedd568ddf974ae00e131d29bd9c94eb5496
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc429547a93dffc3105af485abe852085a5def8cee5e84b4773689fc3b8420cb8312fbdb0063eceb2b2b6ad604c10d2dac200e86242fbbf1288e25845cd8cfc6
|
7
|
+
data.tar.gz: 79b30e43449408be529566eb63f8a18cca99d3896d29e6afcee695bd6587607d2fda94fa06586844103b7bf0fbad845035d833335e507f466ba568623c291898
|
data/lib/flexipass/client.rb
CHANGED
@@ -2,6 +2,7 @@ require 'faraday'
|
|
2
2
|
require 'base64'
|
3
3
|
|
4
4
|
module Flexipass
|
5
|
+
# The Client class is responsible for making API requests to the Flexipass server.
|
5
6
|
class Client
|
6
7
|
def initialize
|
7
8
|
Flexipass.configuration.validate!
|
@@ -19,18 +20,28 @@ module Flexipass
|
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
23
|
+
# Returns an instance of the MobileKey class.
|
22
24
|
def mobile_key
|
23
25
|
@mobile_key ||= MobileKey.new(self)
|
24
26
|
end
|
25
27
|
|
28
|
+
# Returns an instance of the Door class.
|
26
29
|
def door
|
27
30
|
@door ||= Door.new(self)
|
28
31
|
end
|
29
32
|
|
33
|
+
# Returns an instance of the Company class.
|
30
34
|
def company
|
31
35
|
@company ||= Company.new(self)
|
32
36
|
end
|
33
37
|
|
38
|
+
# Sends a request to the Flexipass server.
|
39
|
+
#
|
40
|
+
# @param method [String] The HTTP method for the request.
|
41
|
+
# @param endpoint [String] The API endpoint.
|
42
|
+
# @param params [Hash] The request parameters.
|
43
|
+
# @return [Hash] The parsed JSON response from the server.
|
44
|
+
# @raise [ApiError] If the API request fails.
|
34
45
|
def send_request(method, endpoint, params = {})
|
35
46
|
response = @conn.send(method.downcase) do |req|
|
36
47
|
req.url endpoint
|
@@ -43,12 +54,21 @@ module Flexipass
|
|
43
54
|
|
44
55
|
private
|
45
56
|
|
57
|
+
# Generates the basic authentication header.
|
58
|
+
#
|
59
|
+
# @return [String] The basic authentication header.
|
46
60
|
def basic_auth_header
|
47
61
|
credentials = "#{Flexipass.configuration.username}:#{Flexipass.configuration.password}"
|
48
62
|
encoded_credentials = Base64.strict_encode64(credentials)
|
49
63
|
"Basic #{encoded_credentials}"
|
50
64
|
end
|
51
65
|
|
66
|
+
# Handles the API response.
|
67
|
+
#
|
68
|
+
# @param response [Faraday::Response] The API response.
|
69
|
+
# @return [Hash] The parsed JSON response if the response status is between 200 and 299.
|
70
|
+
# @return [String] The response body if the JSON parsing fails.
|
71
|
+
# @raise [ApiError] If the response status is not between 200 and 299.
|
52
72
|
def handle_response(response)
|
53
73
|
case response.status
|
54
74
|
when 200..299
|
data/lib/flexipass/company.rb
CHANGED
@@ -1,13 +1,23 @@
|
|
1
1
|
module Flexipass
|
2
|
+
# Represents a company in the Flexipass system.
|
2
3
|
class Company
|
4
|
+
# Initializes a new instance of the Company class.
|
5
|
+
#
|
6
|
+
# @param client [Object] The client object used to communicate with the Flexipass API.
|
3
7
|
def initialize(client)
|
4
8
|
@client = client
|
5
9
|
end
|
6
10
|
|
11
|
+
# Retrieves the details of the company.
|
12
|
+
#
|
13
|
+
# @return [Hash] The company details.
|
7
14
|
def details
|
8
15
|
@client.send_request('GET', '/Flexipass/rest/webapi/getCompanyDetails')
|
9
16
|
end
|
10
17
|
|
18
|
+
# Retrieves the permissions list for the company.
|
19
|
+
#
|
20
|
+
# @return [Array] The list of permissions.
|
11
21
|
def permissions
|
12
22
|
@client.send_request('GET', '/Flexipass/rest/webapi/getPermissionList')
|
13
23
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# lib/flexipass/configuration.rb
|
2
2
|
|
3
3
|
module Flexipass
|
4
|
+
# The `Flexipass` module provides configuration options for the Flexipass gem.
|
4
5
|
class Configuration
|
5
6
|
attr_accessor :username, :password, :company_token, :environment, :enable_logging
|
6
7
|
attr_reader :server_address
|
@@ -18,6 +19,8 @@ module Flexipass
|
|
18
19
|
set_server_address
|
19
20
|
end
|
20
21
|
|
22
|
+
# Validates the configuration options.
|
23
|
+
# Raises a `ConfigurationError` if any required options are missing or if the environment is invalid.
|
21
24
|
def validate!
|
22
25
|
raise ConfigurationError, 'Username must be set' if @username.nil?
|
23
26
|
raise ConfigurationError, 'Password must be set' if @password.nil?
|
@@ -34,9 +37,8 @@ module Flexipass
|
|
34
37
|
PROD_SERVER
|
35
38
|
end
|
36
39
|
end
|
37
|
-
|
38
|
-
|
39
40
|
end
|
40
41
|
|
42
|
+
# Custom error class for configuration-related errors.
|
41
43
|
class ConfigurationError < StandardError; end
|
42
44
|
end
|
data/lib/flexipass/door.rb
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
module Flexipass
|
2
|
+
# Represents a door in the Flexipass system.
|
2
3
|
class Door
|
4
|
+
# Initializes a new instance of the Door class.
|
5
|
+
#
|
6
|
+
# @param client [Object] The client object used to communicate with the Flexipass API.
|
3
7
|
def initialize(client)
|
4
8
|
@client = client
|
5
9
|
end
|
6
10
|
|
11
|
+
# Retrieves a list of doors
|
12
|
+
#
|
13
|
+
# @return [Object] The response object containing the list of doors.
|
7
14
|
def list
|
8
15
|
@client.send_request('GET', '/Flexipass/rest/webapi/getDoorList')
|
9
16
|
end
|
data/lib/flexipass/mobile_key.rb
CHANGED
@@ -1,43 +1,97 @@
|
|
1
1
|
module Flexipass
|
2
|
+
# Represents a mobile key in the Flexipass system.
|
2
3
|
class MobileKey
|
4
|
+
# Initializes a new instance of the MobileKey class.
|
5
|
+
#
|
6
|
+
# @param client [Object] The client object used to communicate with the Flexipass API.
|
3
7
|
def initialize(client)
|
4
8
|
@client = client
|
5
9
|
end
|
6
10
|
|
11
|
+
# Creates a new mobile key.
|
12
|
+
#
|
13
|
+
# @param params [Hash] The parameters for creating the mobile key.
|
14
|
+
# @option params [String] :Name The name of the mobile key holder.
|
15
|
+
# @option params [String] :Surname The surname of the mobile key holder.
|
16
|
+
# @option params [String] :Mail The email of the mobile key holder.
|
17
|
+
# @option params [String] :Door The door associated with the mobile key.
|
18
|
+
# @option params [String] :Checkin_date The check-in date of the mobile key.
|
19
|
+
# @option params [String] :Checkin_time The check-in time of the mobile key.
|
20
|
+
# @option params [String] :Checkout_date The check-out date of the mobile key.
|
21
|
+
# @option params [String] :Checkout_time The check-out time of the mobile key.
|
22
|
+
# @option params [Integer] :MobileKeyType The type of the mobile key (0 or 1).
|
23
|
+
# @raise [ArgumentError] If any required parameters are missing or if the date or time format is invalid.
|
7
24
|
def create(params)
|
8
25
|
validate_params(params)
|
9
26
|
@client.send_request('POST', '/Flexipass/rest/webapi/createMobileKey', params)
|
10
27
|
end
|
11
28
|
|
29
|
+
# Updates an existing mobile key.
|
30
|
+
#
|
31
|
+
# @param mobile_key_id [String] The ID of the mobile key to update.
|
32
|
+
# @param params [Hash] The parameters for updating the mobile key.
|
33
|
+
# @option params [String] :Name The name of the mobile key holder.
|
34
|
+
# @option params [String] :Surname The surname of the mobile key holder.
|
35
|
+
# @option params [String] :Mail The email of the mobile key holder.
|
36
|
+
# @option params [String] :Door The door associated with the mobile key.
|
37
|
+
# @option params [String] :Checkin_date The check-in date of the mobile key.
|
38
|
+
# @option params [String] :Checkin_time The check-in time of the mobile key.
|
39
|
+
# @option params [String] :Checkout_date The check-out date of the mobile key.
|
40
|
+
# @option params [String] :Checkout_time The check-out time of the mobile key.
|
41
|
+
# @option params [Integer] :MobileKeyType The type of the mobile key (0 or 1).
|
42
|
+
# @raise [ArgumentError] If any required parameters are missing or if the date or time format is invalid.
|
12
43
|
def update(mobile_key_id, params)
|
13
44
|
validate_params(params)
|
14
45
|
@client.send_request('PUT', "/Flexipass/rest/webapi/updateMobileKey?mkID=#{mobile_key_id}", params)
|
15
46
|
end
|
16
47
|
|
48
|
+
# Deletes a mobile key.
|
49
|
+
#
|
50
|
+
# @param mobile_key_id [String] The ID of the mobile key to delete.
|
17
51
|
def delete(mobile_key_id)
|
18
52
|
@client.send_request('DELETE', "/Flexipass/rest/webapi/deleteMobileKey?mkID=#{mobile_key_id}")
|
19
53
|
end
|
20
54
|
|
55
|
+
# Lists mobile keys for a specific door.
|
56
|
+
#
|
57
|
+
# @param door [String] The door for which to list mobile keys.
|
58
|
+
# @param params [Hash] The parameters for listing mobile keys.
|
59
|
+
# @option params [String] :StartDate The start date for filtering mobile keys.
|
60
|
+
# @option params [String] :EndDate The end date for filtering mobile keys.
|
61
|
+
# @raise [ArgumentError] If the date format is invalid.
|
21
62
|
def list(door, params)
|
22
63
|
validate_list_params(params)
|
23
64
|
params[:Door] = door
|
24
65
|
@client.send_request('POST', "/Flexipass/rest/webapi/getMobileKeyList", params)
|
25
66
|
end
|
26
67
|
|
68
|
+
# Retrieves details of a mobile key.
|
69
|
+
#
|
70
|
+
# @param mobile_key_id [String] The ID of the mobile key to retrieve details for.
|
27
71
|
def details(mobile_key_id)
|
28
72
|
@client.send_request('GET', "/Flexipass/rest/webapi/getMobileKeyDetails?mkID=#{mobile_key_id}")
|
29
73
|
end
|
30
74
|
|
75
|
+
# Sends an email for a mobile key.
|
76
|
+
#
|
77
|
+
# @param mobile_key_id [String] The ID of the mobile key to send the email for.
|
31
78
|
def send_mail(mobile_key_id)
|
32
79
|
@client.send_request('GET', "/Flexipass/rest/webapi/sendMail?mkID=#{mobile_key_id}")
|
33
80
|
end
|
34
81
|
|
82
|
+
# Sends an SMS for a mobile key.
|
83
|
+
#
|
84
|
+
# @param mobile_key_id [String] The ID of the mobile key to send the SMS for.
|
35
85
|
def send_sms(mobile_key_id)
|
36
86
|
@client.send_request('GET', "/Flexipass/rest/webapi/sendSMS?mkID=#{mobile_key_id}")
|
37
87
|
end
|
38
88
|
|
39
89
|
private
|
40
90
|
|
91
|
+
# Validates the parameters for creating or updating a mobile key.
|
92
|
+
#
|
93
|
+
# @param params [Hash] The parameters to validate.
|
94
|
+
# @raise [ArgumentError] If any required parameters are missing or if the date or time format is invalid.
|
41
95
|
def validate_params(params)
|
42
96
|
required_params = [:Name, :Surname, :Mail, :Door, :Checkin_date, :Checkin_time, :Checkout_date, :Checkout_time, :MobileKeyType]
|
43
97
|
missing_params = required_params - params.keys.map(&:to_sym)
|
@@ -49,6 +103,12 @@ module Flexipass
|
|
49
103
|
validate_mobile_key_type(params[:MobileKeyType])
|
50
104
|
end
|
51
105
|
|
106
|
+
# Validates the date and time format.
|
107
|
+
#
|
108
|
+
# @param date [String] The date to validate.
|
109
|
+
# @param time [String] The time to validate.
|
110
|
+
# @param label [String] The label for the date or time (e.g., "Check-in").
|
111
|
+
# @raise [ArgumentError] If the date or time format is invalid.
|
52
112
|
def validate_date_time(date, time, label)
|
53
113
|
date_format = /^(\d{4}-\d{2}-\d{2})$/
|
54
114
|
time_format = /^(\d{2}:\d{2}:\d{2})$/
|
@@ -63,6 +123,10 @@ module Flexipass
|
|
63
123
|
end
|
64
124
|
end
|
65
125
|
|
126
|
+
# Validates the parameters for listing mobile keys.
|
127
|
+
#
|
128
|
+
# @param params [Hash] The parameters to validate.
|
129
|
+
# @raise [ArgumentError] If the date format is invalid.
|
66
130
|
def validate_list_params(params)
|
67
131
|
date_time_format = /(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})$/
|
68
132
|
|
@@ -75,6 +139,10 @@ module Flexipass
|
|
75
139
|
end
|
76
140
|
end
|
77
141
|
|
142
|
+
# Validates the mobile key type.
|
143
|
+
#
|
144
|
+
# @param type [Integer] The mobile key type.
|
145
|
+
# @raise [ArgumentError] If the mobile key type is invalid.
|
78
146
|
def validate_mobile_key_type(type)
|
79
147
|
unless [0, 1].include?(type)
|
80
148
|
raise ArgumentError, "Invalid MobileKeyType. Must be 0 or 1"
|
data/lib/flexipass/version.rb
CHANGED
data/lib/flexipass.rb
CHANGED
@@ -9,12 +9,25 @@ require 'flexipass/company'
|
|
9
9
|
require 'flexipass/api_error'
|
10
10
|
|
11
11
|
module Flexipass
|
12
|
+
# The main module for Flexipass gem.
|
13
|
+
#
|
14
|
+
# This module provides configuration options for Flexipass.
|
12
15
|
class Error < StandardError; end
|
13
16
|
|
14
17
|
class << self
|
15
18
|
attr_accessor :configuration
|
16
19
|
end
|
17
20
|
|
21
|
+
# Configures Flexipass with the given options.
|
22
|
+
#
|
23
|
+
# Example:
|
24
|
+
# Flexipass.configure do |config|
|
25
|
+
# config.username = 'your_username'
|
26
|
+
# config.password = 'your_password'
|
27
|
+
# config.company_token = 'your_company_token'
|
28
|
+
# config.environment = :development # or :production
|
29
|
+
# config.enable_logging = true # optional, defaults to false
|
30
|
+
# end
|
18
31
|
def self.configure
|
19
32
|
self.configuration ||= Configuration.new
|
20
33
|
yield(configuration)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flexipass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kellen Kyros
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -98,6 +98,20 @@ dependencies:
|
|
98
98
|
- - "~>"
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '1.8'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: yard
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - "~>"
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: 0.9.36
|
108
|
+
type: :development
|
109
|
+
prerelease: false
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - "~>"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: 0.9.36
|
101
115
|
description: A Ruby gem allows you to easily interact with Flexipass APIs
|
102
116
|
email:
|
103
117
|
- kellenkyros@gmail.com
|