twitter_anonymous_client 0.0.1 → 1.0.0.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.
- 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
|