arena 0.0.6 → 0.0.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/README.md CHANGED
@@ -16,4 +16,11 @@ Or install it yourself as:
16
16
 
17
17
  ## Usage
18
18
 
19
- TODO
19
+ Register an application at http://dev.are.na
20
+
21
+ ### Configure for personal use
22
+ ```ruby
23
+ Arena.configure do |config|
24
+ config.access_token = 'XXXXXXXXXXXXX'
25
+ end
26
+ ```
@@ -51,11 +51,16 @@ module Arena
51
51
  object_from_response(Arena::User, :get, "/users/#{id}", options)
52
52
  end
53
53
 
54
- # Returns a paginated list of all Channels a User has access to
54
+ # Returns a paginated list of all public Channels a User has access to
55
55
  def user_channels(id, options={})
56
56
  object_from_response(Arena::ChannelResults, :get, "/users/#{id}/channels", options)
57
57
  end
58
58
 
59
+ # All of the authenticated user's Channels
60
+ def account_channels(options={})
61
+ object_from_response(Arena::ChannelResults, :get, "/accounts/channels", options)
62
+ end
63
+
59
64
  # Returns a Search object with an Array for Channels, Blocks and Users
60
65
  def search(query, option={})
61
66
  object_from_response(Arena::SearchResults, :get, "/search?q=#{query}", options)
@@ -1,9 +1,11 @@
1
1
  module Arena
2
2
  class Base
3
3
  attr_reader :attrs
4
+
4
5
  alias to_hash attrs
5
6
 
6
- # Define methods that retrieve the value from an initialized instance variable Hash, using the attribute as a key
7
+ # Define methods that retrieve the value from an initialized instance
8
+ # variable Hash, using the attribute as a key
7
9
  #
8
10
  # @param attrs [Array, Set, Symbol]
9
11
  def self.attr_reader(*attrs)
@@ -5,14 +5,15 @@ require 'arena/entities/image'
5
5
  require 'arena/entities/attachment'
6
6
  require 'arena/entities/embed'
7
7
  require 'arena/creatable'
8
+ require 'arena/connectable'
8
9
 
9
10
  module Arena
10
11
  class Block < Arena::Base
11
12
  include Arena::Creatable
13
+ include Arena::Connectable
12
14
 
13
15
  attr_reader :id, :title, :generated_title, :state, :comment_count, :content,
14
- :content_html, :description, :description_html, :position, :selected,
15
- :connection_id, :connected_at, :connected_by_user_id, :connected_by_username
16
+ :content_html, :description, :description_html, :position, :selected
16
17
 
17
18
  def user
18
19
  @user ||= Arena::User.new(@attrs['user'])
@@ -1,11 +1,13 @@
1
1
  require 'arena/base'
2
2
  require 'arena/creatable'
3
+ require 'arena/connectable'
3
4
  require 'arena/user'
4
5
  require 'arena/block'
5
6
 
6
7
  module Arena
7
8
  class Channel < Arena::Base
8
9
  include Arena::Creatable
10
+ include Arena::Connectable
9
11
 
10
12
  attr_reader :id, :title, :published, :open, :collaboration,
11
13
  :slug, :length, :kind, :status, :user_id, :total_pages,
@@ -20,8 +20,7 @@ module Arena
20
20
  # Performs HTTP GET POST PUT and DELETE requests
21
21
  %w(get post put delete).each do |method|
22
22
  define_method method do |path, options={}|
23
- options = { query: options,
24
- headers: { 'Authorization' => "Bearer #{@access_token}" } }
23
+ options = { query: options, headers: set_headers }
25
24
 
26
25
  request(__method__, path, options)
27
26
  end
@@ -29,17 +28,33 @@ module Arena
29
28
 
30
29
  private
31
30
 
31
+ def set_headers
32
+ if !@access_token.nil?
33
+ { 'Authorization' => "Bearer #{@access_token}" }
34
+ elsif !@auth_token.nil?
35
+ { 'X-AUTH-TOKEN' => @auth_token }
36
+ else
37
+ { }
38
+ end
39
+ end
40
+
41
+ def error?(response)
42
+ !response['status']['code'].nil?
43
+ end
44
+
45
+ def error_message(response)
46
+ "#{response['status']['code']}: #{response['status']['message']} - #{response['status']['description']}"
47
+ end
48
+
32
49
  def request(method, path, options)
33
- JSON.parse self.class.send(method, "http://#{@base_domain}/#{@api_version}#{path}", options).body
50
+ response = JSON.parse self.class.send(method, "http://#{@base_domain}/#{@api_version}#{path}", options).body
51
+
52
+ raise Arena::Error.new(error_message(response)) if error?(response)
53
+
54
+ return response
34
55
 
35
56
  rescue JSON::ParserError, TypeError
36
57
  nil
37
-
38
- rescue Exception => exception
39
- puts exception.inspect
40
- puts exception.backtrace
41
-
42
- raise Arena::Error
43
58
  end
44
59
 
45
60
  end
@@ -1,7 +1,12 @@
1
1
  module Arena
2
2
  module Configurable
3
- attr_writer :application_id, :application_secret, :access_token
4
- attr_accessor :base_domain, :api_version
3
+ attr_accessor :base_domain,
4
+ :api_version
5
+
6
+ attr_writer :application_id,
7
+ :application_secret,
8
+ :access_token,
9
+ :auth_token
5
10
 
6
11
  class << self
7
12
  def keys
@@ -10,7 +15,8 @@ module Arena
10
15
  :api_version,
11
16
  :application_id,
12
17
  :application_secret,
13
- :access_token
18
+ :access_token,
19
+ :auth_token
14
20
  ]
15
21
  end
16
22
  end
@@ -0,0 +1,30 @@
1
+ require 'time'
2
+
3
+ module Arena
4
+ module Connectable
5
+ attr_reader :connection_id
6
+
7
+ def connected_at
8
+ @connected_at ||= Time.parse(@attrs['connected_at']) if connected?
9
+ end
10
+
11
+ def connected_by_different_user?
12
+ user.id != connected_by.id
13
+ end
14
+
15
+ def connected_by
16
+ @connected_by ||= Arena::User.new({
17
+ 'id' => @attrs['connected_by_user_id'],
18
+ 'username' => @attrs['connected_by_username'],
19
+ 'full_name' => @attrs['connected_by_username']
20
+ })
21
+ end
22
+
23
+ private
24
+
25
+ def connected?
26
+ !@attrs['connected_at'].nil?
27
+ end
28
+
29
+ end
30
+ end
@@ -28,6 +28,10 @@ module Arena
28
28
  def access_token
29
29
  ENV['APPLICATION_SECRET']
30
30
  end
31
+
32
+ def auth_token
33
+ ENV['AUTH_TOKEN']
34
+ end
31
35
  end
32
36
  end
33
37
  end
@@ -1,5 +1,5 @@
1
1
  module Arena
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
 
4
4
  def self.version
5
5
  VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arena
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-12 00:00:00.000000000 Z
12
+ date: 2012-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -79,6 +79,7 @@ files:
79
79
  - lib/arena/channel.rb
80
80
  - lib/arena/client.rb
81
81
  - lib/arena/configurable.rb
82
+ - lib/arena/connectable.rb
82
83
  - lib/arena/core_ext/string.rb
83
84
  - lib/arena/creatable.rb
84
85
  - lib/arena/default.rb