Module: Tweetkit::Connection

Includes:
Auth
Included in:
Client
Defined in:
lib/tweetkit/connection.rb

Constant Summary collapse

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

Instance Method Summary collapse

Methods included from Auth

#basic_auth?, #bearer_auth?, #token_auth?

Instance Method Details

#auth_token(type = 'bearer') ⇒ Object



41
42
43
44
45
46
# File 'lib/tweetkit/connection.rb', line 41

def auth_token(type = 'bearer')
  case type
  when 'bearer'
    @bearer_token
  end
end

#build_expansions(options) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/tweetkit/connection.rb', line 77

def build_expansions(options)
  expansions = {}
  _expansions = options.delete(:expansions)
  if _expansions && _expansions.size > 0
    _expansions = _expansions.join(',')
    expansions.merge!({ expansions: _expansions })
  end
  expansions
end

#build_fields(options) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/tweetkit/connection.rb', line 48

def build_fields(options)
  fields = {}
  _fields = options.delete(:fields)
  if _fields && _fields.size > 0
    _fields.each do |key, value|
      if value.is_a?(Array)
        _value = value.join(',')
      else
        _value = value.delete(' ')
      end
      _key = key.to_s.gsub('_', '.')
      fields.merge!({ "#{_key}.fields" => _value })
    end
  end
  options.each do |key, value|
    if key.match?('_fields')
      if value.is_a?(Array)
        _value = value.join(',')
      else
        _value = value.delete(' ')
      end
      _key = key.to_s.gsub('_', '.')
      options.delete(key)
      fields.merge!({ _key => _value })
    end
  end
  fields
end

#get(endpoint, **options) ⇒ Object



13
14
15
# File 'lib/tweetkit/connection.rb', line 13

def get(endpoint, **options)
  request :get, endpoint, parse_query_and_convenience_headers(options)
end

#parse_query_and_convenience_headers(options) ⇒ Object



87
88
89
90
91
92
93
94
# File 'lib/tweetkit/connection.rb', line 87

def parse_query_and_convenience_headers(options)
  options = options.dup
  fields = build_fields(options)
  options.merge!(fields)
  expansions = build_expansions(options)
  options.merge!(expansions)
  options
end

#request(method, endpoint, data, **options) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/tweetkit/connection.rb', line 17

def request(method, endpoint, data, **options)
  auth_type = options.delete(:auth_type)
  url = URI.parse("#{BASE_URL}#{endpoint}")

  if method == :get
    conn = Faraday.new(params: data) do |c|
      if auth_type == 'oauth1'
        c.request :oauth, consumer_key: @consumer_key, consumer_secret: @consumer_secret
      else
        c.authorization :Bearer, @bearer_token
      end
    end
    response = conn.get(url)
  else
    conn = Faraday.new do |f|
    end
    response = conn.post(url)
  end
  conn.close
  Tweetkit::Response.new(response)
rescue StandardError => e
  raise e
end