prx_client 0.0.2 → 0.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.
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