11require 'faraday'
22require 'faraday_middleware'
33require 'tweetkit/auth'
4- require 'tweetkit/default'
54require 'tweetkit/response'
5+ require 'pry'
66
77module 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