poms 2.0.1 → 2.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 803e21eff20cb74d25166d66205ff1670fb25b29
4
- data.tar.gz: a80b6ade7269aac4a7b8dcda99b41f17c0c2da9f
3
+ metadata.gz: 159b27be6905d2411787cdf6e467f9740ec7fad8
4
+ data.tar.gz: 383b7e756c3fa5e19a9772aab2321d1f1e3beff2
5
5
  SHA512:
6
- metadata.gz: 26bbcd9773cd870bf7259abd829ec7084e76827ffdb2f874619d95bd6eb91f3c0edcf34ab47a915c0f162bcb2961853a681590b84267bb4234843eb60b7d423b
7
- data.tar.gz: 262cf80bd0b5960b378734e59b4a07f7814a47968685bfded8318e2ec9b1ce52192f0d63daa377f0649fceb33e702f8177b596fd96280249bda0f41021a4d32c
6
+ metadata.gz: 18424ff4b9cde70eb7c8fc88f327364a017546109852c9c5fd9111e2f85abe2f38c9949badcf704d261ae683c2cb88192f52fb1ef0bcb5bc42ac6a0b89aad990
7
+ data.tar.gz: da656995685bcd795fd4e99e149486bb05c6900e976d4151113882476f716439e563ba2be88a1a471868b31d5c51e988d891c0c2cfbc05190b35138c826ee084
data/.rubocop.yml CHANGED
@@ -4,6 +4,7 @@ AllCops:
4
4
  Exclude:
5
5
  - bin/*
6
6
  - poms.gemspec
7
+ - vendor/**/*
7
8
 
8
9
  Style/Documentation:
9
10
  Exclude:
data/.todo.reek CHANGED
@@ -1,4 +1,6 @@
1
1
  ---
2
+ exclude_paths:
3
+ - vendor
2
4
  UncommunicativeVariableName:
3
5
  exclude:
4
6
  - Poms::Fields#available_until
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Poms Release notes
2
2
 
3
+ ## 2.1.0
4
+
5
+ * Allow `schedule_events` to accept a block which allows you to filter the events.
6
+ * The `scheduled_now` and `scheduled_next` functions always return the most recent and upcoming shows. They shouldn't return nil anymore, even if something is not live at the moment (during a commercial break for instance).
7
+
3
8
  ## 2.0.1
4
9
 
5
10
  * Fix search parameter `type`. This didn't get picked up properly before, but is now used in the search.
data/Gemfile CHANGED
@@ -4,5 +4,5 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :development, :test do
7
- require 'pry'
7
+ gem 'pry'
8
8
  end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [ ![Codeship Status for brightin/poms](https://codeship.com/projects/c2baf9b0-ea8d-0132-2258-628e55ad70cc/status?branch=master)](https://codeship.com/projects/83157)
1
+ [![CircleCI](https://circleci.com/gh/brightin/poms.svg?style=svg)](https://circleci.com/gh/brightin/poms)
2
2
 
3
3
  # Poms
4
4
 
data/circle.yml ADDED
@@ -0,0 +1,12 @@
1
+ machine:
2
+ timezone:
3
+ Europe/Amsterdam
4
+ environment:
5
+ POMS_KEY: key
6
+ POMS_ORIGIN: origin
7
+ POMS_SECRET: secret
8
+ test:
9
+ override:
10
+ - bundle exec rubocop
11
+ - bundle exec reek
12
+ - bundle exec rspec
data/lib/poms.rb CHANGED
@@ -87,7 +87,7 @@ module Poms
87
87
  Poms::Api::JsonClient.get(
88
88
  Poms::Api::Uris::Schedule.now(config.base_uri, channel),
89
89
  config.credentials
90
- )
90
+ ).fetch('items').first
91
91
  end
92
92
 
93
93
  # Fetches the event for the next broadcast on a given channel
@@ -97,7 +97,7 @@ module Poms
97
97
  Poms::Api::JsonClient.get(
98
98
  Poms::Api::Uris::Schedule.next(config.base_uri, channel),
99
99
  config.credentials
100
- )
100
+ ).fetch('items').first
101
101
  end
102
102
 
103
103
  def reset_config
@@ -10,15 +10,29 @@ module Poms
10
10
  module_function
11
11
 
12
12
  def now(base_uri, channel)
13
- uri_for_path(base_uri, "/channel/#{channel}/now")
13
+ uri_for_path(
14
+ base_uri,
15
+ "/channel/#{channel}",
16
+ stop: Time.now.iso8601,
17
+ sort: 'desc',
18
+ max: 1
19
+ )
14
20
  end
15
21
 
16
22
  def next(base_uri, channel)
17
- uri_for_path(base_uri, "/channel/#{channel}/next")
23
+ uri_for_path(
24
+ base_uri,
25
+ "/channel/#{channel}",
26
+ start: Time.now.iso8601,
27
+ sort: 'asc',
28
+ max: 1
29
+ )
18
30
  end
19
31
 
20
- def uri_for_path(base_uri, path = nil)
21
- base_uri.merge(path: "#{API_PATH}#{path}")
32
+ def uri_for_path(base_uri, path = nil, query = {})
33
+ uri = base_uri.merge(path: "#{API_PATH}#{path}")
34
+ uri.query_values = query
35
+ uri
22
36
  end
23
37
 
24
38
  private_class_method :uri_for_path
data/lib/poms/fields.rb CHANGED
@@ -71,16 +71,28 @@ module Poms
71
71
  parent.first['index'] if parent.present?
72
72
  end
73
73
 
74
+ # Returns an array of start and end times for the scheduled events for
75
+ # this item. It returns an empty array if no events are found. You can pass
76
+ # in a block to filter the events on data that is not returned, like
77
+ # channel.
78
+ #
79
+ # @param item The Poms hash
74
80
  def schedule_events(item)
75
81
  events = item.fetch('scheduleEvents', [])
76
- events.map do |event|
77
- {
78
- 'starts_at' => Timestamp.to_datetime(event['start']),
79
- 'ends_at' => Timestamp.to_datetime(event['start'] + event['duration'])
80
- }
81
- end
82
+ events = yield(events) if block_given?
83
+ events.map { |event| hash_event(event) }
82
84
  end
83
85
 
86
+ # Turns the event into a hash.
87
+ def hash_event(event)
88
+ {
89
+ 'starts_at' => Timestamp.to_datetime(event.fetch('start')),
90
+ 'ends_at' => Timestamp.to_datetime(event.fetch('start') +
91
+ event.fetch('duration'))
92
+ }
93
+ end
94
+ private_class_method :hash_event
95
+
84
96
  # Poms has arrays of hashes for some types that have a value and type. This
85
97
  # is a way to access those simply.
86
98
  #
@@ -98,7 +110,6 @@ module Poms
98
110
  return unless res
99
111
  res['value']
100
112
  end
101
-
102
113
  private_class_method :value_of_type
103
114
  end
104
115
  end
data/lib/poms/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # The version
2
2
  module Poms
3
- VERSION = '2.0.1'.freeze
3
+ VERSION = '2.1.0'.freeze
4
4
  end
data/poms.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'rubocop-rspec'
27
27
  spec.add_development_dependency 'rubocop'
28
28
  spec.add_development_dependency 'simplecov'
29
+ spec.add_development_dependency 'timecop'
29
30
  spec.add_development_dependency 'vcr'
30
31
  spec.add_development_dependency 'webmock'
31
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Kruijsen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-30 00:00:00.000000000 Z
11
+ date: 2016-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: timecop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: vcr
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -195,11 +209,10 @@ files:
195
209
  - LICENSE.txt
196
210
  - README.md
197
211
  - Rakefile
198
- - bin/ci-run
199
- - bin/ci-setup
200
212
  - bin/reek
201
213
  - bin/rspec
202
214
  - bin/rubocop
215
+ - circle.yml
203
216
  - examples/fetch.rb
204
217
  - examples/search.rb
205
218
  - lib/poms.rb
data/bin/ci-run DELETED
@@ -1,57 +0,0 @@
1
- #!/bin/bash --login
2
- #
3
- # Usage: bin/ci-run [--help|--job N]
4
- #
5
- # Run all tasks required for a Continuous Integration job. Also see ci-setup.
6
- #
7
- # Options:
8
- #
9
- # --job N May be used for CI parallelisation. Use this number to do only part
10
- # of the usual work, for example by invoking different test scripts.
11
- # --help Display this message.
12
- #
13
- # Examples:
14
- #
15
- # Run all the tests for this project:
16
- #
17
- # bin/ci-run
18
- #
19
- # Run only part of the test suite:
20
- #
21
- # bin/ci-run --job 1
22
-
23
- set -e
24
-
25
- # Run the actual tests for this project. The exit code of this function is
26
- # determines the outcome of the CI build.
27
- #
28
- # TODO adapt the Rake command invokation below into something that makes sense for
29
- # your particular project.
30
- run_tests() {
31
- # RVM is not activated in non-login shells, so we do so manually.
32
- RUBY_VERSION=$(cat .ruby-version)
33
- echo "Using Ruby $RUBY_VERSION"
34
- source $(rvm $RUBY_VERSION do rvm env --path)
35
-
36
- set -x
37
- bundle exec rubocop
38
- bundle exec reek
39
- bundle exec rspec
40
- }
41
-
42
- # Print help for this script by printing its top comment block (without the
43
- # comment markers).
44
- show_help() {
45
- awk '/^# Usage/,/^$/' $0 | cut -c 3-
46
- exit 1
47
- }
48
-
49
- if [[ $# -ge 1 ]]
50
- then
51
- case $1 in
52
- "--job" ) run_tests $2;;
53
- * ) show_help;;
54
- esac
55
- else
56
- run_tests
57
- fi
data/bin/ci-setup DELETED
@@ -1,46 +0,0 @@
1
- #!/bin/bash --login
2
- #
3
- # Usage: bin/ci-setup [--help]
4
- #
5
- # Set up a Codeship CI VM for running a test suite. Also see ci-run.
6
- #
7
- # Options:
8
- #
9
- # --help Display this message.
10
-
11
- set -e
12
-
13
- # Perform the steps necessary to set up the CI environment for testing. This
14
- # should include languages, services, package managers, environment, etc.
15
- setup() {
16
- set -x
17
- # Read the required version of Ruby from the Gemfile and use RVM to install it
18
- rvm use $(cat .ruby-version) --install
19
-
20
- # To use Node.js as Javascript runtime, uncomment the following lines.
21
- # nvm install 0.12
22
- # nvm use 0.12
23
-
24
- # If the project has a package.json file and javascript dependencies, you can
25
- # install them here.
26
- # npm install
27
-
28
- # Install Ruby dependencies with Bundler.
29
- bundle install
30
-
31
- set +x
32
- }
33
-
34
- # Print help for this script by printing its top comment block (without the
35
- # comment markers).
36
- show_help() {
37
- awk '/^# Usage/,/^$/' $0 | cut -c 3-
38
- exit 1
39
- }
40
-
41
- if [[ $# -ge 1 ]]
42
- then
43
- show_help
44
- else
45
- setup
46
- fi