protolink 0.2.6 → 0.2.7

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/lib/protolink.rb CHANGED
@@ -2,6 +2,7 @@ require 'protolink/protonet'
2
2
  require 'protolink/channel'
3
3
  require 'protolink/user'
4
4
  require 'protolink/listen'
5
+ require 'protolink/node'
5
6
 
6
7
  module Protolink
7
8
  class Error < StandardError; end
@@ -1,12 +1,14 @@
1
1
  module Protolink
2
2
  class Channel
3
- attr_reader :id, :name, :description
3
+ attr_reader :id, :name, :description, :global, :uuid
4
4
 
5
5
  def initialize(connection, attributes = {})
6
6
  @connection = connection
7
7
  @id = attributes['id']
8
8
  @name = attributes['name']
9
9
  @description = attributes['description']
10
+ @global = attributes['global']
11
+ @uuid = attributes['uuid']
10
12
  @loaded = false
11
13
  end
12
14
 
@@ -0,0 +1,24 @@
1
+ module Protolink
2
+ class Node
3
+ attr_reader :id, :uuid, :name, :description
4
+
5
+ def initialize(connection, attributes = {})
6
+ @connection = connection
7
+ @id = attributes['id']
8
+ @uuid = attributes['uuid']
9
+ @name = attributes['name']
10
+ @description = attributes['description']
11
+ @loaded = false
12
+ end
13
+
14
+ def coupled?
15
+ connection.get("/api/v1/couplings/#{id}")
16
+ end
17
+
18
+ protected
19
+ def connection
20
+ @connection
21
+ end
22
+
23
+ end
24
+ end
@@ -17,11 +17,11 @@ module Protolink
17
17
  # * +:password+: your api users password
18
18
  # * +:proxy+: a hash with your proxy options (e.g. {:uri => 'http://user:pass@example.com', :port => 8800})
19
19
  #
20
- def self.open(uri, username, password, proxy = nil)
20
+ def self.open(uri, username = nil, password = nil, proxy = nil)
21
21
  # this allows you to use the httparty class helpers (base_uri...) with multiple connections
22
22
  clazz = self.dup
23
23
  clazz.base_uri(uri)
24
- clazz.basic_auth(username, password)
24
+ clazz.basic_auth(username, password) if username && password
25
25
  if proxy
26
26
  clazz.http_proxy(proxy[:uri], proxy[:port])
27
27
  end
@@ -32,7 +32,7 @@ module Protolink
32
32
 
33
33
  # Get an array of all the available channels
34
34
  def channels
35
- get('/api/v1/channels.json').map do |channel|
35
+ get('/api/v1/channels').map do |channel|
36
36
  Channel.new(self, channel)
37
37
  end
38
38
  end
@@ -43,7 +43,8 @@ module Protolink
43
43
  description = options[:description]
44
44
  display_name = options[:display_name]
45
45
  skip_autosubscribe = options[:skip_autosubscribe]
46
- post('/api/v1/channels', :body => { :name => name, :description => description, :display_name => display_name, :skip_autosubscribe => skip_autosubscribe } )
46
+ global = options[:global]
47
+ post('/api/v1/channels', :body => { :name => name, :description => description, :display_name => display_name, :skip_autosubscribe => skip_autosubscribe, :global => global } )
47
48
  find_channel_by_name(name)
48
49
  end
49
50
 
@@ -59,7 +60,12 @@ module Protolink
59
60
 
60
61
  # Find a Channel by name
61
62
  def find_channel_by_name(name)
62
- response = get("/api/v1/channels/#{name}")
63
+ response = get("/api/v1/channels/find_by_name/#{name}")
64
+ Channel.new(self, response) if response
65
+ end
66
+
67
+ def find_channel_by_uuid(uuid)
68
+ response = get("/api/v1/channels/find_by_uuid/#{uuid}")
63
69
  Channel.new(self, response) if response
64
70
  end
65
71
 
@@ -73,6 +79,14 @@ module Protolink
73
79
  Channel.new(self, response) if response
74
80
  end
75
81
 
82
+ def global_channels
83
+ response = get('/api/v1/channels?global=true')
84
+
85
+ response && response.map do |channel|
86
+ Channel.new(self, channel)
87
+ end
88
+ end
89
+
76
90
  # USERS
77
91
 
78
92
  # Get an array of all the available users
@@ -118,11 +132,23 @@ module Protolink
118
132
 
119
133
  # LISTENS
120
134
  def create_listen(user_id, channel_id)
121
- post('/api/v1/listens', :body => {:user_id => user_id, :channel_id => channel_id } )
135
+ channel_query = channel_id.to_s.match("-") ? {:channel_uuid => channel_id} : {:channel_id => channel_id}
136
+ post('/api/v1/listens', :body => {:user_id => user_id}.merge(channel_query) )
122
137
  end
123
138
 
124
139
  def destroy_listen(user_id, channel_id)
125
- delete('/api/v1/listens', :body => {:user_id => user_id, :channel_id => channel_id } )
140
+ channel_query = channel_id.match("-") ? {:channel_uuid => channel_id} : {:channel_id => channel_id}
141
+ delete('/api/v1/listens', :body => {:user_id => user_id}.merge(channel_query) )
142
+ end
143
+
144
+ def couple(node_data)
145
+ response = post("/api/v1/couplings", :body => {:node_data => node_data})
146
+ [User.new(self, response[0]), response[1]] if response
147
+ end
148
+
149
+ def node
150
+ response = get("/api/v1/nodes/1")
151
+ Node.new(self, response) if response
126
152
  end
127
153
 
128
154
  [:get, :post, :update, :delete].each do |method|
@@ -1,6 +1,6 @@
1
1
  module Protolink
2
2
  class User
3
- attr_reader :id, :name, :login, :email, :avatar_url, :external_profile_url
3
+ attr_reader :id, :name, :login, :email, :avatar_url, :external_profile_url, :communication_token, :node_id
4
4
 
5
5
  def initialize(connection, attributes = {})
6
6
  @connection = connection
@@ -9,7 +9,9 @@ module Protolink
9
9
  @login = attributes['login']
10
10
  @email = attributes['email']
11
11
  @avatar_url = attributes['avatar_url']
12
+ @node_id = attributes['node_id']
12
13
  @external_profile_url = attributes['external_profile_url']
14
+ @communication_token = attributes['communication_token']
13
15
  @loaded = false
14
16
  end
15
17
 
@@ -1,3 +1,3 @@
1
1
  module Protolink
2
- VERSION = '0.2.6' unless defined?(::Protolink::VERSION)
2
+ VERSION = '0.2.7' unless defined?(::Protolink::VERSION)
3
3
  end
data/protolink.gemspec CHANGED
@@ -26,14 +26,14 @@ Gem::Specification.new do |s|
26
26
 
27
27
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
28
  s.add_runtime_dependency(%q<crack>, [">= 0"])
29
- s.add_runtime_dependency(%q<httparty>, ["~> 0.5.1"])
29
+ s.add_runtime_dependency(%q<httparty>, ["~> 0.7.4"])
30
30
  else
31
31
  s.add_dependency(%q<crack>, [">= 0"])
32
- s.add_dependency(%q<httparty>, ["~> 0.5.1"])
32
+ s.add_dependency(%q<httparty>, ["~> 0.7.4"])
33
33
  end
34
34
  else
35
35
  s.add_dependency(%q<crack>, [">= 0"])
36
- s.add_dependency(%q<httparty>, ["~> 0.5.1"])
36
+ s.add_dependency(%q<httparty>, ["~> 0.7.4"])
37
37
  end
38
38
  end
39
39
 
data/test/all_tests.rb CHANGED
@@ -8,8 +8,8 @@ require 'ruby-debug'
8
8
  Debugger.start
9
9
  # change this if you need to connect to another server
10
10
  PTN_SERVER = "http://localhost:3000"
11
- PTN_USER = "dude"
12
- PTN_PASS = "geheim"
11
+ PTN_USER = "test_suite"
12
+ PTN_PASS = "testtest"
13
13
 
14
14
  class TestAll < Test::Unit::TestCase
15
15
 
@@ -20,15 +20,15 @@ class TestAll < Test::Unit::TestCase
20
20
  user_4 = protonet.find_user_by_login("test_3")
21
21
 
22
22
  channel = protonet.find_rendezvous(user_3.id, user_1.id)
23
- channel.delete!
23
+ channel && channel.delete!
24
24
 
25
25
  user_1.delete!
26
26
  user_3.delete!
27
27
  user_4.delete!
28
- channel = protonet.find_channel_by_name("test_foobar")
29
- channel.delete!
30
- channel = protonet.find_channel_by_name("test_foobar_2")
31
- channel.delete!
28
+ ["test_foobar", "test_foobar_2", "global"].each do |channel|
29
+ protonet.find_channel_by_name(channel).delete! rescue nil
30
+ end
31
+
32
32
  end
33
33
 
34
34
  def test_all
@@ -79,5 +79,11 @@ class TestAll < Test::Unit::TestCase
79
79
 
80
80
  rendezvous = protonet.create_rendezvous(user_3.id, user_1.id)
81
81
  assert_equal [user_1.id, user_3.id], rendezvous.listener.map {|u| u.id.to_i}.sort
82
+
83
+ channel_1 = protonet.create_channel(:name => "global", :skip_autosubscribe => true, :global => true)
84
+ assert_equal true, channel_1.global
85
+
86
+ assert_equal channel_1.id, protonet.global_channels.first.id
87
+ assert_equal 1, protonet.global_channels.size
82
88
  end
83
89
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protolink
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 6
10
- version: 0.2.6
9
+ - 7
10
+ version: 0.2.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Bj\xC3\xB6rn B. Dorra"
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-30 00:00:00 +02:00
19
+ date: 2011-10-11 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -41,12 +41,12 @@ dependencies:
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- hash: 9
44
+ hash: 11
45
45
  segments:
46
46
  - 0
47
- - 5
48
- - 1
49
- version: 0.5.1
47
+ - 7
48
+ - 4
49
+ version: 0.7.4
50
50
  type: :runtime
51
51
  version_requirements: *id002
52
52
  description: A Ruby API for interfacing with Protonet, the next-gen internet infrastructure. Truly social and people-powered.
@@ -68,6 +68,7 @@ files:
68
68
  - lib/protolink.rb
69
69
  - lib/protolink/channel.rb
70
70
  - lib/protolink/listen.rb
71
+ - lib/protolink/node.rb
71
72
  - lib/protolink/protonet.rb
72
73
  - lib/protolink/user.rb
73
74
  - lib/protolink/version.rb