twitter_anonymous_client 0.0.1 → 1.0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -1
- data/README.md +1 -1
- data/lib/twitter/api/timelines.rb +10 -4
- data/lib/twitter/client.rb +30 -5
- data/lib/twitter/default.rb +15 -0
- data/lib/twitter/tweet.rb +11 -2
- data/lib/twitter_anonymous_client/version.rb +7 -1
- data/twitter_anonymous_client.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8390855368ce290ddf4167692a24b1c6f9e58cd6
|
4
|
+
data.tar.gz: 2f8e8b9bccb76a0635c01a153c95b860715465bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0039269bf31e0a8f8a80f61fb64b0a0460dbc33fed135f199645e3dfc8808516db25562d5fdf43433a31bc258a2f7350428e690267b473164011a6c55af8f40b
|
7
|
+
data.tar.gz: 305cbb70b6d413f8b21c76b52ce5f8f2dcccaca2397c6f4861c0ca30b63081c51d6e9637a76467e15ded31afe69430b7c3af59fa3d41b0446d29ac36978e50ea
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## [In git](https://github.com/elgalu/twitter_anonymous_client/compare/
|
1
|
+
## [In git](https://github.com/elgalu/twitter_anonymous_client/compare/v1.0.0.0...HEAD)
|
2
2
|
|
3
3
|
### New Features
|
4
4
|
* n/a
|
@@ -9,6 +9,18 @@
|
|
9
9
|
### Chores
|
10
10
|
* n/a
|
11
11
|
|
12
|
+
## [v1.0.0.0](https://github.com/elgalu/twitter_anonymous_client/tree/v1.0.0.0)
|
13
|
+
|
14
|
+
### New Features
|
15
|
+
* n/a
|
16
|
+
|
17
|
+
### Bugfixes
|
18
|
+
* n/a
|
19
|
+
|
20
|
+
### Chores
|
21
|
+
* Added documentation. (Leo Gallucci)
|
22
|
+
* Changed versioning system: 1.0 for twitter api and 0.0 for this gem version. (Leo Gallucci)
|
23
|
+
|
12
24
|
## [v0.0.1](https://github.com/elgalu/twitter_anonymous_client/tree/v0.0.1)
|
13
25
|
|
14
26
|
## First gem release
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ Twitter public (anonymous) client for old v1.0 API just to retrieve the last N u
|
|
20
20
|
require 'twitter_anonymous_client'
|
21
21
|
|
22
22
|
tweets = Twitter::Client.new.user_timeline('elgalu', count: 1)
|
23
|
-
elgalu = tweets.first #=> #<Twitter::Tweet:0x00.. @id="3076
|
23
|
+
elgalu = tweets.first #=> #<Twitter::Tweet:0x00.. @id="3076....>
|
24
24
|
elgalu.text #=> "Console Ruby debug is easy - Leo Gallucci's blog http://t.co/JUpUdyf5ts"
|
25
25
|
```
|
26
26
|
|
@@ -3,14 +3,18 @@ require 'twitter/tweet'
|
|
3
3
|
|
4
4
|
module Twitter
|
5
5
|
module API
|
6
|
-
# @note Inspired from
|
6
|
+
# @note Inspired from twitter-4.5.0/spec/twitter/api/timelines_spec.rb
|
7
7
|
module Timelines
|
8
8
|
|
9
|
-
# Get some user timeline by screen name
|
9
|
+
# Get some user timeline by screen name (last statuses)
|
10
10
|
#
|
11
|
-
# @
|
12
|
-
#
|
11
|
+
# @param [String] screen_name the twitter user slug
|
12
|
+
# @param [Hash] opts the options to retrieve the statuses
|
13
|
+
# @option opts [Integer] :count The number of statuses to retrieve
|
13
14
|
#
|
15
|
+
# @example
|
16
|
+
# Twitter::Client.new.user_timeline('DolarBlue', count: 1)
|
17
|
+
# #=> [#<Twitter::Tweet:0x011.. @id="308609..., @text="Dolar Paralelo: $7,84.....
|
14
18
|
def user_timeline(screen_name, opts)
|
15
19
|
# Sanitize arguments
|
16
20
|
count = opts[:count] || 1
|
@@ -22,6 +26,8 @@ module Twitter
|
|
22
26
|
|
23
27
|
private
|
24
28
|
|
29
|
+
# (see #user_timeline)
|
30
|
+
# @private
|
25
31
|
def get_user_timeline_results(screen_name, count)
|
26
32
|
path = "statuses/user_timeline.json"
|
27
33
|
qry = []
|
data/lib/twitter/client.rb
CHANGED
@@ -6,14 +6,24 @@ require 'uri'
|
|
6
6
|
require 'json'
|
7
7
|
|
8
8
|
module Twitter
|
9
|
-
# @note Inspired from
|
9
|
+
# @note Inspired from twitter-4.5.0/spec/twitter/tweet_spec.rb
|
10
10
|
class Client
|
11
11
|
ConnectionError = Class.new(StandardError)
|
12
12
|
|
13
13
|
include Twitter::API::Timelines
|
14
14
|
|
15
|
-
# Perform an HTTP
|
16
|
-
#
|
15
|
+
# Perform an HTTP get request against Twitter API then parse the result
|
16
|
+
#
|
17
|
+
# @param [String] path the relative path to twitter API
|
18
|
+
# @param [Array<Array<(String, String)>>] qry a nested array used to build the http query string
|
19
|
+
#
|
20
|
+
# @return [Array<Hash>] a collection of twitter response object, for example tweets
|
21
|
+
#
|
22
|
+
# @example
|
23
|
+
# path = "statuses/user_timeline.json"
|
24
|
+
# qry = [['screen_name', 'elgalu'], ['count', '1']]
|
25
|
+
# Twitter::Client.new.get(path, qry)
|
26
|
+
# #=> [{"created_at"=>"Fri Mar 01 21:42:19 +0000 2013", "id"=>30760....
|
17
27
|
def get(path, qry=[])
|
18
28
|
uri = build_uri(path, qry)
|
19
29
|
begin
|
@@ -28,15 +38,30 @@ module Twitter
|
|
28
38
|
|
29
39
|
private
|
30
40
|
|
41
|
+
# Builds an URI object out of a path and a query string appending twitter endpoint and api version
|
42
|
+
#
|
43
|
+
# @param (see #get)
|
44
|
+
#
|
45
|
+
# @return [URI] parsed ready url
|
46
|
+
#
|
47
|
+
# @private
|
31
48
|
def build_uri(path, qry=[])
|
32
49
|
query = URI.encode_www_form(qry)
|
33
50
|
path.chomp!('/')
|
34
51
|
path.sub!(/^\//, '')
|
35
|
-
base = Twitter::Default
|
36
|
-
ver = Twitter::Default
|
52
|
+
base = Twitter::Default.endpoint
|
53
|
+
ver = Twitter::Default.api_version
|
37
54
|
URI.parse("#{base}/#{ver}/#{path}?#{query}")
|
38
55
|
end
|
39
56
|
|
57
|
+
# Output connection related errors and terminates execusion
|
58
|
+
#
|
59
|
+
# @param [URI] uri the uri from which will use the full url
|
60
|
+
# @param [String] msg the custom error message
|
61
|
+
#
|
62
|
+
# @raise [ConnectionError] always, with url and message
|
63
|
+
#
|
64
|
+
# @private
|
40
65
|
def pute(uri, msg)
|
41
66
|
raise ConnectionError.new("#{msg}\nRequest: #{uri.to_s}\n")
|
42
67
|
end
|
data/lib/twitter/default.rb
CHANGED
@@ -4,5 +4,20 @@ module Twitter
|
|
4
4
|
ENDPOINT = 'http://api.twitter.com'
|
5
5
|
API_VERSION = '1'
|
6
6
|
end
|
7
|
+
|
8
|
+
class << self
|
9
|
+
# @note This is configurable in case you want to use a Twitter-compatible endpoint.
|
10
|
+
# @see https://github.com/sferik/twitter/blob/01e2781e4a78137ca4e5e6d3e4faf2552ee9ec76/lib/twitter/default.rb#L78
|
11
|
+
# @return [String]
|
12
|
+
def endpoint
|
13
|
+
ENDPOINT
|
14
|
+
end
|
15
|
+
|
16
|
+
# @note Should be stuck with no-oauth twitter versions (public API)
|
17
|
+
# @return [String]
|
18
|
+
def api_version
|
19
|
+
API_VERSION
|
20
|
+
end
|
21
|
+
end
|
7
22
|
end
|
8
23
|
end
|
data/lib/twitter/tweet.rb
CHANGED
@@ -3,11 +3,20 @@ require 'strongly_typed'
|
|
3
3
|
require 'date'
|
4
4
|
|
5
5
|
module Twitter
|
6
|
-
# @note Inspired from
|
6
|
+
# @note Inspired from twitter-4.5.0/lib/twitter/api/timelines.rb
|
7
7
|
class Tweet
|
8
8
|
# Class Methods
|
9
9
|
class << self
|
10
|
-
# Transform json array into a collection of tweets
|
10
|
+
# Transform a json array into a collection of tweets
|
11
|
+
#
|
12
|
+
# @param [Array<Hash>] ary the json twitter results turned into an array of hashes
|
13
|
+
#
|
14
|
+
# @return [Array<Tweet>] the array of Tweets normalized objects
|
15
|
+
#
|
16
|
+
# @example
|
17
|
+
# ary = [{'created_at'=>'2013-02-28', 'id'=>3, 'text'=>'hello world'}]
|
18
|
+
# Twitter::Tweet.build_tweets(ary)
|
19
|
+
# #=> [#<Twitter::Tweet:0x07.. @id="3", @text="hello world", @created_at=#<DateTime: 2013-02-27>>]
|
11
20
|
def build_tweets(ary)
|
12
21
|
tweets = ary.map do |tweet|
|
13
22
|
args = { id: tweet['id'],
|
@@ -1,3 +1,9 @@
|
|
1
1
|
module TwitterAnonymousClient
|
2
|
-
|
2
|
+
# Four digits version:
|
3
|
+
# "a.b.c.d"
|
4
|
+
# The first 2 digits (a,b) are the Twitter API version used, in this case verion 1.
|
5
|
+
# The last 2 digits (c,d) are this gem version.
|
6
|
+
# c is a major update or any update that breaks this gem API.
|
7
|
+
# d is minor or bugfix update.
|
8
|
+
VERSION = "1.0.0.0"
|
3
9
|
end
|
@@ -33,6 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency "yard", ">= 0.8.5.2"
|
34
34
|
spec.add_development_dependency "simplecov", ">= 0.7.1"
|
35
35
|
spec.add_development_dependency 'coveralls', '>= 0.5.8'
|
36
|
-
spec.add_development_dependency 'webmock', '>= 1.
|
36
|
+
spec.add_development_dependency 'webmock', '>= 1.11'
|
37
37
|
|
38
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter_anonymous_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 1.0.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leo Gallucci
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: strongly_typed
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - '>='
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
131
|
+
version: '1.11'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - '>='
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
138
|
+
version: '1.11'
|
139
139
|
description: Twitter public (anonymous) client for old v1.0 API
|
140
140
|
email:
|
141
141
|
- elgalu3@gmail.com
|