croudia 1.0.15 → 1.1.0

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.
@@ -5,11 +5,24 @@ module Croudia
5
5
  module Statuses
6
6
  # Update status
7
7
  #
8
- # @param status [String] Status text
9
- # @param params [Hash] Additional params
10
- # @return status [Croudia::Status] Posted status
11
- def update(text, params={})
12
- merge_text!(params, text)
8
+ # @see https://developer.croudia.com/docs/11_statuses_update
9
+ # @overload update(status, params={})
10
+ # @param [String] status Status text
11
+ # @param [Hash] params Additional query parameters
12
+ # @option params [String, Integer] :in_reply_to_status_id
13
+ # @option params [String] :in_reply_with_quote Set true if quote
14
+ # @option params [String] :include_entities Set false to exclude entities
15
+ # @option params [String] :trim_user Set true to return compact user objects
16
+ # @overload update(params={})
17
+ # @param [Hash] params Query parameters
18
+ # @option params [String, Integer] :in_reply_to_status_id
19
+ # @option params [String] :in_reply_with_quote Set true if quote
20
+ # @option params [String] :include_entities Set false to exclude entities
21
+ # @option params [String] :status Status text
22
+ # @option params [String] :trim_user Set true to return compact user objects
23
+ # @return [Croudia::Status] Posted status
24
+ def update(status, params={})
25
+ merge_text!(params, status)
13
26
 
14
27
  resp = post('/statuses/update.json', params)
15
28
  Croudia::Status.new(resp)
@@ -17,8 +30,23 @@ module Croudia
17
30
 
18
31
  # Update status with media
19
32
  #
20
- # @param status [String] Status text
21
- # @param media [File] Image to upload with
33
+ # @see https://developer.croudia.com/docs/14_statuses_update_with_media
34
+ # @note Currently only PNG, JPG, and GIF are supported
35
+ # @overload update_with_media(status, media, params={})
36
+ # @param [String] status Status text
37
+ # @param [File, #to_io] media Image to upload with
38
+ # @option params [String, Integer] :in_reply_to_status_id
39
+ # @option params [String] :in_reply_with_quote Set true if quote
40
+ # @option params [String] :include_entities Set false to exclude entities
41
+ # @option params [String] :trim_user Set true to return compact user objects
42
+ # @overload update_with_media(params={})
43
+ # @param [Hash] params Query parameters
44
+ # @option params [String, Integer] :in_reply_to_status_id
45
+ # @option params [String] :in_reply_with_quote Set true if quote
46
+ # @option params [String] :include_entities Set false to exclude entities
47
+ # @option params [File, #to_io] media Image to upload with
48
+ # @option params [String] :status Status text
49
+ # @option params [String] :trim_user Set true to return compact user objects
22
50
  # @return [Croudia::Status]
23
51
  def update_with_media(status, media={}, params={})
24
52
  merge_text!(params, status)
@@ -29,33 +57,42 @@ module Croudia
29
57
 
30
58
  # Destroy a status
31
59
  #
32
- # @param status_id [String, Integer, Croudia::Status] Status to delete
33
- # @param params [Hash]
60
+ # @see https://developer.croudia.com/docs/12_statuses_destroy
61
+ # @param [String, Integer, Croudia::Status] status Status to delete
62
+ # @param [Hash] params Additional query parameters
63
+ # @option params [String] :include_entities Set false to exclude entities
64
+ # @option params [String] :trim_user Set true to return compact user objects
34
65
  # @return [Croudia::Status] Deleted status
35
- def destroy_status(status_id, params={})
36
- status_id = get_id(status_id)
66
+ def destroy_status(status, params={})
67
+ status_id = get_id(status)
37
68
  resp = post("/statuses/destroy/#{status_id}.json", params)
38
69
  Croudia::Status.new(resp)
39
70
  end
40
71
 
41
72
  # Retrieve a status
42
73
  #
43
- # @param status_id [String, Integer, Croudia::Status]
44
- # @param params [Hash]
74
+ # @see https://developer.croudia.com/docs/13_statuses_show
75
+ # @param [String, Integer, Croudia::Status] status Status to get
76
+ # @param [Hash] params Additional query parameters
77
+ # @option params [String] :include_entities Set false to exclude entities
78
+ # @option params [String] :trim_user Set true to return compact user objects
45
79
  # @return [Croudia::Status]
46
- def status(status_id, params={})
47
- status_id = get_id(status_id)
80
+ def status(status, params={})
81
+ status_id = get_id(status)
48
82
  resp = get("/statuses/show/#{status_id}.json", params)
49
83
  Croudia::Status.new(resp)
50
84
  end
51
85
 
52
86
  # Spread a status
53
87
  #
54
- # @param status_id [String, Integer, Croudia::Status] Status to spread
55
- # @param params [Hash]
88
+ # @see https://developer.croudia.com/docs/61_statuses_spread
89
+ # @param [String, Integer, Croudia::Status] status Status to spread
90
+ # @param [Hash] params Additional query parameters
91
+ # @option params [String] :include_entities Set false to exclude entities
92
+ # @option params [String] :trim_user Set true to return compact user objects
56
93
  # @return [Croudia::Status] My status including spreaded status
57
- def spread(status_id, params={})
58
- status_id = get_id(status_id)
94
+ def spread(status, params={})
95
+ status_id = get_id(status)
59
96
  resp = post("/statuses/spread/#{status_id}.json", params)
60
97
  Croudia::Status.new(resp)
61
98
  end
@@ -5,7 +5,13 @@ module Croudia
5
5
  module Timelines
6
6
  # Public Timeline
7
7
  #
8
- # @param params [Hash] Additional params
8
+ # @see https://developer.croudia.com/docs/01_statuses_public_timeline
9
+ # @param [Hash] params Additional query parameters
10
+ # @option params [String, Integer] :count Number of statuses in the response
11
+ # @option params [String] :include_entities Set false to exclude entities
12
+ # @option params [String, Integer] :max_id Paging parameter
13
+ # @option params [String, Integer] :since_id Paging parameter
14
+ # @option params [String] :trim_user Set true to return compact user objects
9
15
  # @return [Array<Croudia::Status>]
10
16
  def public_timeline(params={})
11
17
  resp = get('/statuses/public_timeline.json', params)
@@ -14,7 +20,13 @@ module Croudia
14
20
 
15
21
  # Home Timeline
16
22
  #
17
- # @params params [Hash]
23
+ # @see https://developer.croudia.com/docs/02_statuses_home_timeline
24
+ # @param [Hash] params Additional query parameters
25
+ # @option params [String, Integer] :count Number of statuses in the response
26
+ # @option params [String] :include_entities Set false to exclude entities
27
+ # @option params [String, Integer] :max_id Paging parameter
28
+ # @option params [String, Integer] :since_id Paging parameter
29
+ # @option params [String] :trim_user Set true to return compact user objects
18
30
  # @return [Array<Croudia::Status>]
19
31
  def home_timeline(params={})
20
32
  resp = get('/statuses/home_timeline.json', params)
@@ -23,15 +35,41 @@ module Croudia
23
35
 
24
36
  # User Timeline
25
37
  #
26
- # @param user [String, Integer, Croudia::User]
27
- # @param params [Hash]
28
- # @return [Array<Croudia::Status>
38
+ # @see https://developer.croudia.com/docs/03_statuses_user_timeline
39
+ # @overload user_timeline(user, params={})
40
+ # @param [String, Integer, Croudia::User] user
41
+ # @param [Hash] params Additional query parameters
42
+ # @option params [String, Integer] :count Number of statuses in the response
43
+ # @option params [String] :include_entities Set false to exclude entities
44
+ # @option params [String, Integer] :max_id Paging parameter
45
+ # @option params [String, Integer] :since_id Paging parameter
46
+ # @option params [String] :trim_user Set true to return compact user objects
47
+ # @overload user_timeline(params={})
48
+ # @param [Hash] params Query parameters
49
+ # @option params [String, Integer] :count Number of statuses in the response
50
+ # @option params [String] :include_entities Set false to exclude entities
51
+ # @option params [String, Integer] :max_id Paging parameter
52
+ # @option params [String] :screen_name Screen name of the user
53
+ # @option params [String, Integer] :since_id Paging parameter
54
+ # @option params [String] :trim_user Set true to return compact user objects
55
+ # @option params [String, Integer] :user_id ID of the user
56
+ # @return [Array<Croudia::Status>]
29
57
  def user_timeline(user, params={})
30
58
  merge_user!(params, user)
31
59
  resp = get('/statuses/user_timeline.json', params)
32
60
  objects(Croudia::Status, resp)
33
61
  end
34
62
 
63
+ # Mentions
64
+ #
65
+ # @see https://developer.croudia.com/docs/04_statuses_mentions
66
+ # @param [Hash] params Additional query parameters
67
+ # @option params [String, Integer] :count Number of statuses in the response
68
+ # @option params [String] :include_entities Set false to exclude entities
69
+ # @option params [String, Integer] :max_id Paging parameter
70
+ # @option params [String, Integer] :since_id Paging parameter
71
+ # @option params [String] :trim_user Set true to return compact user objects
72
+ # @return [Array<Croudia::Status>]
35
73
  def mentions(params={})
36
74
  resp = get('/statuses/mentions.json', params)
37
75
  objects(Croudia::Status, resp)
@@ -0,0 +1,20 @@
1
+ require 'croudia/trend'
2
+ require 'croudia/trend_results'
3
+
4
+ module Croudia
5
+ module API
6
+ module Trends
7
+ # Retrieve the current trends
8
+ #
9
+ # @see https://developer.croudia.com/docs/100_trends_place
10
+ # @param [Hash] params Query parameters
11
+ # @option params [String, Integer] :id ("1") Location ID
12
+ # @return [Croudia::TrendResults<Croudia::Trend>]
13
+ def trends(params={})
14
+ params[:id] ||= '1'
15
+ resp = get('/trends/place.json', params)
16
+ Croudia::TrendResults.new(resp)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -5,8 +5,14 @@ module Croudia
5
5
  module Users
6
6
  # Retrieve a user
7
7
  #
8
- # @param user [String, Integer, Croudia::User]
9
- # @param params [Hash] Optional params
8
+ # @see https://developer.croudia.com/docs/31_users_show
9
+ # @overload user(user, params={})
10
+ # @param [String, Integer, Croudia::User] user
11
+ # @param [Hash] params Additional query parameters
12
+ # @overload user(params={})
13
+ # @param [Hash] params Query parameters
14
+ # @option params [String] :screen_name Screen name of the user
15
+ # @option params [String, Integer] :user_id ID of the user
10
16
  # @return [Croudia::User]
11
17
  def user(user, params={})
12
18
  merge_user!(params, user)
@@ -16,8 +22,14 @@ module Croudia
16
22
 
17
23
  # Lookup Users
18
24
  #
19
- # @param *users [String, Integer, Croudia::User]
20
- # @param params [Hash]
25
+ # @see https://developer.croudia.com/docs/32_users_lookup
26
+ # @overload users(*users, params={})
27
+ # @param [String, Integer, Croudia::User] users
28
+ # @param [Hash] params Additional query parameters
29
+ # @overload users(params={})
30
+ # @param [Hash] params Query parameters
31
+ # @option params [String] :screen_name Comma-separated screen names
32
+ # @option params [String] :user_id Comma-separated user IDs
21
33
  # @return [Array<Croudia::User>]
22
34
  def users(*args)
23
35
  merge_users!(params = {}, args)
@@ -1,71 +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
-
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
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 [Hash] attrs { 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 [Hash] attrs
46
+ # @return [Croudia::Base]
47
+ def initialize(attrs = {})
48
+ @attrs = attrs
49
+ end
50
+
51
+ # Fetch an attribute
52
+ #
53
+ # @param [String, Symobol] name
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
@@ -6,10 +6,10 @@ require 'croudia/api/search'
6
6
  require 'croudia/api/secret_mails'
7
7
  require 'croudia/api/statuses'
8
8
  require 'croudia/api/timelines'
9
+ require 'croudia/api/trends'
9
10
  require 'croudia/api/users'
10
11
  require 'croudia/api/utils'
11
12
  require 'croudia/configurable'
12
- require 'croudia/ext/openssl'
13
13
  require 'croudia/version'
14
14
  require 'faraday'
15
15
 
@@ -23,14 +23,14 @@ module Croudia
23
23
  include Croudia::API::SecretMails
24
24
  include Croudia::API::Statuses
25
25
  include Croudia::API::Timelines
26
+ include Croudia::API::Trends
26
27
  include Croudia::API::Users
27
28
  include Croudia::API::Utils
28
29
  include Croudia::Configurable
29
30
 
30
31
  # Initialize a new Client object
31
32
  #
32
- # @param options [Hash]
33
- # @return [Croudia::Client]
33
+ # @param [Hash] options
34
34
  def initialize(options={})
35
35
  Croudia::Configurable.keys.each do |key|
36
36
  instance_variable_set(:"@#{key}", options[key] || Croudia.instance_variable_get(:"@#{key}"))
@@ -59,6 +59,7 @@ module Croudia
59
59
 
60
60
  private
61
61
 
62
+ # @return [String] Response body
62
63
  def request(method, path, params={})
63
64
  connection.send(method.to_sym, path, params) do |request|
64
65
  request.headers[:authorization] = "Bearer #{@access_token}" if @access_token
@@ -2,6 +2,7 @@ require 'time'
2
2
 
3
3
  module Croudia
4
4
  module Creatable
5
+ # @return [Time]
5
6
  def created_at
6
7
  @created_at ||= Time.parse(@attrs['created_at'])
7
8
  end
@@ -1,70 +1,70 @@
1
- require 'faraday'
2
- require 'faraday_middleware'
3
- require 'croudia/configurable'
4
- require 'croudia/request/multipart_with_file'
5
- require 'croudia/request/raise_error'
6
- require 'croudia/response/parse_json'
7
- require 'croudia/response/raise_error'
8
- require 'croudia/version'
9
-
10
- module Croudia
11
- module Default
12
- ENDPOINT = 'https://api.croudia.com' unless defined? Croudia::Default::ENDPOINT
13
- CONNECTION_OPTIONS = {
14
- headers: {
15
- accept: 'application/json',
16
- user_agent: "Croudia Ruby Gem/#{Croudia::VERSION}",
17
- },
18
- request: {
19
- open_timeout: 10,
20
- timeout: 30,
21
- },
22
- ssl: {
23
- verify: true,
24
- },
25
- } unless defined? Croudia::Default::CONNECTION_OPTIONS
26
- MIDDLEWARE = Faraday::Builder.new do |builder|
27
- builder.request :multipart_with_file
28
- builder.request :multipart
29
- builder.request :url_encoded
30
- builder.request :raise_error
31
-
32
- builder.response :raise_error
33
- builder.response :parse_json
34
-
35
- builder.adapter Faraday.default_adapter
36
- end unless defined? Croudia::Default::MIDDLEWARE
37
-
38
- class << self
39
- def options
40
- Hash[Croudia::Configurable.keys.map do |key|
41
- [key, __send__(key)]
42
- end]
43
- end
44
-
45
- def client_id
46
- ENV['CROUDIA_CLIENT_ID']
47
- end
48
-
49
- def client_secret
50
- ENV['CROUDIA_CLIENT_SECRET']
51
- end
52
-
53
- def access_token
54
- ENV['CROUDIA_ACCESS_TOKEN']
55
- end
56
-
57
- def endpoint
58
- ENDPOINT
59
- end
60
-
61
- def connection_options
62
- CONNECTION_OPTIONS
63
- end
64
-
65
- def middleware
66
- MIDDLEWARE
67
- end
68
- end
69
- end
70
- end
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+ require 'croudia/configurable'
4
+ require 'croudia/request/multipart_with_file'
5
+ require 'croudia/request/raise_error'
6
+ require 'croudia/response/parse_json'
7
+ require 'croudia/response/raise_error'
8
+ require 'croudia/version'
9
+
10
+ module Croudia
11
+ module Default
12
+ ENDPOINT = 'https://api.croudia.com' unless defined? Croudia::Default::ENDPOINT
13
+ CONNECTION_OPTIONS = {
14
+ headers: {
15
+ accept: 'application/json',
16
+ user_agent: "Croudia Ruby Gem/#{Croudia::VERSION}",
17
+ },
18
+ request: {
19
+ open_timeout: 10,
20
+ timeout: 30,
21
+ },
22
+ ssl: {
23
+ verify: true,
24
+ },
25
+ } unless defined? Croudia::Default::CONNECTION_OPTIONS
26
+ MIDDLEWARE = Faraday::Builder.new do |builder|
27
+ builder.request :multipart_with_file
28
+ builder.request :multipart
29
+ builder.request :url_encoded
30
+ builder.request :raise_error
31
+
32
+ builder.response :raise_error
33
+ builder.response :parse_json
34
+
35
+ builder.adapter Faraday.default_adapter
36
+ end unless defined? Croudia::Default::MIDDLEWARE
37
+
38
+ class << self
39
+ def options
40
+ Hash[Croudia::Configurable.keys.map do |key|
41
+ [key, __send__(key)]
42
+ end]
43
+ end
44
+
45
+ def client_id
46
+ ENV['CROUDIA_CLIENT_ID']
47
+ end
48
+
49
+ def client_secret
50
+ ENV['CROUDIA_CLIENT_SECRET']
51
+ end
52
+
53
+ def access_token
54
+ ENV['CROUDIA_ACCESS_TOKEN']
55
+ end
56
+
57
+ def endpoint
58
+ ENDPOINT
59
+ end
60
+
61
+ def connection_options
62
+ CONNECTION_OPTIONS
63
+ end
64
+
65
+ def middleware
66
+ MIDDLEWARE
67
+ end
68
+ end
69
+ end
70
+ end