Module: Polyseerio::URL

Includes:
Functional::Memo
Defined in:
lib/url_builder.rb

Overview

Functions and constants used for formatting and building resource URIs.

Constant Summary collapse

RoutableResources =

Resources that are mapped to environments.

[
  Enum::Resource::ALERT,
  Enum::Resource::EVENT,
  Enum::Resource::EXPECTATION,
  Enum::Resource::INSTANCE,
  Enum::Resource::TASK
].freeze

Class Method Summary collapse

Class Method Details

.get_base_url(base, protocol, version) ⇒ Object

Generate a base API url.



24
25
26
27
28
# File 'lib/url_builder.rb', line 24

def self.get_base_url(base, protocol, version)
  version ||= Constant::DEFAULT_API_VERSION

  "#{protocol}#{base}/#{version}"
end

.get_resource_path(resource, options = {}) ⇒ Object

Get a resource’s path.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/url_builder.rb', line 31

def self.get_resource_path(resource, options = {})
  environment = ''

  if routable_resource? resource
    if !options.include?(:eid) || options[:eid].nil?
      raise ArgumentError, 'Cannot get routable resource path for'\
        " #{resource} without passing an eid to options."
    end

    environment = format('environments/%s/', options[:eid])
  end

  id = if options.include?(:id) && !options[:id].nil?
         format('/%s', options[:id])
       else
         ''
       end

  format('/%s%s%s', environment, resource, id)
end

.routable_resource?(resource) ⇒ Boolean

Determine if a resource is routable to an environment.

Returns:

  • (Boolean)


19
20
21
# File 'lib/url_builder.rb', line 19

def self.routable_resource?(resource)
  RoutableResources.include? resource
end