trakt 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in trakt.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Daniel Bretoi
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,77 @@
1
+ = Trakt
2
+
3
+ This is a Ruby API for the http://trakt.tv movie, tvshow service.
4
+
5
+ == Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'trakt'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install trakt
18
+
19
+ == Usage
20
+
21
+ All calls return an JSON structure.
22
+
23
+ This is a typical default setup
24
+
25
+ require 'trakt'
26
+ trakt = Trakt.new
27
+ trakt.apikey = 'your_api_key'
28
+ trakt.username = 'your_username'
29
+ trakt.password = 'your_password'
30
+
31
+
32
+ === Settings
33
+
34
+ trakt.account.settings
35
+
36
+ === Searching
37
+
38
+ trakt.search.movies "the shawshank redemption"
39
+ trakt.search.shows "death note"
40
+
41
+ == Examples
42
+
43
+ === Adding all your seen movies from a text file.
44
+
45
+ Adding movies from a text file is a bit hit and miss, so it's best if you
46
+ create a list to add the movies to. You'll have to make a list manually in
47
+ advance since creation isn't supported yet. The list takes a rather odd name.
48
+ The one in the exaple here was created as "From my file".
49
+
50
+ list = trakt.list.add('from-my-file');
51
+ IO.readlines(ENV['HOME']+"/misc/movies.txt").each do |movie|
52
+ result = trakt.search.movies(movie)
53
+ next unless result
54
+ movie = result.first
55
+ next unless movie
56
+ list.add_item(type: :movie, imdb_id: movie['imdb_id'])
57
+ end
58
+
59
+ === Marking shows unseen
60
+
61
+ Example making all episodes of season 4 of winnie the pooh unseen. (You can use
62
+ Trakt::Search.shows("the new adventures of winnie the pooh").first to get the
63
+ imdb_id)
64
+
65
+ episodes = []
66
+ 1.upto(11) { |n|
67
+ episodes << { "season" => 4, "episode" => n }
68
+ }
69
+ Trakt::Show.episode_unseen("imdb_id" => "tt0165052", episodes: episodes)
70
+
71
+ == Contributing
72
+
73
+ 1. Fork it
74
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
75
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
76
+ 4. Push to the branch (`git push origin my-new-feature`)
77
+ 5. Create new Pull Request
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ desc "run all tests"
4
+ task :spec do
5
+ system "bundle exec rspec spec/*_spec.rb"
6
+ end
@@ -0,0 +1,61 @@
1
+ require "trakt/version"
2
+ require 'awesome_print'
3
+ require "json"
4
+ require "excon"
5
+ require "digest"
6
+ require "trakt/connection"
7
+ require "trakt/account"
8
+ require "trakt/list"
9
+ require "trakt/movie"
10
+ require "trakt/search"
11
+ require "trakt/activity"
12
+ require "trakt/calendar"
13
+ require "trakt/show"
14
+ require "trakt/friends"
15
+ require "trakt/movies"
16
+ require "trakt/genres"
17
+
18
+ module Trakt
19
+ class Error < RuntimeError
20
+ end
21
+ end
22
+ module Trakt
23
+ def self.new(*a)
24
+ Trakt.new(*a)
25
+ end
26
+ class Trakt
27
+ attr_accessor :username, :password, :apikey
28
+ def initialize(args={})
29
+ @username = args[:username]
30
+ @password = args[:password]
31
+ @apikey = args[:apikey]
32
+ end
33
+ def account
34
+ @account ||= Account.new self
35
+ end
36
+ def calendar
37
+ @calendar ||= Calendar.new self
38
+ end
39
+ def friends
40
+ @calendar ||= Calendar.new self
41
+ end
42
+ def search
43
+ @search ||= Search.new self
44
+ end
45
+ def list
46
+ @list ||= List.new self
47
+ end
48
+ def movie
49
+ @movie ||= Movie.new self
50
+ end
51
+ def activity
52
+ @activity ||= Activity.new self
53
+ end
54
+ def genres
55
+ @genres ||= Genres.new self
56
+ end
57
+ def show
58
+ @show ||= Show.new self
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,13 @@
1
+ module Trakt
2
+ class Account
3
+ include Connection
4
+ def settings
5
+ require_settings %w|username password apikey|
6
+ post 'account/settings/'
7
+ end
8
+ def test
9
+ require_settings %w|username password apikey|
10
+ post 'account/test/'
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ module Trakt
2
+ # Refer to the api doc on what parameters these functions take. http://trakt.tv/api-docs/activity-community
3
+ # For eaxmple, the current description for community reads:
4
+ #
5
+ # http://api.trakt.tv/activity/community.format/apikey/types/actions/start_ts/end_ts
6
+ #
7
+ # So you just do: <tt>trakt.activity.community(<types>,<actions>,<start_ts>,<end_ts>)</tt>
8
+ class Activity
9
+ include Connection
10
+ def community(*args)
11
+ get_with_args('/activity/community.json/', *args)
12
+ end
13
+ def episodes(*args)
14
+ get_with_args('/activity/episodes.json/', *args)
15
+ end
16
+ def friends(*args)
17
+ get_with_args('/activity/friends.json/', *args)
18
+ end
19
+ def movies(*args)
20
+ get_with_args('/activity/movies.json/', *args)
21
+ end
22
+ def seasons(*args)
23
+ get_with_args('/activity/seasons.json/', *args)
24
+ end
25
+ def shows(*args)
26
+ get_with_args('/activity/shows.json/', *args)
27
+ end
28
+ def user(*args)
29
+ get_with_args('/activity/user.json/', *args)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ module Trakt
2
+ class Calendar
3
+ include Connection
4
+ def premieres(*args)
5
+ get_with_args('/calendar/premieres.json/', *args)
6
+ end
7
+ def shows(*args)
8
+ get_with_args('/calendar/shows.json/', *args)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,52 @@
1
+ module Trakt
2
+ module Connection
3
+ attr_reader :trakt
4
+ def initialize(trakt)
5
+ @trakt = trakt
6
+ end
7
+ def connection
8
+ @connection ||= Excon.new("http://api.trakt.tv");
9
+ end
10
+ def require_settings(required)
11
+ required.each do |setting|
12
+ raise "Required setting #{setting} is missing." unless trakt.send(setting)
13
+ end
14
+ end
15
+ def post(path,body={})
16
+ # all posts have username/password
17
+ body.merge!({
18
+ 'username' => trakt.username,
19
+ 'password' => trakt.password,
20
+ })
21
+ path << '/' unless path[-1] == '/'
22
+ result = connection.post(:path => path + trakt.apikey, :body => body.to_json)
23
+ parse(result)
24
+ end
25
+ def parse(result)
26
+ parsed = JSON.parse result.body
27
+ if parsed.kind_of? Hash and parsed['status'] and parsed['status'] == 'failure'
28
+ raise Error.new(parsed['error'])
29
+ end
30
+ return parsed
31
+ end
32
+ def clean_query(query)
33
+ query.gsub(/[()]/,'').
34
+ gsub(' ','+').
35
+ gsub('&','and').
36
+ gsub('!','').
37
+ chomp
38
+ end
39
+ def get(path,query)
40
+ full_path = File.join(path,trakt.apikey, query);
41
+ full_path.gsub!(%r{/*$},'')
42
+ result = connection.get(:path => full_path)
43
+ parse(result)
44
+ end
45
+ def get_with_args(path,*args)
46
+ require_settings %w|apikey|
47
+ arg_path = *args.compact.map { |t| t.to_s}
48
+ get(path, File.join(arg_path))
49
+ end
50
+ private :get_with_args, :get, :post, :parse, :clean_query, :require, :connection
51
+ end
52
+ end
@@ -0,0 +1,29 @@
1
+ module Trakt
2
+ class Friends
3
+ include Connection
4
+ def add(username)
5
+ require_settings %w|username password apikey|
6
+ post "friends/#{__method__}/", 'friend' => username
7
+ end
8
+ def all
9
+ require_settings %w|username password apikey|
10
+ post 'friends/all/'
11
+ end
12
+ def approve(username)
13
+ require_settings %w|username password apikey|
14
+ post "friends/#{__method__}/", 'friend' => username
15
+ end
16
+ def delete(username)
17
+ require_settings %w|username password apikey|
18
+ post "friends/#{__method__}/", 'friend' => username
19
+ end
20
+ def deny
21
+ require_settings %w|username password apikey|
22
+ post "friends/#{__method__}/", 'friend' => username
23
+ end
24
+ def requests(username)
25
+ require_settings %w|username password apikey|
26
+ post 'friends/requests/'
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,35 @@
1
+ module Trakt
2
+ class List
3
+ include Connection
4
+ # TODO options should be the various options at some point
5
+ attr_accessor :slug, :add_info
6
+ def add(name,options={})
7
+ result = post 'lists/add/', options.merge(:name => name)
8
+ @slug = result['slug']
9
+ @add_info = result
10
+ return self
11
+ end
12
+ def get(slug)
13
+ @slug = slug
14
+ return self
15
+ end
16
+ def add_item(data)
17
+ add_items([data])
18
+ end
19
+ def add_items(data)
20
+ post("lists/items/add/", 'slug' => slug, 'items' => data)
21
+ end
22
+ def item_delete(data)
23
+ items_delete([data])
24
+ end
25
+ def items_delete(data)
26
+ post("lists/items/delete/", 'slug' => slug, 'items' => data)
27
+ end
28
+ def delete
29
+ post "lists/delete/", 'slug' => slug
30
+ end
31
+ def update(options)
32
+ post "lists/update/", options.merge('slug' => slug)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,50 @@
1
+ module Trakt
2
+ class Movie
3
+ include Connection
4
+ def cancelcheckin
5
+ post("/movie/cancelcheckin")
6
+ end
7
+ def cancelwatching
8
+ post("/movie/cancelwatching")
9
+ end
10
+ def checkin(options = {})
11
+ post("/movie/checkin", options)
12
+ end
13
+ def scrobble(options = {})
14
+ post("/movie/scrobble", options)
15
+ end
16
+ def seen(options = {})
17
+ post("/movie/seen", options)
18
+ end
19
+ def library(options = {})
20
+ post("/movie/library", options)
21
+ end
22
+ def related(*args)
23
+ get_with_args('/search/related.json/', *args)
24
+ end
25
+ def shouts(*args)
26
+ get_with_args('/search/shouts.json/', *args)
27
+ end
28
+ def summary(*args)
29
+ get_with_args('/search/summary.json/', *args)
30
+ end
31
+ def unlibrary(options = {})
32
+ post("/movie/unlibrary", options)
33
+ end
34
+ def unseen(options = {})
35
+ post("/movie/unseen", options)
36
+ end
37
+ def unwatchlist(options = {})
38
+ post("/movie/unwatchlist", options)
39
+ end
40
+ def watching(options = {})
41
+ post("/movie/watching", options)
42
+ end
43
+ def watchingnow(*args)
44
+ get_with_args('/search/watchingnow.json/', *args)
45
+ end
46
+ def watchlist(options = {})
47
+ post("/movie/watchlist", options)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,8 @@
1
+ module Trakt
2
+ class Movie
3
+ include Connection
4
+ def find(query)
5
+ get('/search/movies.json/',clean_query(query))
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,25 @@
1
+ module Trakt
2
+ class Search
3
+ include Connection
4
+ def movies(query)
5
+ require_settings %w|apikey|
6
+ get('/search/movies.json/',clean_query(query))
7
+ end
8
+ def shows(query)
9
+ require_settings %w|apikey|
10
+ get('/search/shows.json/',clean_query(query))
11
+ end
12
+ def episode(query)
13
+ require_settings %w|apikey|
14
+ get('/search/episodes.json/',clean_query(query))
15
+ end
16
+ def people(query)
17
+ require_settings %w|apikey|
18
+ get('/search/people.json/',clean_query(query))
19
+ end
20
+ def users(query)
21
+ require_settings %w|apikey|
22
+ get('/search/users.json/',clean_query(query))
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,35 @@
1
+ module Trakt
2
+ class Show
3
+ include Connection
4
+ def episode_unseen(data)
5
+ require_settings %w|username password apikey|
6
+ post('show/episode/unseen/', data)
7
+ end
8
+ def episode_seen(data)
9
+ require_settings %w|username password apikey|
10
+ post('show/episode/seen/', data)
11
+ end
12
+ def seen(data)
13
+ require_settings %w|username password apikey|
14
+ post('show/seen/', data)
15
+ end
16
+ # need to use thetvdb id here since the slug can't be used for unseen
17
+ def unseen(title)
18
+ all = seasons title
19
+ episodes_per_season = {}
20
+ episodes_to_remove = []
21
+ all.each do |season_info|
22
+ season_num = season_info['season']
23
+ next if season_num == 0 # dont need to remove specials
24
+ episodes = season_info['episodes']
25
+ 1.upto(episodes) do |episode|
26
+ episodes_to_remove << { season: season_num, episode: episode }
27
+ end
28
+ end
29
+ episode_unseen tvdb_id: title, episodes: episodes_to_remove
30
+ end
31
+ def seasons(title)
32
+ get('show/seasons.json/', title)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,3 @@
1
+ module Trakt
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Account do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "should get account info" do
13
+ result = trakt.account.settings
14
+ result['message'].should == "All settings for #{trakt.username}"
15
+ end
16
+ it "should preform an account test" do
17
+ result = trakt.account.test
18
+ result['message'].should == "all good!"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Activity do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ context "community" do
13
+ it "should get community activity" do
14
+ result = trakt.activity.community("movie","watching", (Time.now - 300).to_i)
15
+ result['activity'].count.should > 0
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Calendar do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ context "premieres" do
13
+ it "should get premieres" do
14
+ result = trakt.calendar.premieres(20110421, 1)
15
+ result.first['episodes'].first['show']['title'].should == "24 Hour Restaurant Battle"
16
+ end
17
+ end
18
+ context "shows" do
19
+ it "should get shows" do
20
+ result = trakt.calendar.shows(20110416, 1)
21
+ result.first['episodes'].first['show']['title'].should == "Gosick"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Friends do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "add username" do
13
+ pending
14
+ result = trakt.friends.add 'snowfall'
15
+ result['message'].should == "snowfall added, pending their approval"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::List do
5
+ before do
6
+ list = trakt.list.get("testlist")
7
+ list.delete rescue nil
8
+ end
9
+ let(:trakt) do
10
+ details = get_account_details
11
+ trakt = Trakt.new :apikey => details['apikey'],
12
+ :username => details['username'],
13
+ :password => details['password']
14
+ trakt
15
+ end
16
+ it "should add a list" do
17
+ list = trakt.list.add("test-list")
18
+ list.add_info['status'].should == 'success'
19
+ lambda { trakt.list.add("test-list") }.should raise_error("a list already exists with this name")
20
+ end
21
+ it "should get a list" do
22
+ list = trakt.list.get("testlist")
23
+ list.slug.should == 'testlist'
24
+ end
25
+ it "should add a movie" do
26
+ list = trakt.list.add("test-list")
27
+ result = list.add_item :type => :movie, :imdb_id => 'tt0098554'
28
+ result['status'].should == 'success'
29
+ result['inserted'].should == 1
30
+ end
31
+ it "should add movies" do
32
+ list = trakt.list.add("test-list")
33
+ result = list.add_items [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
34
+ result['status'].should == 'success'
35
+ result['inserted'].should == 2
36
+ end
37
+ it "should delete list" do
38
+ list = trakt.list.add("test-list")
39
+ result = list.delete
40
+ result['status'].should == 'success'
41
+ result['message'].should == 'list and items deleted'
42
+ end
43
+ it "should delete an item" do
44
+ list = trakt.list.add("test-list")
45
+ list.add_items [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
46
+ result = list.item_delete :type => :movie, :imdb_id => 'tt0098554'
47
+ result['status'].should == 'success'
48
+ result['message'].should == '1 items deleted'
49
+ end
50
+ it "should delete items" do
51
+ list = trakt.list.add("test-list")
52
+ list.add_items [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
53
+ result = list.items_delete [{:type => :movie, :imdb_id => 'tt0098554'}, {:type => :movie, :imdb_id => 'tt0111161'}]
54
+ result['status'].should == 'success'
55
+ result['message'].should == '2 items deleted'
56
+ end
57
+ it "should update list" do
58
+ list = trakt.list.add("test-list", 'show_numbers' => true)
59
+ list.add_info['show_numbers'].should == true
60
+ result = list.update('show_numbers' => false)
61
+ result['status'].should == 'success'
62
+ result['show_numbers'].should == false
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Movie do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "should mark twelve monkeys" do
13
+ result = trakt.movie.seen movies: [{
14
+ imdb_id: "tt0114746",
15
+ title: "Twelve Monkeys",
16
+ year: 1995,
17
+ plays: 1,
18
+ last_played: 1255960578
19
+ }]
20
+ result['status'].should == 'success'
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,42 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Trakt do
4
+ describe Trakt::Search do
5
+ let(:trakt) do
6
+ details = get_account_details
7
+ trakt = Trakt.new :apikey => details['apikey'],
8
+ :username => details['username'],
9
+ :password => details['password']
10
+ trakt
11
+ end
12
+ it "should find movie uncle buck" do
13
+ result = trakt.search.movies("uncle buck").first
14
+ result['title'].should == 'Uncle Buck'
15
+ result['year'].should == 1989
16
+ result['imdb_id'].should == 'tt0098554'
17
+ end
18
+ it "should find show cowboy bebop" do
19
+ result = trakt.search.shows("cowboy bebop").first
20
+ result['title'].should == 'Cowboy Bebop'
21
+ result['year'].should == 1998
22
+ result['imdb_id'].should == 'tt0213338'
23
+ end
24
+ it "should find episode Lisa the Vegetarian" do
25
+ result = trakt.search.episode("lisa the vegetarian").first
26
+ result['show']['title'].should == 'The Simpsons'
27
+ result['episode']['title'].should == 'Lisa the Vegetarian'
28
+ result['show']['year'].should == 1989
29
+ result['show']['imdb_id'].should == 'tt0096697'
30
+ end
31
+ it "should find actor Eric Bana" do
32
+ result = trakt.search.people("eric bana").first
33
+ result['name'].should == 'Eric Bana'
34
+ result['birthplace'].should == 'Melbourne, Australia'
35
+ end
36
+ it "should find user infodump" do
37
+ result = trakt.search.users("infodump").first
38
+ result['username'].should == 'infodump'
39
+ result['joined'].should == 1320907373
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,9 @@
1
+ require "rspec"
2
+ require "trakt"
3
+ require "awesome_print"
4
+ require "yaml"
5
+
6
+ def get_account_details
7
+ account = IO.read File.dirname(__FILE__) + '/account_details.yml'
8
+ YAML.load(account)
9
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'trakt/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "trakt"
8
+ gem.version = Trakt::VERSION
9
+ gem.authors = ["Daniel Bretoi"]
10
+ gem.email = ["daniel@bretoi.com"]
11
+ gem.description = %q{API for trakt.tv service}
12
+ gem.summary = %q{API for trakt.tv service}
13
+ gem.homepage = ""
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ gem.add_development_dependency "rspec"
20
+ gem.add_development_dependency "awesome_print"
21
+ gem.add_dependency "excon"
22
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: trakt
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Daniel Bretoi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: awesome_print
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: excon
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: API for trakt.tv service
63
+ email:
64
+ - daniel@bretoi.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - LICENSE.txt
72
+ - README.rdoc
73
+ - Rakefile
74
+ - lib/trakt.rb
75
+ - lib/trakt/account.rb
76
+ - lib/trakt/activity.rb
77
+ - lib/trakt/calendar.rb
78
+ - lib/trakt/connection.rb
79
+ - lib/trakt/friends.rb
80
+ - lib/trakt/list.rb
81
+ - lib/trakt/movie.rb
82
+ - lib/trakt/movies.rb
83
+ - lib/trakt/search.rb
84
+ - lib/trakt/show.rb
85
+ - lib/trakt/version.rb
86
+ - spec/account_spec.rb
87
+ - spec/activity_spec.rb
88
+ - spec/calendar_spec.rb
89
+ - spec/friends_spec.rb
90
+ - spec/list_spec.rb
91
+ - spec/movie_spec.rb
92
+ - spec/search_spec.rb
93
+ - spec/spec_helper.rb
94
+ - trakt.gemspec
95
+ homepage: ''
96
+ licenses: []
97
+ post_install_message:
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubyforge_project:
115
+ rubygems_version: 1.8.24
116
+ signing_key:
117
+ specification_version: 3
118
+ summary: API for trakt.tv service
119
+ test_files:
120
+ - spec/account_spec.rb
121
+ - spec/activity_spec.rb
122
+ - spec/calendar_spec.rb
123
+ - spec/friends_spec.rb
124
+ - spec/list_spec.rb
125
+ - spec/movie_spec.rb
126
+ - spec/search_spec.rb
127
+ - spec/spec_helper.rb