prx_client 0.0.2
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/lib/prx/client/version.rb +5 -0
- data/lib/prx/client.rb +64 -0
- data/lib/prx/model/account.rb +21 -0
- data/lib/prx/model/audio_file.rb +57 -0
- data/lib/prx/model/audio_version.rb +31 -0
- data/lib/prx/model/base.rb +45 -0
- data/lib/prx/model/network.rb +21 -0
- data/lib/prx/model/piece.rb +62 -0
- data/lib/prx/model/series.rb +11 -0
- data/lib/prx/model/user.rb +17 -0
- data/lib/prx/model.rb +8 -0
- data/lib/prx/representer/account_representer.rb +18 -0
- data/lib/prx/representer/audio_file_representer.rb +21 -0
- data/lib/prx/representer/audio_version_representer.rb +21 -0
- data/lib/prx/representer/network_representer.rb +17 -0
- data/lib/prx/representer/piece_representer.rb +43 -0
- data/lib/prx/representer/series_representer.rb +16 -0
- data/lib/prx/representer/user_representer.rb +19 -0
- data/lib/prx_client.rb +14 -0
- data/prx_client.gemspec +31 -0
- data/test/helper.rb +9 -0
- data/test/test_account.rb +20 -0
- data/test/test_audio_file.rb +24 -0
- data/test/test_audio_version.rb +27 -0
- data/test/test_client.rb +59 -0
- data/test/test_network.rb +21 -0
- data/test/test_piece.rb +41 -0
- data/test/test_series.rb +20 -0
- data/test/test_user.rb +20 -0
- metadata +185 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/prx/client.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'prx/client/version'
|
2
|
+
require 'prx/model'
|
3
|
+
|
4
|
+
module PRX
|
5
|
+
module Client
|
6
|
+
|
7
|
+
class << self
|
8
|
+
|
9
|
+
include PRX::Model
|
10
|
+
|
11
|
+
attr_accessor :key, :secret, :scheme, :host, :port, :version, :token, :client_options, :access_token_options
|
12
|
+
|
13
|
+
# get information about the current user
|
14
|
+
def me
|
15
|
+
access_token.get('/me', default_options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def piece_create(piece)
|
19
|
+
client_options[:multipart] = true
|
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
|
+
end
|
24
|
+
|
25
|
+
def client_options; @client_options ||= {}; end
|
26
|
+
def access_token_options; @access_token_options ||= {}; end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def create_url(path)
|
31
|
+
"/api/#{version}/#{path}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def client
|
35
|
+
options = client_options.clone
|
36
|
+
options[:site] = site unless options.has_key?(:site)
|
37
|
+
OAuth2::Client.new(key, secret, {:site=>site}) do |b|
|
38
|
+
|
39
|
+
b.request :multipart # if options[:multipart]
|
40
|
+
b.request :url_encoded
|
41
|
+
b.request :json
|
42
|
+
|
43
|
+
# b.response :logger
|
44
|
+
|
45
|
+
b.adapter :net_http
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def access_token
|
50
|
+
OAuth2::AccessToken.new(client, token, access_token_options.clone)
|
51
|
+
end
|
52
|
+
|
53
|
+
def site
|
54
|
+
"#{scheme || 'http'}://#{host}:#{port}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def default_options
|
58
|
+
{'Accept' => 'application/json'}
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'prx/representer/account_representer'
|
2
|
+
|
3
|
+
module PRX
|
4
|
+
module Model
|
5
|
+
class Account < PRX::Model::Base
|
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
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'prx/representer/audio_file_representer'
|
2
|
+
|
3
|
+
module PRX
|
4
|
+
module Model
|
5
|
+
class AudioFile < PRX::Model::Base
|
6
|
+
|
7
|
+
include PRX::Representer::AudioFileRepresenter
|
8
|
+
|
9
|
+
def file=(f)
|
10
|
+
super
|
11
|
+
prepare_file_upload if f
|
12
|
+
self.file
|
13
|
+
end
|
14
|
+
|
15
|
+
def prepare_file_upload
|
16
|
+
if self.file.is_a?(String)
|
17
|
+
uri = URI.parse(@file)
|
18
|
+
if uri.scheme.blank? || (uri.scheme == 'file')
|
19
|
+
self.file = Faraday::UploadIO.new(uri.path, self.content_type)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(*args)
|
25
|
+
self.content_type = 'audio/mpeg'
|
26
|
+
super
|
27
|
+
self
|
28
|
+
end
|
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
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'prx/representer/audio_version_representer'
|
2
|
+
|
3
|
+
module PRX
|
4
|
+
module Model
|
5
|
+
class AudioVersion < PRX::Model::Base
|
6
|
+
|
7
|
+
include PRX::Representer::AudioVersionRepresenter
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super
|
11
|
+
self.audio_files ||= []
|
12
|
+
end
|
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
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
|
4
|
+
module PRX
|
5
|
+
module Model
|
6
|
+
class Base
|
7
|
+
|
8
|
+
include Roar::Representer::JSON
|
9
|
+
|
10
|
+
# attr_accessor :id, :link
|
11
|
+
|
12
|
+
def initialize(*args)
|
13
|
+
return unless args
|
14
|
+
if args[0].is_a?(Hash)
|
15
|
+
args[0].each{|k,v| self.send("#{k.to_s}=", v)}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
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
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'prx/representer/network_representer'
|
2
|
+
|
3
|
+
module PRX
|
4
|
+
module Model
|
5
|
+
class Network < PRX::Model::Base
|
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
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'prx/representer/piece_representer'
|
2
|
+
|
3
|
+
module PRX
|
4
|
+
module Model
|
5
|
+
class Piece < PRX::Model::Base
|
6
|
+
|
7
|
+
include PRX::Representer::PieceRepresenter
|
8
|
+
|
9
|
+
def initialize(*args)
|
10
|
+
super
|
11
|
+
self.audio_versions ||= []
|
12
|
+
self.networks ||= []
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_audio(audio={})
|
16
|
+
if self.audio_versions.size < 1
|
17
|
+
self.audio_versions << AudioVersion.new(:label=>'Piece Audio')
|
18
|
+
end
|
19
|
+
self.audio_versions[0].audio_files << AudioFile.new(audio)
|
20
|
+
end
|
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
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'prx/representer/user_representer'
|
2
|
+
|
3
|
+
module PRX
|
4
|
+
module Model
|
5
|
+
class User < PRX::Model::Base
|
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
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/prx/model.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
require 'roar/representer/feature/hypermedia'
|
4
|
+
|
5
|
+
module PRX
|
6
|
+
module Representer
|
7
|
+
module AccountRepresenter
|
8
|
+
include Roar::Representer::JSON
|
9
|
+
include Roar::Representer::Feature::Hypermedia
|
10
|
+
|
11
|
+
property :id
|
12
|
+
property :name
|
13
|
+
property :path
|
14
|
+
property :type
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
require 'roar/representer/feature/hypermedia'
|
4
|
+
|
5
|
+
module PRX
|
6
|
+
module Representer
|
7
|
+
module AudioFileRepresenter
|
8
|
+
include Roar::Representer::JSON
|
9
|
+
include Roar::Representer::Feature::Hypermedia
|
10
|
+
|
11
|
+
property :id
|
12
|
+
property :label
|
13
|
+
property :file
|
14
|
+
property :content_type
|
15
|
+
property :size
|
16
|
+
property :status
|
17
|
+
property :length
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
require 'roar/representer/feature/hypermedia'
|
4
|
+
require 'prx/model'
|
5
|
+
|
6
|
+
module PRX
|
7
|
+
module Representer
|
8
|
+
module AudioVersionRepresenter
|
9
|
+
include Roar::Representer::JSON
|
10
|
+
include Roar::Representer::Feature::Hypermedia
|
11
|
+
|
12
|
+
property :id
|
13
|
+
property :label
|
14
|
+
|
15
|
+
collection :audio_files,
|
16
|
+
:class => PRX::Model::AudioFile,
|
17
|
+
:extend => PRX::Representer::AudioFileRepresenter
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
require 'roar/representer/feature/hypermedia'
|
4
|
+
|
5
|
+
module PRX
|
6
|
+
module Representer
|
7
|
+
module NetworkRepresenter
|
8
|
+
include Roar::Representer::JSON
|
9
|
+
include Roar::Representer::Feature::Hypermedia
|
10
|
+
|
11
|
+
property :id
|
12
|
+
property :name
|
13
|
+
property :path
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
require 'roar/representer/feature/hypermedia'
|
4
|
+
require 'prx/model'
|
5
|
+
|
6
|
+
module PRX
|
7
|
+
module Representer
|
8
|
+
module PieceRepresenter
|
9
|
+
include Roar::Representer::JSON
|
10
|
+
include Roar::Representer::Feature::Hypermedia
|
11
|
+
|
12
|
+
property :id
|
13
|
+
property :title
|
14
|
+
property :short_description
|
15
|
+
property :description
|
16
|
+
property :account_id
|
17
|
+
property :published_at
|
18
|
+
property :created_at
|
19
|
+
property :produced_on
|
20
|
+
property :episode_number
|
21
|
+
property :length
|
22
|
+
|
23
|
+
property :promos,
|
24
|
+
:class => PRX::Model::AudioVersion,
|
25
|
+
:extend => PRX::Representer::AudioVersionRepresenter
|
26
|
+
|
27
|
+
property :account, :class => PRX::Model::Account, :extend => PRX::Representer::AccountRepresenter
|
28
|
+
|
29
|
+
property :series,
|
30
|
+
:class => PRX::Model::Series,
|
31
|
+
:extend => PRX::Representer::SeriesRepresenter
|
32
|
+
|
33
|
+
collection :audio_versions,
|
34
|
+
:class => PRX::Model::AudioVersion,
|
35
|
+
:extend => PRX::Representer::AudioVersionRepresenter
|
36
|
+
|
37
|
+
collection :networks,
|
38
|
+
:class => PRX::Model::Network,
|
39
|
+
:extend => PRX::Representer::NetworkRepresenter
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'roar/representer'
|
2
|
+
require 'roar/representer/json'
|
3
|
+
require 'roar/representer/feature/hypermedia'
|
4
|
+
|
5
|
+
module PRX
|
6
|
+
module Representer
|
7
|
+
module SeriesRepresenter
|
8
|
+
include Roar::Representer::JSON
|
9
|
+
include Roar::Representer::Feature::Hypermedia
|
10
|
+
|
11
|
+
property :id
|
12
|
+
property :title
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
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 UserRepresenter
|
8
|
+
include Roar::Representer::JSON
|
9
|
+
include Roar::Representer::Feature::Hypermedia
|
10
|
+
|
11
|
+
property :id
|
12
|
+
property :login
|
13
|
+
property :email
|
14
|
+
property :first_name
|
15
|
+
property :last_name
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/prx_client.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'i18n'
|
2
|
+
require 'oauth2'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require 'active_support'
|
6
|
+
require 'active_support/core_ext'
|
7
|
+
require 'active_support/core_ext/module'
|
8
|
+
require 'active_support/core_ext/module/aliasing'
|
9
|
+
require 'active_support/json/encoding'
|
10
|
+
require 'active_support/all'
|
11
|
+
|
12
|
+
require "prx/client"
|
13
|
+
require "prx/model"
|
14
|
+
|
data/prx_client.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "prx/client/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "prx_client"
|
7
|
+
s.version = PRX::Client::VERSION
|
8
|
+
s.authors = ["Andrew Kuklewicz"]
|
9
|
+
s.email = ["andrew@prx.org"]
|
10
|
+
s.homepage = "http://labs.prx.org"
|
11
|
+
s.summary = %q{Client for PRX OAuth2 API (v2) }
|
12
|
+
|
13
|
+
s.files = `git ls-files`.split("\n")
|
14
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
|
18
|
+
# s.add_runtime_dependency "iconv"
|
19
|
+
s.add_runtime_dependency 'yajl-ruby'
|
20
|
+
s.add_runtime_dependency "i18n"
|
21
|
+
s.add_runtime_dependency "json"
|
22
|
+
s.add_runtime_dependency "activesupport"
|
23
|
+
s.add_runtime_dependency "oauth2"
|
24
|
+
s.add_runtime_dependency "roar"
|
25
|
+
|
26
|
+
# specify any dependencies here; for example:
|
27
|
+
s.add_development_dependency "rake"
|
28
|
+
s.add_development_dependency "test-unit"
|
29
|
+
s.add_development_dependency 'fakeweb'
|
30
|
+
|
31
|
+
end
|
data/test/helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestAccount < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
a = PRX::Model::Account.new(:name=>'n', :id=>1)
|
10
|
+
assert a.is_a?(PRX::Model::Account)
|
11
|
+
assert_equal a.name, 'n'
|
12
|
+
assert_equal a.id, 1
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_to_hash
|
16
|
+
a = PRX::Model::Account.new(:name=>'n', :id=>1)
|
17
|
+
assert_equal a.to_hash, {"name"=>"n", "id"=>1}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestAudioFile < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
af = PRX::Model::AudioFile.new(:id=>1, :label=>'l', :size=>3000, :length=>30, :status=>'new', :content_type=>'audio/wav' )
|
10
|
+
assert af.is_a?(PRX::Model::AudioFile)
|
11
|
+
assert af.as_json === {"label"=>"l", "size"=>3000, "content_type"=>"audio/wav", "id"=>1, "length"=>30, "status"=>"new"}
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_default_content_type
|
15
|
+
af = PRX::Model::AudioFile.new()
|
16
|
+
assert_equal af.content_type, 'audio/mpeg'
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_prepare_upload
|
20
|
+
af = PRX::Model::AudioFile.new(:file=>'/Users/akuklewicz/test.mp2')
|
21
|
+
assert af.file.is_a?(Faraday::UploadIO)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestAudioVersion < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
af = PRX::Model::AudioVersion.new(:label=>'l')
|
10
|
+
assert af.is_a?(PRX::Model::AudioVersion)
|
11
|
+
assert_equal({"label"=>"l", "audio_files"=>[]}.to_json, af.to_json)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_initialize_with_audio_files
|
15
|
+
af = PRX::Model::AudioVersion.new(:label=>'l', :audio_files=>[PRX::Model::AudioFile.new(:label=>'af')])
|
16
|
+
assert af.is_a?(PRX::Model::AudioVersion)
|
17
|
+
assert_equal({"label"=>"l", "audio_files"=>[{"label"=>"af", "content_type"=>"audio/mpeg"}]}.to_json, af.to_json)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_initialize_with_json
|
21
|
+
json = {"label"=>"l", "audio_files"=>[{"label"=>"af"}]}.to_json
|
22
|
+
af = PRX::Model::AudioVersion.from_json(json)
|
23
|
+
assert af.is_a?(PRX::Model::AudioVersion)
|
24
|
+
assert af.audio_files.first.is_a?(PRX::Model::AudioFile)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/test/test_client.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
require 'fakeweb'
|
6
|
+
|
7
|
+
class PRX::TestClient < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
PRX::Client.key = 'bZG3A36fAVa9UTD3TlUN2L17Q2loTAN3G9tyOfVF'
|
11
|
+
PRX::Client.secret = 'rGrSNofeaJCbfDjJtYMFAQSfUIQhtr1vkNnaZQvf'
|
12
|
+
PRX::Client.host = "development.prx.org"
|
13
|
+
PRX::Client.port = 3001
|
14
|
+
PRX::Client.version = 'v2'
|
15
|
+
PRX::Client.token = 'Kq4FhSK3arQ7jZ9xhiVAbDKw30mvXv4C8sl2CzCV'
|
16
|
+
|
17
|
+
user = {
|
18
|
+
:uid => '1001',
|
19
|
+
:provider => 'PRX',
|
20
|
+
:info => {
|
21
|
+
:id => '1001',
|
22
|
+
:login => 'test_login',
|
23
|
+
:email => 'test@prx.org',
|
24
|
+
:first_name => 'first',
|
25
|
+
:last_name => 'last'
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
# FakeWeb.register_uri(:get, "http://development.prx.org:3001/me", :body=>user.to_json)
|
30
|
+
#
|
31
|
+
# FakeWeb.register_uri(:post, "http://development.prx.org:3001/api/v2/pieces", :body=>{}.to_json)
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
# def test_me
|
36
|
+
# response = PRX::Client.me
|
37
|
+
# puts response.parsed.inspect
|
38
|
+
# end
|
39
|
+
|
40
|
+
def test_piece_create_with_local_file
|
41
|
+
p = PRX::Model::Piece.new(:title=>'test title',
|
42
|
+
:short_description=>'test short description',
|
43
|
+
:description=>'test description',
|
44
|
+
:account=>PRX::Model::Account.new(:id=>8))
|
45
|
+
|
46
|
+
puts p.to_json.inspect
|
47
|
+
p.add_audio(:label=>'test', :file=>'/Users/akuklewicz/test.mp2', :content_type=>'audio/mpeg')
|
48
|
+
response = PRX::Client.piece_create(p)
|
49
|
+
puts response.parsed.inspect
|
50
|
+
end
|
51
|
+
|
52
|
+
# def test_piece_create_with_remote_url
|
53
|
+
# p = PRX::Model::Piece.new(:title=>'test title', :short_description=>'test short description', :description=>'test description', :account_id=>8)
|
54
|
+
# p.add_audio(:label=>'test', :file=>'s3://andrew-s3.prx.org/public/audio_files/118091/Baronowski.mp2', :size=>1)
|
55
|
+
# response = PRX::Client.piece_create(p)
|
56
|
+
# puts response.parsed.inspect
|
57
|
+
# end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestNetwork < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
a = PRX::Model::Network.new(:name=>'n', :id=>1, :path=>'p')
|
10
|
+
assert a.is_a?(PRX::Model::Network)
|
11
|
+
assert_equal a.name, 'n'
|
12
|
+
assert_equal a.id, 1
|
13
|
+
assert_equal a.path, 'p'
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_to_hash
|
17
|
+
a = PRX::Model::Network.new(:name=>'n', :id=>1)
|
18
|
+
assert_equal a.to_hash, {"name"=>"n", "id"=>1}
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/test/test_piece.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestPiece < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
a = PRX::Model::Piece.new(:title=>'t', :id=>1)
|
10
|
+
assert a.is_a?(PRX::Model::Piece)
|
11
|
+
assert_equal a.title, 't'
|
12
|
+
assert_equal a.id, 1
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_initialize_with_account_json
|
16
|
+
a = PRX::Model::Piece.from_json({:title=>'t', :id=>1, :account=>{:id=>2}}.to_json)
|
17
|
+
assert a.account.is_a?(PRX::Model::Account)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_initialize_with_account_object
|
21
|
+
a = PRX::Model::Piece.from_json({:title=>'t', :id=>1, :account=>PRX::Model::Account.new(:id=>2)})
|
22
|
+
assert a.account.is_a?(PRX::Model::Account)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_piece_create_with_local_file
|
26
|
+
p = PRX::Model::Piece.new(:title=>'test title')
|
27
|
+
p.add_audio(:label=>'test', :file=>'/Users/akuklewicz/test.mp2', :content_type=>'audio/mpeg')
|
28
|
+
af = p.audio_versions[0].audio_files[0]
|
29
|
+
assert af.is_a?(PRX::Model::AudioFile)
|
30
|
+
assert af.file.is_a?(Faraday::UploadIO)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_piece_create_with_remote_url
|
34
|
+
p = PRX::Model::Piece.new(:title=>'test title')
|
35
|
+
p.add_audio(:label=>'test', :file=>'s3://andrew-s3.prx.org/test/test_short_download.mp3')
|
36
|
+
af = p.audio_versions[0].audio_files[0]
|
37
|
+
assert af.is_a?(PRX::Model::AudioFile)
|
38
|
+
assert af.file.is_a?(String)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/test/test_series.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestSeries < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
s = PRX::Model::Series.new(:title=>'t', :id=>1)
|
10
|
+
assert s.is_a?(PRX::Model::Series)
|
11
|
+
assert_equal s.title, 't'
|
12
|
+
assert_equal s.id, 1
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_to_hash
|
16
|
+
s = PRX::Model::Series.new(:title=>'t', :id=>1)
|
17
|
+
assert_equal s.to_hash, {"title"=>"t", "id"=>1}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/test/test_user.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
load './helper.rb'
|
2
|
+
require 'prx/client'
|
3
|
+
require 'prx/model'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
class PRX::TestUser < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_initialize
|
9
|
+
s = PRX::Model::User.new(:email=>'t', :id=>1)
|
10
|
+
assert s.is_a?(PRX::Model::User)
|
11
|
+
assert_equal s.email, 't'
|
12
|
+
assert_equal s.id, 1
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_to_hash
|
16
|
+
s = PRX::Model::User.new(:email=>'t', :id=>1)
|
17
|
+
assert_equal s.to_hash, {"email"=>"t", "id"=>1}
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,185 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: prx_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Andrew Kuklewicz
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-22 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: yajl-ruby
|
16
|
+
requirement: &2152944900 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2152944900
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: i18n
|
27
|
+
requirement: &2152943600 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2152943600
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: json
|
38
|
+
requirement: &2152942660 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2152942660
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activesupport
|
49
|
+
requirement: &2152941300 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2152941300
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: oauth2
|
60
|
+
requirement: &2152939900 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2152939900
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: roar
|
71
|
+
requirement: &2152939040 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2152939040
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rake
|
82
|
+
requirement: &2152937740 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2152937740
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: test-unit
|
93
|
+
requirement: &2152936140 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *2152936140
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: fakeweb
|
104
|
+
requirement: &2152935100 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *2152935100
|
113
|
+
description:
|
114
|
+
email:
|
115
|
+
- andrew@prx.org
|
116
|
+
executables: []
|
117
|
+
extensions: []
|
118
|
+
extra_rdoc_files: []
|
119
|
+
files:
|
120
|
+
- .gitignore
|
121
|
+
- Gemfile
|
122
|
+
- Rakefile
|
123
|
+
- lib/prx/client.rb
|
124
|
+
- lib/prx/client/version.rb
|
125
|
+
- lib/prx/model.rb
|
126
|
+
- lib/prx/model/account.rb
|
127
|
+
- lib/prx/model/audio_file.rb
|
128
|
+
- lib/prx/model/audio_version.rb
|
129
|
+
- lib/prx/model/base.rb
|
130
|
+
- lib/prx/model/network.rb
|
131
|
+
- lib/prx/model/piece.rb
|
132
|
+
- lib/prx/model/series.rb
|
133
|
+
- lib/prx/model/user.rb
|
134
|
+
- lib/prx/representer/account_representer.rb
|
135
|
+
- lib/prx/representer/audio_file_representer.rb
|
136
|
+
- lib/prx/representer/audio_version_representer.rb
|
137
|
+
- lib/prx/representer/network_representer.rb
|
138
|
+
- lib/prx/representer/piece_representer.rb
|
139
|
+
- lib/prx/representer/series_representer.rb
|
140
|
+
- lib/prx/representer/user_representer.rb
|
141
|
+
- lib/prx_client.rb
|
142
|
+
- prx_client.gemspec
|
143
|
+
- test/helper.rb
|
144
|
+
- test/test_account.rb
|
145
|
+
- test/test_audio_file.rb
|
146
|
+
- test/test_audio_version.rb
|
147
|
+
- test/test_client.rb
|
148
|
+
- test/test_network.rb
|
149
|
+
- test/test_piece.rb
|
150
|
+
- test/test_series.rb
|
151
|
+
- test/test_user.rb
|
152
|
+
homepage: http://labs.prx.org
|
153
|
+
licenses: []
|
154
|
+
post_install_message:
|
155
|
+
rdoc_options: []
|
156
|
+
require_paths:
|
157
|
+
- lib
|
158
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
160
|
+
requirements:
|
161
|
+
- - ! '>='
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
|
+
none: false
|
166
|
+
requirements:
|
167
|
+
- - ! '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
requirements: []
|
171
|
+
rubyforge_project:
|
172
|
+
rubygems_version: 1.8.10
|
173
|
+
signing_key:
|
174
|
+
specification_version: 3
|
175
|
+
summary: Client for PRX OAuth2 API (v2)
|
176
|
+
test_files:
|
177
|
+
- test/helper.rb
|
178
|
+
- test/test_account.rb
|
179
|
+
- test/test_audio_file.rb
|
180
|
+
- test/test_audio_version.rb
|
181
|
+
- test/test_client.rb
|
182
|
+
- test/test_network.rb
|
183
|
+
- test/test_piece.rb
|
184
|
+
- test/test_series.rb
|
185
|
+
- test/test_user.rb
|