rotten_tomatoes 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ae29de64c08ecb7561820f761106f36b99ef903a
4
+ data.tar.gz: 53dc49a42a33695021e048f28330063a663e4ae0
5
+ SHA512:
6
+ metadata.gz: 0dd28d8c41cd574cbb1f340e522d6eb7369c8252513e776673e40fc9c2ac5c0effb59c5c536a6d1e2e5455c94300106d22229071c625e795fb84bbbe266952f4
7
+ data.tar.gz: 0b8b6feadeb9c143e313b34f5d95a1efd307f4fe9cdfa8a274da50cfc7f25c4643b8309beae3668ab5aac471c1ccf2a1651e226d20bd9b1c0205aabe401cedbe
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,20 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.0
5
+ - 2.1.5
6
+ - 2.2.0
7
+ - 2.2.1
8
+ - 2.2.2
9
+ - ruby-head
10
+ - jruby-head
11
+
12
+ before_install:
13
+ - gem update --system
14
+ - gem --version
15
+
16
+ gemfile:
17
+ - Gemfile
18
+
19
+ notifications:
20
+ email: false
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rubygems_api.gemspec
4
+ gemspec
5
+ gem 'rake', group: :test, require: nil
6
+ gem 'minitest', group: :test, require: nil
7
+ gem 'bundler', group: :test, require: nil
8
+ gem 'codeclimate-test-reporter', group: :test, require: nil
9
+ gem 'hurley'
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ [![Build Status](https://travis-ci.org/kkirsche/rotten_tomatoes.svg?branch=master)](https://travis-ci.org/kkirsche/rotten_tomatoes) [![Test Coverage](https://codeclimate.com/github/kkirsche/rotten_tomatoes/badges/coverage.svg)](https://codeclimate.com/github/kkirsche/rotten_tomatoes) [![Code Climate](https://codeclimate.com/github/kkirsche/rotten_tomatoes/badges/gpa.svg)](https://codeclimate.com/github/kkirsche/rotten_tomatoes)
2
+
3
+ # Rotten Tomatoes
4
+
5
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rotten_tomatoes`. To experiment with that code, run `bin/console` for an interactive prompt.
6
+
7
+ TODO: Delete this and the text above, and describe your gem
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'rotten_tomatoes'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install rotten_tomatoes
24
+
25
+ ## Usage
26
+
27
+ $ gem install rotten_tomatoes
28
+
29
+ # your_file.rb
30
+ require 'rotten_tomatoes'
31
+ api_client = RottenTomatoes::Client.new api_key: 'myAPIkey'
32
+ # Start enjoying the Rotten Tomatoes API
33
+
34
+ ## Development
35
+
36
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
37
+
38
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
39
+
40
+ ## Contributing
41
+
42
+ 1. Fork it ( https://github.com/kkirsche/rotten_tomatoes/fork )
43
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
44
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
45
+ 4. Push to the branch (`git push origin my-new-feature`)
46
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test/"
6
+ t.libs << "bin/"
7
+ t.libs << "lib/"
8
+ t.pattern = "test/rotten_tomatoes/**/*_spec.rb"
9
+ end
10
+
11
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "rotten_tomatoes"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,5 @@
1
+ require "rotten_tomatoes/version"
2
+ require "rotten_tomatoes/client"
3
+
4
+ module RottenTomatoes
5
+ end
@@ -0,0 +1,109 @@
1
+ require 'hurley'
2
+ require 'json'
3
+
4
+ module RottenTomatoes
5
+ # The Client class is the interface to the Rotten Tomatoes API
6
+ class Client
7
+ attr_accessor :client
8
+ attr_reader :api_key
9
+
10
+ def initialize(api_key)
11
+ @api_key = api_key
12
+ @client = Hurley::Client.new 'http://api.rottentomatoes.com/api/public/v1.0'
13
+ end
14
+
15
+ def argument_hash(args = {}, symbols = [])
16
+ {}.tap do |hash|
17
+ hash[:apikey] = @api_key
18
+ symbols.map do |sym|
19
+ hash[sym] = args[sym] unless args[sym].nil?
20
+ end
21
+ end
22
+ end
23
+
24
+ def request(args = {})
25
+ response = @client.get(args[:url],
26
+ argument_hash(args[:args] || {},
27
+ args[:symbols] || []))
28
+ JSON.parse(response.body)
29
+ end
30
+
31
+ def movies_search(args = {})
32
+ request url: 'movies.json', args: args, symbols: [:q, :page_limit, :page]
33
+ end
34
+
35
+ def lists_directory
36
+ request url: 'lists.json'
37
+ end
38
+
39
+ def movie_lists_directory
40
+ request url: 'lists/movies.json'
41
+ end
42
+
43
+ def dvd_lists_directory
44
+ request url: 'lists/dvds.json'
45
+ end
46
+
47
+ def box_office_movies(args = {})
48
+ request url: 'lists/movies/box_office.json',
49
+ args: args, symbols: [:limit, :country]
50
+ end
51
+
52
+ def in_theater_movies(args = {})
53
+ request url: 'lists/movies/in_theaters.json',
54
+ args: args, symbols: [:page_limit, :page, :country]
55
+ end
56
+
57
+ def opening_movies(args = {})
58
+ request url: 'lists/movies/opening.json',
59
+ args: args, symbols: [:limit, :country]
60
+ end
61
+
62
+ def upcoming_movies(args = {})
63
+ request url: 'lists/movies/upcoming.json',
64
+ args: args, symbols: [:page_limit, :page, :country]
65
+ end
66
+
67
+ def top_rentals(args = {})
68
+ request url: 'lists/dvds/top_rentals.json',
69
+ args: args, symbols: [:limit, :country]
70
+ end
71
+
72
+ def current_dvd_releases(args = {})
73
+ request url: 'lists/dvds/current_releases.json',
74
+ args: args, symbols: [:page_limit, :page, :country]
75
+ end
76
+
77
+ def new_dvd_releases(args = {})
78
+ request url: 'lists/dvds/new_releases.json',
79
+ args: args, symbols: [:page_limit, :page, :country]
80
+ end
81
+
82
+ def upcoming_dvds(args = {})
83
+ request url: 'lists/dvds/upcoming.json',
84
+ args: args, symbols: [:page_limit, :page, :country]
85
+ end
86
+
87
+ def movie_info(movie_id, args = {})
88
+ request url: "movies/#{movie_id}.json", args: args
89
+ end
90
+
91
+ def movie_cast(movie_id, args = {})
92
+ request url: "movies/#{movie_id}/cast.json", args: args
93
+ end
94
+
95
+ def movie_reviews(movie_id, args = {})
96
+ request url: "movies/#{movie_id}/reviews.json",
97
+ args: args, symbols: [:review_type, :page_limit, :page, :country]
98
+ end
99
+
100
+ def similar_movies(movie_id, args = {})
101
+ request url: "movies/#{movie_id}/similar.json",
102
+ args: args, symbols: [:limit]
103
+ end
104
+
105
+ def movie_alias(args = {})
106
+ request url: 'movie_alias.json', args: args, symbols: [:type, :id]
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,3 @@
1
+ module RottenTomatoes
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rotten_tomatoes/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rotten_tomatoes"
8
+ spec.version = RottenTomatoes::VERSION
9
+ spec.authors = ["Kevin Kirsche"]
10
+ spec.email = ["Kev.Kirsche@gmail.com"]
11
+
12
+ spec.summary = %q{Unofficial Rotten Tomatoes v1 API Wrapper.}
13
+ spec.description = %q{Unofficial wrapper for the complete Rotten Tomatoes v1.0 JSON API. Here, I work to provide developers with a full featured library letting them focus on the important part, their idea.}
14
+ spec.homepage = "https://github.com/kkirsche/rotten_tomatoes"
15
+ spec.license = "MIT"
16
+
17
+ spec.required_ruby_version = '>= 2.0.0'
18
+
19
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.9"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "minitest", "~> 5.6"
27
+ spec.add_development_dependency "codeclimate-test-reporter", "~> 0.4"
28
+ spec.add_runtime_dependency "hurley", "~> 0.1"
29
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rotten_tomatoes
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kevin Kirsche
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-04-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '5.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '5.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: codeclimate-test-reporter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.4'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '0.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: hurley
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
83
+ description: Unofficial wrapper for the complete Rotten Tomatoes v1.0 JSON API. Here,
84
+ I work to provide developers with a full featured library letting them focus on
85
+ the important part, their idea.
86
+ email:
87
+ - Kev.Kirsche@gmail.com
88
+ executables: []
89
+ extensions: []
90
+ extra_rdoc_files: []
91
+ files:
92
+ - .gitignore
93
+ - .travis.yml
94
+ - Gemfile
95
+ - README.md
96
+ - Rakefile
97
+ - bin/console
98
+ - bin/setup
99
+ - lib/rotten_tomatoes.rb
100
+ - lib/rotten_tomatoes/client.rb
101
+ - lib/rotten_tomatoes/version.rb
102
+ - rotten_tomatoes.gemspec
103
+ homepage: https://github.com/kkirsche/rotten_tomatoes
104
+ licenses:
105
+ - MIT
106
+ metadata: {}
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - '>='
114
+ - !ruby/object:Gem::Version
115
+ version: 2.0.0
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ requirements: []
122
+ rubyforge_project:
123
+ rubygems_version: 2.0.14
124
+ signing_key:
125
+ specification_version: 4
126
+ summary: Unofficial Rotten Tomatoes v1 API Wrapper.
127
+ test_files: []
128
+ has_rdoc: