Skip to content

Commit 93a5134

Browse files
author
julianfoo
committed
Revamped Response object to return models/classes for different Tweet entities, annotations, and relationships
2 parents b3f068e + 0fa6962 commit 93a5134

3 files changed

Lines changed: 368 additions & 149 deletions

File tree

lib/tweetkit/client.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
require 'tweetkit/configurable'
21
require 'tweetkit/connection'
32
require 'tweetkit/client/tweets'
43

lib/tweetkit/connection.rb

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
require 'faraday'
22
require 'faraday_middleware'
33
require 'tweetkit/auth'
4-
require 'tweetkit/default'
54
require 'tweetkit/response'
5+
require 'pry'
66

77
module Tweetkit
88
module Connection
99
include Tweetkit::Auth
10+
include Tweetkit::Response
1011

11-
attr_accessor :saved_params, :saved_url
12+
attr_accessor :previous_query, :previous_url
1213

1314
BASE_URL = 'https://api.twitter.com/2/'
1415

@@ -18,25 +19,25 @@ def get(endpoint, **options)
1819

1920
def request(method, endpoint, data, **options)
2021
auth_type = options.delete(:auth_type)
21-
@saved_url = URI.parse("#{BASE_URL}#{endpoint}")
22-
@saved_params = data
22+
url = URI.parse("#{BASE_URL}#{endpoint}")
23+
@previous_url = url
24+
@previous_query = data
2325

2426
if method == :get
25-
conn = Faraday.new(params: data) do |c|
27+
connection = Faraday.new(params: data) do |conn|
2628
if auth_type == 'oauth1'
27-
c.request :oauth, consumer_key: @consumer_key, consumer_secret: @consumer_secret
29+
conn.request :oauth, consumer_key: @consumer_key, consumer_secret: @consumer_secret
2830
else
29-
c.authorization :Bearer, @bearer_token
31+
conn.authorization :Bearer, @bearer_token
3032
end
3133
end
32-
response = conn.get(saved_url)
34+
response = connection.get(url)
3335
else
34-
conn = Faraday.new do |f|
36+
connection = Faraday.new do |f|
3537
end
36-
response = conn.post(url)
38+
response = connection.post(url)
3739
end
38-
conn.close
39-
Tweetkit::Response.new(response)
40+
Tweetkit::Response::Tweets.new response, connection: connection, twitter_request: { previous_url: @previous_url, previous_query: @previous_query }
4041
rescue StandardError => e
4142
raise e
4243
end
@@ -50,49 +51,53 @@ def auth_token(type = 'bearer')
5051

5152
def build_fields(options)
5253
fields = {}
53-
_fields = options.delete(:fields)
54-
if _fields && _fields.size > 0
55-
_fields.each do |key, value|
56-
if value.is_a?(Array)
57-
_value = value.join(',')
54+
fields_ = options.delete(:fields)
55+
56+
if fields_ && !fields_.empty?
57+
fields_.each do |field, value|
58+
if value.is_a? Array
59+
value = value.join(',')
5860
else
59-
_value = value.delete(' ')
61+
value = value.delete(' ')
6062
end
61-
_key = key.to_s.gsub('_', '.')
62-
fields.merge!({ "#{_key}.fields" => _value })
63+
64+
field = field.to_s.gsub('_', '.')
65+
fields.merge!({ "#{field}.fields" => value })
6366
end
6467
end
68+
6569
options.each do |key, value|
66-
if key.match?('_fields')
67-
if value.is_a?(Array)
68-
_value = value.join(',')
69-
else
70-
_value = value.delete(' ')
71-
end
72-
_key = key.to_s.gsub('_', '.')
73-
options.delete(key)
74-
fields.merge!({ _key => _value })
70+
next unless key.match? '_fields'
71+
72+
options.delete(key)
73+
74+
if value.is_a? Array
75+
value = value.join(',')
76+
else
77+
value = value.delete(' ')
7578
end
79+
80+
key = key.to_s.gsub('_', '.')
81+
fields.merge!({ key => value })
7682
end
83+
7784
fields
7885
end
7986

8087
def build_expansions(options)
81-
expansions = {}
82-
_expansions = options.delete(:expansions)
83-
if _expansions && _expansions.size > 0
84-
_expansions = _expansions.join(',')
85-
expansions.merge!({ expansions: _expansions })
86-
end
87-
expansions
88+
expansions = options.delete(:expansions)
89+
return unless expansions
90+
91+
expansions = expansions.join(',') if expansions.is_a? Array
92+
{ expansions: expansions }
8893
end
8994

9095
def parse_query_and_convenience_headers(options)
9196
options = options.dup
9297
fields = build_fields(options)
93-
options.merge!(fields)
98+
options.merge!(fields) if fields
9499
expansions = build_expansions(options)
95-
options.merge!(expansions)
100+
options.merge!(expansions) if expansions
96101
options
97102
end
98103
end

0 commit comments

Comments
 (0)