prx_client 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/lib/prx/client/version.rb +1 -1
  2. data/lib/prx/client.rb +6 -11
  3. data/lib/prx/model/account.rb +2 -12
  4. data/lib/prx/model/audio_file.rb +7 -32
  5. data/lib/prx/model/audio_version.rb +2 -17
  6. data/lib/prx/model/base.rb +1 -27
  7. data/lib/prx/model/license.rb +13 -0
  8. data/lib/prx/model/network.rb +2 -12
  9. data/lib/prx/model/piece.rb +2 -40
  10. data/lib/prx/model/producer.rb +11 -0
  11. data/lib/prx/model/series.rb +2 -2
  12. data/lib/prx/model/user.rb +2 -8
  13. data/lib/prx/model.rb +2 -0
  14. data/lib/prx/representer/full/account_representer.rb +18 -0
  15. data/lib/prx/representer/full/audio_file_representer.rb +23 -0
  16. data/lib/prx/representer/full/audio_version_representer.rb +30 -0
  17. data/lib/prx/representer/full/license_representer.rb +19 -0
  18. data/lib/prx/representer/full/network_representer.rb +18 -0
  19. data/lib/prx/representer/full/piece_representer.rb +79 -0
  20. data/lib/prx/representer/full/producer_representer.rb +24 -0
  21. data/lib/prx/representer/full/series_representer.rb +18 -0
  22. data/lib/prx/representer/full/user_representer.rb +18 -0
  23. data/lib/prx/representer/min/account_representer.rb +20 -0
  24. data/lib/prx/representer/min/network_representer.rb +19 -0
  25. data/lib/prx/representer/min/series_representer.rb +18 -0
  26. data/lib/prx/representer/min/user_representer.rb +21 -0
  27. data/lib/prx/representer.rb +15 -0
  28. data/lib/prx_client.rb +1 -3
  29. data/test/test_audio_file.rb +2 -2
  30. data/test/test_client.rb +14 -12
  31. data/test/test_license.rb +31 -0
  32. data/test/test_piece.rb +4 -4
  33. metadata +159 -101
  34. data/lib/prx/representer/account_representer.rb +0 -18
  35. data/lib/prx/representer/audio_file_representer.rb +0 -21
  36. data/lib/prx/representer/audio_version_representer.rb +0 -21
  37. data/lib/prx/representer/network_representer.rb +0 -17
  38. data/lib/prx/representer/piece_representer.rb +0 -43
  39. data/lib/prx/representer/series_representer.rb +0 -16
  40. data/lib/prx/representer/user_representer.rb +0 -19
@@ -1,5 +1,5 @@
1
1
  module PRX
2
2
  module Client
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
data/lib/prx/client.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'prx/client/version'
2
1
  require 'prx/model'
2
+ require 'prx/representer'
3
3
 
4
4
  module PRX
5
5
  module Client
@@ -7,7 +7,7 @@ module PRX
7
7
  class << self
8
8
 
9
9
  include PRX::Model
10
-
10
+
11
11
  attr_accessor :key, :secret, :scheme, :host, :port, :version, :token, :client_options, :access_token_options
12
12
 
13
13
  # get information about the current user
@@ -18,30 +18,25 @@ module PRX
18
18
  def piece_create(piece)
19
19
  client_options[:multipart] = true
20
20
  access_token.post(create_url('pieces'), :body=>{:piece=>piece.as_json}, 'Content-Type' => 'application/json')
21
- # access_token.post(create_url('pieces'), :body=>{:test=>{:nested=>piece.audio_versions[0].audio_files[0].file}})
22
- # access_token.post(create_url('pieces'), :body=>{:test=>[piece.audio_versions[0].audio_files[0].file]})
23
21
  end
24
22
 
25
23
  def client_options; @client_options ||= {}; end
26
24
  def access_token_options; @access_token_options ||= {}; end
27
-
25
+
28
26
  protected
29
-
27
+
30
28
  def create_url(path)
31
29
  "/api/#{version}/#{path}"
32
30
  end
33
-
31
+
34
32
  def client
35
33
  options = client_options.clone
36
34
  options[:site] = site unless options.has_key?(:site)
37
35
  OAuth2::Client.new(key, secret, {:site=>site}) do |b|
38
-
39
- b.request :multipart # if options[:multipart]
36
+ b.request :multipart
40
37
  b.request :url_encoded
41
38
  b.request :json
42
-
43
39
  # b.response :logger
44
-
45
40
  b.adapter :net_http
46
41
  end
47
42
  end
@@ -1,20 +1,10 @@
1
- require 'prx/representer/account_representer'
1
+ require 'prx/representer/full/account_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class Account < PRX::Model::Base
6
6
 
7
- include PRX::Representer::AccountRepresenter
8
-
9
- # attr_accessor :name
10
- # attr_accessor :type
11
- #
12
- # # relationships
13
- # attr_accessor :networks
14
- #
15
- # def initialize(*args)
16
- # super
17
- # end
7
+ include PRX::Representer::Full::AccountRepresenter
18
8
 
19
9
  end
20
10
  end
@@ -1,22 +1,22 @@
1
- require 'prx/representer/audio_file_representer'
1
+ require 'prx/representer/full/audio_file_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class AudioFile < PRX::Model::Base
6
6
 
7
- include PRX::Representer::AudioFileRepresenter
7
+ include PRX::Representer::Full::AudioFileRepresenter
8
8
 
9
- def file=(f)
9
+ def attach_file=(f)
10
10
  super
11
11
  prepare_file_upload if f
12
- self.file
12
+ self.attach_file
13
13
  end
14
14
 
15
15
  def prepare_file_upload
16
- if self.file.is_a?(String)
17
- uri = URI.parse(@file)
16
+ if self.attach_file && self.attach_file.is_a?(String)
17
+ uri = URI.parse(self.attach_file)
18
18
  if uri.scheme.blank? || (uri.scheme == 'file')
19
- self.file = Faraday::UploadIO.new(uri.path, self.content_type)
19
+ self.attach_file = Faraday::UploadIO.new(uri.path, self.content_type)
20
20
  end
21
21
  end
22
22
  end
@@ -27,31 +27,6 @@ module PRX
27
27
  self
28
28
  end
29
29
 
30
- # attr_accessor :label, :file, :content_type, :size, :status
31
-
32
-
33
- #
34
- # def file=(f)
35
- # @file = f
36
- # check_upload_file
37
- # end
38
- #
39
- # def content_type=(m)
40
- # raise "content_type cannot be blank" if m.blank?
41
- # @content_type = m
42
- # end
43
- #
44
- # def check_upload_file
45
- # if @file.is_a?(String)
46
- # uri = URI.parse(@file)
47
- # if uri.scheme.blank? || (uri.scheme == 'file')
48
- # @file = Faraday::UploadIO.new(uri.path, self.content_type)
49
- # end
50
- # end
51
- # @file
52
- # end
53
-
54
-
55
30
  end
56
31
  end
57
32
  end
@@ -1,31 +1,16 @@
1
- require 'prx/representer/audio_version_representer'
1
+ require 'prx/representer/full/audio_version_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class AudioVersion < PRX::Model::Base
6
6
 
7
- include PRX::Representer::AudioVersionRepresenter
7
+ include PRX::Representer::Full::AudioVersionRepresenter
8
8
 
9
9
  def initialize(*args)
10
10
  super
11
11
  self.audio_files ||= []
12
12
  end
13
13
 
14
- # attr_accessor :label
15
- #
16
- # # relationships
17
- # attr_accessor :audio_files
18
- #
19
- # def initialize(*args)
20
- # super
21
- # @audio_files ||= []
22
- # @json_options = {:include=>['audio_files']}
23
- # end
24
- #
25
- # def audio_files=(afs)
26
- # @promos = Array(afs).collect{|af| AudioFile.new(af) unless af.is_a?(AudioFile)}
27
- # end
28
- #
29
14
  end
30
15
  end
31
16
  end
@@ -6,9 +6,7 @@ module PRX
6
6
  class Base
7
7
 
8
8
  include Roar::Representer::JSON
9
-
10
- # attr_accessor :id, :link
11
-
9
+
12
10
  def initialize(*args)
13
11
  return unless args
14
12
  if args[0].is_a?(Hash)
@@ -16,30 +14,6 @@ module PRX
16
14
  end
17
15
  end
18
16
 
19
- # def as_json_with_class_name(options={})
20
- # options = options.merge(@json_options) if @json_options
21
- # hash = as_json_without_class_name(options)
22
- # hash.delete('json_options')
23
- #
24
- # Array(options[:include]).each do |attribute|
25
- # child_options = {:include_root=>false}
26
- # value = self.send(attribute)
27
- # hash[attribute.to_s] = value.is_a?(Enumerable) ? value.map {|r| r.as_json(child_options)} : value.as_json(child_options)
28
- # end
29
- #
30
- # if options.has_key?(:include_root) && !options[:include_root]
31
- # hash
32
- # else
33
- # {self.class.name.demodulize.underscore.to_sym => hash}
34
- # end
35
- #
36
- # end
37
- # alias_method_chain :as_json, :class_name
38
- #
39
- # def to_request(options={})
40
- # as_json(options)
41
- # end
42
-
43
17
  end
44
18
  end
45
19
  end
@@ -0,0 +1,13 @@
1
+ require 'prx/representer/full/license_representer'
2
+
3
+ module PRX
4
+ module Model
5
+ class License < PRX::Model::Base
6
+ include PRX::Representer::Full::LicenseRepresenter
7
+
8
+ WEBSITE_USAGE = ['as a free MP3 download and stream', 'as a stream only', 'only with permission']
9
+ ALLOW_EDIT = ['only with permission', 'without further permission', 'never']
10
+
11
+ end
12
+ end
13
+ end
@@ -1,20 +1,10 @@
1
- require 'prx/representer/network_representer'
1
+ require 'prx/representer/full/network_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class Network < PRX::Model::Base
6
6
 
7
- include PRX::Representer::AccountRepresenter
8
-
9
- # attr_accessor :name
10
- # attr_accessor :type
11
- #
12
- # # relationships
13
- # attr_accessor :networks
14
- #
15
- # def initialize(*args)
16
- # super
17
- # end
7
+ include PRX::Representer::Full::AccountRepresenter
18
8
 
19
9
  end
20
10
  end
@@ -1,10 +1,10 @@
1
- require 'prx/representer/piece_representer'
1
+ require 'prx/representer/full/piece_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class Piece < PRX::Model::Base
6
6
 
7
- include PRX::Representer::PieceRepresenter
7
+ include PRX::Representer::Full::PieceRepresenter
8
8
 
9
9
  def initialize(*args)
10
10
  super
@@ -19,44 +19,6 @@ module PRX
19
19
  self.audio_versions[0].audio_files << AudioFile.new(audio)
20
20
  end
21
21
 
22
- # attr_accessor :title
23
- # attr_accessor :short_description
24
- # attr_accessor :description
25
- # attr_accessor :published_at
26
- # attr_accessor :created_at
27
- # attr_accessor :produced_on
28
- # attr_accessor :episode_number
29
- # attr_accessor :length
30
- #
31
- # # relationships
32
- # attr_accessor :audio_versions
33
- # attr_accessor :promos
34
- # attr_accessor :account
35
- # attr_accessor :series
36
- #
37
- # def initialize(*args)
38
- # super
39
- # @promos ||= []
40
- # @audio_versions ||= []
41
- # @json_options = {:include=>['audio_versions', 'promos']}
42
- # end
43
- #
44
- # def audio_versions=(avs)
45
- # @audio_versions = Array(avs).collect{|av| AudioVersion.new(av) unless av.is_a?(AudioVersion)}
46
- # end
47
- #
48
- # def promos=(ps)
49
- # @promos = Array(ps).collect{|p| AudioFile.new(p) unless p.is_a?(AudioFile)}
50
- # end
51
- #
52
- # # add an audio asset as a hash
53
- # def add_audio(audio={})
54
- # if audio_versions.size < 1
55
- # audio_versions << AudioVersion.new(:label=>'Piece Audio')
56
- # end
57
- # audio_versions[0].audio_files << AudioFile.new(audio)
58
- # end
59
-
60
22
  end
61
23
  end
62
24
  end
@@ -0,0 +1,11 @@
1
+ require 'prx/representer/full/producer_representer'
2
+
3
+ module PRX
4
+ module Model
5
+ class Producer < PRX::Model::Base
6
+
7
+ include PRX::Representer::Full::ProducerRepresenter
8
+
9
+ end
10
+ end
11
+ end
@@ -1,10 +1,10 @@
1
- require 'prx/representer/series_representer'
1
+ require 'prx/representer/full/series_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class Series < PRX::Model::Base
6
6
 
7
- include PRX::Representer::SeriesRepresenter
7
+ include PRX::Representer::Full::SeriesRepresenter
8
8
 
9
9
  end
10
10
  end
@@ -1,16 +1,10 @@
1
- require 'prx/representer/user_representer'
1
+ require 'prx/representer/full/user_representer'
2
2
 
3
3
  module PRX
4
4
  module Model
5
5
  class User < PRX::Model::Base
6
6
 
7
- include PRX::Representer::UserRepresenter
8
-
9
- # attr_accessor :login, :email, :first_name, :last_name
10
- #
11
- # def initialize(*args)
12
- # super
13
- # end
7
+ include PRX::Representer::Full::UserRepresenter
14
8
 
15
9
  end
16
10
  end
data/lib/prx/model.rb CHANGED
@@ -5,4 +5,6 @@ require "prx/model/audio_version"
5
5
  require "prx/model/network"
6
6
  require "prx/model/series"
7
7
  require "prx/model/user"
8
+ require "prx/model/producer"
9
+ require "prx/model/license"
8
10
  require "prx/model/piece"
@@ -0,0 +1,18 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+ require "prx/representer/min/account_representer"
5
+
6
+ module PRX
7
+ module Representer
8
+ module Full
9
+ module AccountRepresenter
10
+
11
+ include Roar::Representer::JSON
12
+ include Roar::Representer::Feature::Hypermedia
13
+ include PRX::Representer::Min::AccountRepresenter
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,23 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+
5
+ module PRX
6
+ module Representer
7
+ module Full
8
+ module AudioFileRepresenter
9
+ include Roar::Representer::JSON
10
+ include Roar::Representer::Feature::Hypermedia
11
+
12
+ property :id
13
+ property :label
14
+ property :attach_file
15
+ property :content_type
16
+ property :size
17
+ property :status
18
+ property :length
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+ require "prx/representer/full/audio_file_representer"
5
+
6
+ module PRX
7
+ module Representer
8
+ module Full
9
+ module AudioVersionRepresenter
10
+ include Roar::Representer::JSON
11
+ include Roar::Representer::Feature::Hypermedia
12
+
13
+ property :id
14
+ property :label
15
+ property :content_advisory
16
+ property :timing_and_cues
17
+ property :transcript
18
+ property :news_hole_break
19
+ property :floating_break
20
+ property :bottom_of_hour_break
21
+ property :twenty_forty_break
22
+
23
+ collection :audio_files,
24
+ :class => PRX::Model::AudioFile,
25
+ :extend => PRX::Representer::Full::AudioFileRepresenter
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+
5
+ module PRX
6
+ module Representer
7
+ module Full
8
+ module LicenseRepresenter
9
+ include Roar::Representer::JSON
10
+ include Roar::Representer::Feature::Hypermedia
11
+
12
+ property :id
13
+ property :website_usage
14
+ property :allow_edit
15
+ property :additional_terms
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+ require "prx/representer/min/network_representer"
5
+
6
+ module PRX
7
+ module Representer
8
+ module Full
9
+ module NetworkRepresenter
10
+
11
+ include Roar::Representer::JSON
12
+ include Roar::Representer::Feature::Hypermedia
13
+ include PRX::Representer::Min::NetworkRepresenter
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,79 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+
5
+ require "prx/representer/min/account_representer"
6
+ require "prx/representer/min/network_representer"
7
+ require "prx/representer/min/series_representer"
8
+ require "prx/representer/min/user_representer"
9
+
10
+ require "prx/representer/full/audio_version_representer"
11
+ require "prx/representer/full/producer_representer"
12
+ require "prx/representer/full/license_representer"
13
+
14
+ module PRX
15
+ module Representer
16
+ module Full
17
+ module PieceRepresenter
18
+ include Roar::Representer::JSON
19
+ include Roar::Representer::Feature::Hypermedia
20
+
21
+ property :id
22
+ property :title
23
+ property :short_description
24
+ property :description
25
+ property :account_id
26
+ property :published_at
27
+ property :created_at
28
+ property :produced_on
29
+ property :episode_number
30
+ property :length
31
+ property :language
32
+ property :related_website
33
+ property :credits
34
+ property :broadcast_history
35
+ property :intro
36
+ property :outro
37
+ property :allow_comments
38
+ property :is_shareable
39
+ property :point_level
40
+ property :network_only
41
+
42
+ # child models we provide full
43
+ property :promos,
44
+ :class => PRX::Model::AudioVersion,
45
+ :extend => PRX::Representer::Full::AudioVersionRepresenter
46
+
47
+ property :license,
48
+ :class => PRX::Model::License,
49
+ :extend => PRX::Representer::Full::LicenseRepresenter
50
+
51
+ collection :audio_versions,
52
+ :class => PRX::Model::AudioVersion,
53
+ :extend => PRX::Representer::Full::AudioVersionRepresenter
54
+
55
+ collection :producers,
56
+ :class => PRX::Model::Producer,
57
+ :extend => PRX::Representer::Full::ProducerRepresenter
58
+
59
+ # parent models we provide min
60
+ property :creator,
61
+ :class => PRX::Model::User,
62
+ :extend => PRX::Representer::Min::UserRepresenter
63
+
64
+ property :account,
65
+ :class => PRX::Model::Account,
66
+ :extend => PRX::Representer::Min::AccountRepresenter
67
+
68
+ property :series,
69
+ :class => PRX::Model::Series,
70
+ :extend => PRX::Representer::Min::SeriesRepresenter
71
+
72
+ collection :networks,
73
+ :class => PRX::Model::Network,
74
+ :extend => PRX::Representer::Min::NetworkRepresenter
75
+
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,24 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+
5
+ require "prx/representer/min/user_representer"
6
+
7
+ module PRX
8
+ module Representer
9
+ module Full
10
+ module ProducerRepresenter
11
+ include Roar::Representer::JSON
12
+ include Roar::Representer::Feature::Hypermedia
13
+
14
+ property :id
15
+ property :name
16
+ property :email
17
+
18
+ property :user,
19
+ :class => PRX::Model::User,
20
+ :extend => PRX::Representer::Min::UserRepresenter
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+ require "prx/representer/min/series_representer"
5
+
6
+ module PRX
7
+ module Representer
8
+ module Full
9
+ module SeriesRepresenter
10
+
11
+ include Roar::Representer::JSON
12
+ include Roar::Representer::Feature::Hypermedia
13
+ include PRX::Representer::Min::SeriesRepresenter
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+ require "prx/representer/min/user_representer"
5
+
6
+ module PRX
7
+ module Representer
8
+ module Full
9
+ module UserRepresenter
10
+
11
+ include Roar::Representer::JSON
12
+ include Roar::Representer::Feature::Hypermedia
13
+ include PRX::Representer::Min::UserRepresenter
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,20 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+
5
+ module PRX
6
+ module Representer
7
+ module Min
8
+ module AccountRepresenter
9
+ include Roar::Representer::JSON
10
+ include Roar::Representer::Feature::Hypermedia
11
+
12
+ property :id
13
+ property :name
14
+ property :path
15
+ property :type_name, :from=>:type
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ require 'roar/representer'
2
+ require 'roar/representer/json'
3
+ require 'roar/representer/feature/hypermedia'
4
+
5
+ module PRX
6
+ module Representer
7
+ module Min
8
+ module NetworkRepresenter
9
+ include Roar::Representer::JSON
10
+ include Roar::Representer::Feature::Hypermedia
11
+
12
+ property :id
13
+ property :name
14
+ property :path
15
+
16
+ end
17
+ end
18
+ end
19
+ end