Class: OpenActive::DatasetSite::Settings

Inherits:
Object
  • Object
show all
Defined in:
lib/openactive/dataset_site/settings.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**params) ⇒ Settings

Returns a new instance of Settings.



4
5
6
7
8
9
10
11
12
# File 'lib/openactive/dataset_site/settings.rb', line 4

def initialize(**params)
  params.each do |k, v|
    setter_method = "#{k}="

    raise ArgumentError, "Unrecognised field #{k}" unless respond_to?(setter_method)

    public_send(setter_method, v)
  end
end

Instance Attribute Details

#background_image_urlObject

Returns the value of attribute background_image_url.



28
29
30
# File 'lib/openactive/dataset_site/settings.rb', line 28

def background_image_url
  @background_image_url
end

#data_feed_typesObject

Returns the value of attribute data_feed_types.



35
36
37
# File 'lib/openactive/dataset_site/settings.rb', line 35

def data_feed_types
  @data_feed_types
end

#dataset_discussion_urlObject

Returns the value of attribute dataset_discussion_url.



17
18
19
# File 'lib/openactive/dataset_site/settings.rb', line 17

def dataset_discussion_url
  @dataset_discussion_url
end

#dataset_documentation_urlObject

Returns the value of attribute dataset_documentation_url.



18
19
20
# File 'lib/openactive/dataset_site/settings.rb', line 18

def dataset_documentation_url
  @dataset_documentation_url
end

#dataset_languagesObject

Returns the value of attribute dataset_languages.



19
20
21
# File 'lib/openactive/dataset_site/settings.rb', line 19

def dataset_languages
  @dataset_languages
end

#dataset_site_urlObject

Returns the value of attribute dataset_site_url.



16
17
18
# File 'lib/openactive/dataset_site/settings.rb', line 16

def dataset_site_url
  @dataset_site_url
end

#date_first_publishedObject

Returns the value of attribute date_first_published.



29
30
31
# File 'lib/openactive/dataset_site/settings.rb', line 29

def date_first_published
  @date_first_published
end

#open_data_feed_base_urlObject

Returns the value of attribute open_data_feed_base_url.



14
15
16
# File 'lib/openactive/dataset_site/settings.rb', line 14

def open_data_feed_base_url
  @open_data_feed_base_url
end

#organisation_emailObject

Returns the value of attribute organisation_email.



24
25
26
# File 'lib/openactive/dataset_site/settings.rb', line 24

def organisation_email
  @organisation_email
end

Returns the value of attribute organisation_legal_entity.



22
23
24
# File 'lib/openactive/dataset_site/settings.rb', line 22

def organisation_legal_entity
  @organisation_legal_entity
end

#organisation_logo_urlObject

Returns the value of attribute organisation_logo_url.



26
27
28
# File 'lib/openactive/dataset_site/settings.rb', line 26

def organisation_logo_url
  @organisation_logo_url
end

#organisation_nameObject

Returns the value of attribute organisation_name.



21
22
23
# File 'lib/openactive/dataset_site/settings.rb', line 21

def organisation_name
  @organisation_name
end

#organisation_plain_text_descriptionObject

Returns the value of attribute organisation_plain_text_description.



23
24
25
# File 'lib/openactive/dataset_site/settings.rb', line 23

def organisation_plain_text_description
  @organisation_plain_text_description
end

#organisation_urlObject

Returns the value of attribute organisation_url.



25
26
27
# File 'lib/openactive/dataset_site/settings.rb', line 25

def organisation_url
  @organisation_url
end

#platform_nameObject

Returns the value of attribute platform_name.



31
32
33
# File 'lib/openactive/dataset_site/settings.rb', line 31

def platform_name
  @platform_name
end

#platform_software_versionObject

Returns the value of attribute platform_software_version.



33
34
35
# File 'lib/openactive/dataset_site/settings.rb', line 33

def platform_software_version
  @platform_software_version
end

#platform_urlObject

Returns the value of attribute platform_url.



32
33
34
# File 'lib/openactive/dataset_site/settings.rb', line 32

def platform_url
  @platform_url
end

Instance Method Details

#data_downloadsObject



67
68
69
70
71
72
73
74
75
76
# File 'lib/openactive/dataset_site/settings.rb', line 67

def data_downloads
  data_feed_types.map do |feed_type|
    OpenActive::Models::DataDownload.new(
      name: feed_type.name,
      additional_type: feed_type.same_as,
      encoding_format: "application/vnd.openactive.rpde+json; version=1",
      content_url: open_data_feed_base_url + feed_type.default_feed_path,
    )
  end
end

#data_feed_descriptionsObject



37
38
39
40
41
# File 'lib/openactive/dataset_site/settings.rb', line 37

def data_feed_descriptions
  data_feed_types.map do |description|
    description.respond_to?(:display_name) ? description.display_name : description
  end.uniq
end

#data_feed_descriptions_sentenceObject



47
48
49
# File 'lib/openactive/dataset_site/settings.rb', line 47

def data_feed_descriptions_sentence
  data_feed_descriptions.to_sentence.downcase
end

#descriptionObject



61
62
63
64
65
# File 'lib/openactive/dataset_site/settings.rb', line 61

def description
  "Near real-time availability and rich descriptions relating to the "\
        "#{data_feed_descriptions_sentence} available from "\
        "#{organisation_name}"
end

#keywordsObject



51
52
53
54
55
56
57
58
59
# File 'lib/openactive/dataset_site/settings.rb', line 51

def keywords
  [
    *data_feed_descriptions,
    "Activities",
    "Sports",
    "Physical Activity",
    "OpenActive"
  ]
end

#nameObject



43
44
45
# File 'lib/openactive/dataset_site/settings.rb', line 43

def name
  "#{organisation_name} #{data_feed_descriptions.to_sentence}"
end

#to_datasetObject

rubocop:disable Metrics/MethodLength



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/openactive/dataset_site/settings.rb', line 78

def to_dataset # rubocop:disable Metrics/MethodLength
  dataset = OpenActive::Models::Dataset.new(
    id: dataset_site_url,
    url: dataset_site_url,
    name: name,
    description: description,
    keywords: keywords,
    license: "https://creativecommons.org/licenses/by/4.0/",
    discussion_url: dataset_discussion_url,
    documentation: dataset_documentation_url,
    in_language: dataset_languages,
    schema_version: "https://www.openactive.io/modelling-opportunity-data/2.0/",
    publisher: OpenActive::Models::Organization.new(
      name: organisation_name,
      legal_name: organisation_legal_entity,
      description: organisation_plain_text_description,
      email: organisation_email,
      url: organisation_url,
      logo: OpenActive::Models::ImageObject.new(
        url: organisation_logo_url,
      ),
    ),
    date_modified: DateTime.now.new_offset(0),
    background_image: OpenActive::Models::ImageObject.new(
      url: background_image_url,
    ),
    distribution: data_downloads,
    date_published: date_first_published,
  )

  if platform_name && !platform_name.empty?
    dataset.booking_service = OpenActive::Models::BookingService.new(
      name: platform_name,
      url: platform_url,
      software_version: platform_software_version,
    )
  end

  dataset
end