Module: Poms

Defined in:
lib/poms.rb,
lib/poms/errors.rb,
lib/poms/fields.rb,
lib/poms/version.rb,
lib/poms/api/auth.rb,
lib/poms/api/uris.rb,
lib/poms/timestamp.rb,
lib/poms/api/client.rb,
lib/poms/api/search.rb,
lib/poms/api/request.rb,
lib/poms/api/response.rb,
lib/poms/fields/media.rb,
lib/poms/configuration.rb,
lib/poms/api/uris/media.rb,
lib/poms/fields/details.rb,
lib/poms/api/json_client.rb,
lib/poms/fields/schedule.rb,
lib/poms/api/uris/schedule.rb,
lib/poms/api/drivers/net_http.rb,
lib/poms/api/pagination_client.rb

Overview

The version

Defined Under Namespace

Modules: Api, Errors, Fields, Timestamp Classes: Configuration

Constant Summary collapse

VERSION =
'2.4.0'.freeze

Class Method Summary collapse

Class Method Details

.configureObject



21
22
23
24
25
26
# File 'lib/poms.rb', line 21

def configure
  @config = Configuration.new do |config|
    yield config if block_given?
  end
  nil
end

.descendants(mid, search_params = {}) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/poms.rb', line 57

def descendants(mid, search_params = {})
  Api::PaginationClient.execute(build_request(
    method: :post,
    uri: Api::Uris::Media.descendants(config.base_uri, mid),
    body: Api::Search.build(search_params)
  ))
end

.fetch(arg) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/poms.rb', line 49

def fetch(arg)
  Api::JsonClient.execute(build_request(
    method: :post,
    uri: Api::Uris::Media.multiple(config.base_uri),
    body: Array(arg)
  ))
end

.first(mid) ⇒ Hash?

Returns the first result for a mid if it is not an error.

Parameters:

  • mid (String)

    MID to find in POMS

Returns:

  • (Hash, nil)


32
33
34
35
36
# File 'lib/poms.rb', line 32

def first(mid)
  first!(mid)
rescue Errors::HttpMissingError
  nil
end

.first!(mid) ⇒ Object

Like ‘first`, but raises `Api::Client::HttpMissingError` when the requested MID could not be found.

Parameters:

  • mid (String)

Raises:

  • Api::Client::HttpMissingError



43
44
45
46
47
# File 'lib/poms.rb', line 43

def first!(mid)
  Api::JsonClient.execute(build_request(
    uri: Api::Uris::Media.single(config.base_uri, mid)
  ))
end

.members(mid) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/poms.rb', line 65

def members(mid)
  Api::PaginationClient.execute(build_request(
    method: :post,
    uri: Api::Uris::Media.members(config.base_uri, mid),
    body: Api::Search.empty
  ))
end

.merged_seriesHash

Gets the merged serie mids as a hash. Expects a JSON response from the server with a ‘map` key.

Returns:

  • (Hash)

    a hash with old_mid => new_mid pairs



77
78
79
80
81
# File 'lib/poms.rb', line 77

def merged_series
  Api::JsonClient.execute(build_request(
    uri: Api::Uris::Media.redirects(config.base_uri)
  )).fetch('map')
end

.reset_configObject



101
102
103
# File 'lib/poms.rb', line 101

def reset_config
  @config = nil
end

.scheduled_next(channel) ⇒ Object

Fetches the event for the next broadcast on a given channel

Parameters:

  • channel

    The channel name



95
96
97
98
99
# File 'lib/poms.rb', line 95

def scheduled_next(channel)
  Api::JsonClient.execute(build_request(
    uri: Api::Uris::Schedule.next(config.base_uri, channel)
  )).fetch('items').first
end

.scheduled_now(channel) ⇒ Object

Fetches the event for current broadcast on the given channel

Parameters:

  • channel

    The channel name



86
87
88
89
90
# File 'lib/poms.rb', line 86

def scheduled_now(channel)
  Api::JsonClient.execute(build_request(
    uri: Api::Uris::Schedule.now(config.base_uri, channel)
  )).fetch('items').first
end