arena 0.0.1 → 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.
@@ -1,11 +1,23 @@
1
1
  require "arena/version"
2
2
  require_relative "./arena/client"
3
+ require_relative "./arena/default"
3
4
  require_relative "./arena/configurable"
4
5
 
5
6
  module Arena
6
7
  class << self
8
+ include Arena::Configurable
9
+
10
+ # Delegate to a Arena::Client
11
+ #
12
+ # @return [Arena::Client]
7
13
  def client
8
- Arena::Client
14
+ if @client
15
+ @client
16
+ else
17
+ @client = Arena::Client.new(options)
18
+ end
9
19
  end
10
20
  end
11
21
  end
22
+
23
+ Arena.setup
@@ -7,35 +7,37 @@ module Arena
7
7
  class Client
8
8
  include HTTParty
9
9
  include Arena::Configurable
10
-
11
- class << self
12
10
 
13
- def channel(identifier, options={})
14
- get_json "/channels/#{identifier}", options
15
- end
16
-
17
- def users_channels(id, options={})
18
- get_json "/channels?user=#{id}", options
11
+ def initialize(options={})
12
+ Arena::Configurable.keys.each do |key|
13
+ instance_variable_set(:"@#{key}", options[key] || Arena.instance_variable_get(:"@#{key}"))
19
14
  end
15
+ end
20
16
 
21
- def block(id, options={})
22
- get_json "/blocks/#{id}", options
23
- end
17
+ # Wrapper for v1
18
+ def channel(identifier, options={})
19
+ get_json "/channels/#{identifier}", options
20
+ end
24
21
 
25
- def blocks(identifier, options={})
26
- get_json "/blocks?channel=#{identifier}", options
27
- end
22
+ def users_channels(id, options={})
23
+ get_json "/channels?user=#{id}", options
24
+ end
28
25
 
29
- private
26
+ def block(id, options={})
27
+ get_json "/blocks/#{id}", options
28
+ end
30
29
 
31
- # Perform HTTP GET request and parse the response body
32
- def get_json(path, options)
33
- JSON.parse(
34
- (get "#{Arena::Configurable::BASE_URL}#{path}", options).body
35
- )
36
- end
30
+ def blocks(identifier, options={})
31
+ get_json "/blocks?channel=#{identifier}", options
37
32
  end
38
33
 
34
+ private
35
+
36
+ def get_json(path, options)
37
+ JSON.parse(
38
+ (self.class.get "http://#{@base_domain}/api/#{@api_version}#{path}", options).body
39
+ )
40
+ end
39
41
  end
40
42
 
41
43
  end
@@ -1,8 +1,41 @@
1
1
  module Arena
2
-
3
2
  module Configurable
4
- API_VERSION = "v1"
5
- BASE_URL = "http://are.na/api/#{API_VERSION}"
6
- end
7
3
 
4
+ CONFIG_KEYS = [
5
+ :base_domain,
6
+ :api_version,
7
+ ] unless defined? CONFIG_KEYS
8
+
9
+ attr_accessor *CONFIG_KEYS
10
+
11
+ class << self
12
+ def keys
13
+ @keys ||= CONFIG_KEYS
14
+ end
15
+ end
16
+
17
+ # Allows configuration options
18
+ # to be set in a block
19
+ def configure
20
+ yield self
21
+ self
22
+ end
23
+
24
+ def reset!
25
+ Arena::Configurable.keys.each do |key|
26
+ instance_variable_set(:"@#{key}", Arena::Default.options[key])
27
+ end
28
+ self
29
+ end
30
+
31
+ alias setup reset!
32
+
33
+ private
34
+
35
+ # @return [Hash]
36
+ def options
37
+ Hash[Arena::Configurable.keys.map{|key| [key, instance_variable_get(:"@#{key}")]}]
38
+ end
39
+
40
+ end
8
41
  end
@@ -0,0 +1,21 @@
1
+ module Arena
2
+ module Default
3
+ BASE_DOMAIN = "are.na" unless defined? BASE_DOMAIN
4
+ API_VERSION = "v1" unless defined? API_VERSION
5
+
6
+ class << self
7
+ # @return [Hash]
8
+ def options
9
+ Hash[Arena::Configurable.keys.map{|key| [key, send(key)]}]
10
+ end
11
+
12
+ def api_version
13
+ API_VERSION
14
+ end
15
+
16
+ def base_domain
17
+ BASE_DOMAIN
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Arena
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
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.1
4
+ version: 0.0.2
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-07-09 00:00:00.000000000 Z
12
+ date: 2012-08-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -75,6 +75,7 @@ files:
75
75
  - lib/arena.rb
76
76
  - lib/arena/client.rb
77
77
  - lib/arena/configurable.rb
78
+ - lib/arena/default.rb
78
79
  - lib/arena/version.rb
79
80
  - test/lib/arena/version_test.rb
80
81
  - test/test_helper.rb