croudia 1.0.14 → 1.0.15

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf93c107da3e67e76893d1ad119b53d1b6e111b3
4
- data.tar.gz: 423b2e63ad81479d8d4c1666a99dd084f007a340
3
+ metadata.gz: ba8b2c711483759304f9c6e9d3142c595ba5f8fc
4
+ data.tar.gz: 2b00fe7aa4eed970cedfc9175bd3d49c0bdc1baf
5
5
  SHA512:
6
- metadata.gz: dc0deaa61d80e277e8346209188b63e75cccbc27d5fadacea9ee1abf8d037b3f897560ec64e28bb278f079fa997b569c4e6dbd8d0f99efae32cb8eb92646877e
7
- data.tar.gz: eb4fd9578e55b0c5468dd92776ffb8f871705956457d5acfbc4f198941f2715b51a72471ef28e9615aff210dbe128158ace2838f849bfb15c4eb75510d62a77a
6
+ metadata.gz: 724038816211fd2537c9cc8cbfe00d4476d58f4444318964d7d821f7c5faa15d5e5716358ac52f4155ae932ce64be48b46c3506ab95d3f5b7469b0060316712a
7
+ data.tar.gz: ea16c2207d4eae82ee7d1261f6047f7c7cad0dc2e01b647b2629877977347953b85cebacac57e352868f844505c17963efe927918858d2403fe7870a4bf3a76a
data/.travis.yml CHANGED
@@ -2,3 +2,11 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
+ deploy:
6
+ provider: rubygems
7
+ api_key:
8
+ secure: UZBvpa1if3PwDR7xRI1Hrhzz9pu+jUcbsHuDrMAm8DYdNsiBfja6ZxSDFvF9S+wOtkQFLGzUJS8OXIL/iKar2aCTNZxqrTThehtOqhyGeBog/3omYUp5Hw3hBL3XFbls4cfBQZTRTD/LJHhRdi/bo3tI8aqqU5ulAx4F893KjNs=
9
+ gem: croudia
10
+ on:
11
+ tags: true
12
+ repo: wktk/croudia-gem
@@ -2,19 +2,14 @@ require 'croudia/base'
2
2
 
3
3
  module Croudia
4
4
  class AccessToken < Croudia::Base
5
- KEYS = [
5
+ attr_reader(
6
6
  :access_token,
7
7
  :expires_in,
8
8
  :refresh_token,
9
- :token_type,
10
- ]
11
-
12
- attr_reader(*KEYS)
9
+ :token_type
10
+ )
13
11
 
14
12
  alias :token :access_token
15
-
16
- def to_s
17
- access_token
18
- end
13
+ alias :to_s :access_token
19
14
  end
20
15
  end
data/lib/croudia/base.rb CHANGED
@@ -1,37 +1,71 @@
1
- module Croudia
2
- class Base
3
- class << self
4
- def attr_reader(*attrs)
5
- attrs.each do |attr|
6
- define_method(attr) do
7
- @attrs[attr.to_s] || @attrs[attr.to_sym]
8
- end
9
- end
10
- end
11
- end
12
-
13
- # Initialize a new object
14
- #
15
- # @param attrs [Hash]
16
- # @return [Croudia::Base]
17
- def initialize(attrs = {})
18
- @attrs = attrs || {}
19
- end
20
-
21
- # Fetch an attribute
22
- #
23
- # @param name [String, Symobol]
24
- def [](name)
25
- __send__(name.to_sym)
26
- rescue NoMethodError
27
- nil
28
- end
29
-
30
- # @return [Hash]
31
- def attrs
32
- @attrs
33
- end
34
- alias to_h attrs
35
- alias to_hash attrs
36
- end
37
- end
1
+ module Croudia
2
+ class Base
3
+ class << self
4
+ def attr_reader(*attrs)
5
+ attrs.each do |attr|
6
+ define_method(attr) do
7
+ @attrs[attr.to_s] || @attrs[attr.to_sym]
8
+ end
9
+ end
10
+ end
11
+
12
+ # @param attrs [Hash] { name: Class, name: Class, ... }
13
+ def attr_object_reader(attrs)
14
+ attrs.each_pair do |path, klass|
15
+ path = [path] unless path.is_a?(Array)
16
+ attr = path.join('_').to_sym
17
+
18
+ define_method(path.last) do
19
+ object = instance_variable_get("@#{attr}")
20
+
21
+ unless object
22
+ object_attrs = @attrs
23
+ path.each { |p| object_attrs = object_attrs[p.to_s] }
24
+
25
+ object = if object_attrs.nil?
26
+ nil
27
+ elsif klass.is_a?(Array)
28
+ klass = klass.shift
29
+ object_attrs.map { |o| klass.new(o) }
30
+ else
31
+ klass.new(object_attrs)
32
+ end
33
+
34
+ instance_variable_set("@#{attr}", object)
35
+ end
36
+
37
+ object
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ # Initialize a new object
44
+ #
45
+ # @param attrs [Hash]
46
+ # @return [Croudia::Base]
47
+ def initialize(attrs = {})
48
+ @attrs = attrs || {}
49
+ end
50
+
51
+ # Fetch an attribute
52
+ #
53
+ # @param name [String, Symobol]
54
+ def [](name)
55
+ __send__(name.to_sym)
56
+ rescue NoMethodError
57
+ nil
58
+ end
59
+
60
+ # @return [Hash]
61
+ def attrs
62
+ @attrs
63
+ end
64
+ alias to_h attrs
65
+ alias to_hash attrs
66
+
67
+ def inspect
68
+ "#<#{self.class}:0x#{__id__.abs.to_s(16)} #{@attrs.inspect}>"
69
+ end
70
+ end
71
+ end
@@ -2,20 +2,19 @@ require 'croudia/base'
2
2
 
3
3
  module Croudia
4
4
  class Cursor < Croudia::Base
5
- KEYS = [
5
+ attr_reader(
6
6
  :next_cursor,
7
7
  :next_cursor_str,
8
8
  :previous_cursor,
9
- :previous_cursor_str,
10
- ]
11
-
12
- attr_reader(*KEYS)
9
+ :previous_cursor_str
10
+ )
13
11
 
14
12
  def initialize(key, klass, attrs)
15
13
  if klass.is_a?(Class)
16
- attrs[key.to_s].map! { |element| klass.new(element) }
14
+ singleton_class.attr_object_reader(key => Array(klass))
15
+ else
16
+ singleton_class.attr_reader(key)
17
17
  end
18
- singleton_class.attr_reader(key)
19
18
  super(attrs)
20
19
  end
21
20
 
@@ -3,15 +3,8 @@ require 'croudia/entity/media'
3
3
 
4
4
  module Croudia
5
5
  class Entities < Croudia::Base
6
- KEYS = [
7
- :media,
8
- ]
9
- attr_reader(*KEYS)
10
-
11
- def initialize(attrs)
12
- media = attrs.delete('media')
13
- super(attrs)
14
- @attrs['media'] = Croudia::Entity::Media.new(media) if media
15
- end
6
+ attr_object_reader(
7
+ media: Croudia::Entity::Media
8
+ )
16
9
  end
17
10
  end
@@ -3,11 +3,10 @@ require 'croudia/base'
3
3
  module Croudia
4
4
  module Entity
5
5
  class Media < Croudia::Base
6
- KEYS = [
6
+ attr_reader(
7
7
  :media_url_https,
8
- :type,
9
- ]
10
- attr_reader(*KEYS)
8
+ :type
9
+ )
11
10
  end
12
11
  end
13
12
  end
@@ -2,6 +2,11 @@ require 'croudia/base'
2
2
 
3
3
  module Croudia
4
4
  class Identity < Croudia::Base
5
+ attr_reader(
6
+ :id,
7
+ :id_str
8
+ )
9
+
5
10
  def initialize(*)
6
11
  super
7
12
  raise ArgumentError, 'argument must have an "id" key' unless id
@@ -13,10 +18,5 @@ module Croudia
13
18
  def ==(other)
14
19
  super || self.class == other.class && id == other.id
15
20
  end
16
-
17
- # @return [Integer]
18
- def id
19
- @attrs['id'] || @attrs[:id]
20
- end
21
21
  end
22
22
  end
@@ -1,20 +1,12 @@
1
1
  require 'croudia/base'
2
2
 
3
3
  class Croudia::Relationship < Croudia::Base
4
- KEYS = [
5
- :souorce,
6
- :target,
7
- ]
4
+ attr_object_reader(
5
+ [:relationship, :source] => Croudia::User,
6
+ [:relationship, :target] => Croudia::User
7
+ )
8
8
 
9
9
  def relationship
10
10
  self
11
11
  end
12
-
13
- def source
14
- @source ||= Croudia::User.new(@attrs['relationship']['source'])
15
- end
16
-
17
- def target
18
- @target ||= Croudia::User.new(@attrs['relationship']['target'])
19
- end
20
12
  end
@@ -2,7 +2,7 @@ require 'croudia/base'
2
2
 
3
3
  module Croudia
4
4
  class SearchMetadata < Croudia::Base
5
- KEYS = [
5
+ attr_reader(
6
6
  :completed_in,
7
7
  :count,
8
8
  :max_id,
@@ -11,9 +11,7 @@ module Croudia
11
11
  :query,
12
12
  :refresh_url,
13
13
  :since_id,
14
- :since_ids_str,
15
- ]
16
-
17
- attr_reader(*KEYS)
14
+ :since_ids_str
15
+ )
18
16
  end
19
17
  end
@@ -4,19 +4,9 @@ require 'croudia/status'
4
4
 
5
5
  module Croudia
6
6
  class SearchResults < Croudia::Base
7
- KEYS = [
8
- :search_metadata,
9
- :statuses,
10
- ]
11
-
12
- attr_reader(*KEYS)
13
-
14
- def initialize(attrs)
15
- statuses = attrs.delete('statuses')
16
- metadata = attrs.delete('search_metadata')
17
- attrs['statuses'] = statuses.map { |s| Croudia::Status.new(s) }
18
- attrs['search_metadata'] = Croudia::SearchMetadata.new(metadata)
19
- super(attrs)
20
- end
7
+ attr_object_reader(
8
+ search_metadata: Croudia::SearchMetadata,
9
+ statuses: Array(Croudia::Status)
10
+ )
21
11
  end
22
12
  end
@@ -5,25 +5,17 @@ module Croudia
5
5
  class SecretMail < Croudia::Identity
6
6
  include Croudia::Creatable
7
7
 
8
- KEYS = [
9
- :id_str,
10
- :recipient,
8
+ attr_reader(
11
9
  :recipient_id,
12
10
  :recipient_screen_name,
13
- :sender,
14
11
  :sender_id,
15
12
  :sender_screen_name,
16
- :text,
17
- ]
13
+ :text
14
+ )
18
15
 
19
- attr_reader(*KEYS)
20
-
21
- def initialize(attrs)
22
- recipient = attrs.delete('recipient')
23
- sender = attrs.delete('sender')
24
- super(attrs)
25
- @attrs['recipient'] = Croudia::User.new(recipient) if recipient
26
- @attrs['sender'] = Croudia::User.new(sender) if sender
27
- end
16
+ attr_object_reader(
17
+ recipient: Croudia::User,
18
+ sender: Croudia::User
19
+ )
28
20
  end
29
21
  end
@@ -2,19 +2,16 @@ require 'croudia/base'
2
2
 
3
3
  module Croudia
4
4
  class Source < Croudia::Base
5
-
6
- KEYS = [
5
+ attr_reader(
7
6
  :name,
8
- :url,
9
- ]
7
+ :url
8
+ )
10
9
 
11
- attr_reader(*KEYS)
12
10
  alias to_s name
13
11
 
14
12
  def ==(other)
15
13
  super || (other.is_a?(Croudia::Source) &&
16
14
  name == other.name && url == other.url)
17
15
  end
18
-
19
16
  end
20
17
  end
@@ -8,39 +8,25 @@ module Croudia
8
8
  class Status < Croudia::Identity
9
9
  include Croudia::Creatable
10
10
 
11
- KEYS = [
12
- :id_str,
13
- :entities,
11
+ attr_reader(
14
12
  :favorited,
15
13
  :favorited_count,
16
14
  :in_reply_to_screen_name,
17
- :in_reply_to_status_id_str,
18
15
  :in_reply_to_status_id,
19
- :in_reply_to_user_id_str,
16
+ :in_reply_to_status_id_str,
20
17
  :in_reply_to_user_id,
18
+ :in_reply_to_user_id_str,
21
19
  :spread,
22
20
  :spread_count,
23
- :spread_status,
24
- :reply_status,
25
- :source,
26
21
  :text,
27
- :user,
28
- ]
29
-
30
- attr_reader(*KEYS)
22
+ )
31
23
 
32
- def initialize(attrs={})
33
- entities = attrs.delete('entities')
34
- user = attrs.delete('user')
35
- reply_status = attrs.delete('reply_status')
36
- spread_status = attrs.delete('spread_status')
37
- source = attrs.delete('source')
38
- super(attrs)
39
- @attrs['entities'] = Croudia::Entities.new(entities) if entities
40
- @attrs['user'] = Croudia::User.new(user) if user
41
- @attrs['reply_status'] = Croudia::Status.new(reply_status) if reply_status
42
- @attrs['spread_status'] = Croudia::Status.new(spread_status) if spread_status
43
- @attrs['source'] = Croudia::Source.new(source) if source
44
- end
24
+ attr_object_reader(
25
+ entities: Croudia::Entities,
26
+ reply_status: Croudia::Status,
27
+ spread_status: Croudia::Status,
28
+ source: Croudia::Source,
29
+ user: Croudia::User
30
+ )
45
31
  end
46
32
  end
data/lib/croudia/user.rb CHANGED
@@ -5,8 +5,7 @@ module Croudia
5
5
  class User < Croudia::Identity
6
6
  include Croudia::Creatable
7
7
 
8
- KEYS = [
9
- :id_str,
8
+ attr_reader(
10
9
  :blocking,
11
10
  :connections,
12
11
  :description,
@@ -22,9 +21,7 @@ module Croudia
22
21
  :protected,
23
22
  :screen_name,
24
23
  :statuses_count,
25
- :url,
26
- ]
27
-
28
- attr_reader(*KEYS)
24
+ :url
25
+ )
29
26
  end
30
27
  end
@@ -1,3 +1,3 @@
1
1
  module Croudia
2
- VERSION = '1.0.14'
2
+ VERSION = '1.0.15'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: croudia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.14
4
+ version: 1.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - wktk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-09 00:00:00.000000000 Z
11
+ date: 2013-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday