flexipass 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7353ebe300c9abc909c840d1a6be3057d80abaf49841186cb1b3399a4cd73912
4
- data.tar.gz: 6cfa445710501c907d550d05d8f63ae546a89c3ba0ea199fe604e27c61f7d516
3
+ metadata.gz: aa9180bcd9e5f4de80776f1e6e58d46e07b1554becc568f0516d483f1f70ad01
4
+ data.tar.gz: 511b937fe43d4074213f2f5e1f5b0b88ce4f85121138d54f0da697ed22d53d4c
5
5
  SHA512:
6
- metadata.gz: eb285a773a52917e8e35131385e67abed093ae4670f0e5e8642de216f31a6339fc13da33d1ed10d735dd87a21178bbf24d982ccb645483f0ccca78dbf0de9d93
7
- data.tar.gz: 750b8754b734b1d0d813fc62864412af259c2a37300b84e036c9d5d2f915705fa18f9d693667ee845f22ad6626123a0764ba0dbb13a07a415eb5aaf19aab10be
6
+ metadata.gz: 013eb6052866d041514a2dcb747c97f1546ff28b74e6039a0799a031ffac8c1881c13a691461956ee5357cab2eb522ca62d8cc146f59429987c560da32abfe30
7
+ data.tar.gz: baed27e1fd15d18d051727f5a8421d2de3fe2dd28f6687a6c7111fd7906370878fc4bddd4e97cb0e7e2aa48a5ac6eaac0ef1cb35d002bb4bb2f0932943ad304b
@@ -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
@@ -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
@@ -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
@@ -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"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flexipass
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
5
5
  end
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.3
4
+ version: 0.1.5
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-20 00:00:00.000000000 Z
11
+ date: 2024-07-25 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
@@ -118,8 +132,7 @@ homepage: https://github.com/kellenkyros/flexipass
118
132
  licenses:
119
133
  - MIT
120
134
  metadata:
121
- homepage_uri: https://github.com/kellenkyros/flexipass
122
- source_code_uri: https://github.com/kellenkyros/flexipass
135
+ documentation_uri: https://www.rubydoc.info/gems/flexipass/0.1.5
123
136
  post_install_message:
124
137
  rdoc_options: []
125
138
  require_paths: