Class: Wavix::LinkShortener::Client
- Inherits:
-
Object
- Object
- Wavix::LinkShortener::Client
- Defined in:
- lib/wavix/link_shortener/client.rb
Instance Method Summary collapse
-
#create(request_options: {}, **params) ⇒ Wavix::Types::ShortLinkResponse
Creates a short link that redirects to the target URL and tracks click metrics.
- #initialize(client:) ⇒ void constructor
- #metrics ⇒ Wavix::Metrics::Client
Constructor Details
#initialize(client:) ⇒ void
9 10 11 |
# File 'lib/wavix/link_shortener/client.rb', line 9 def initialize(client:) @client = client end |
Instance Method Details
#create(request_options: {}, **params) ⇒ Wavix::Types::ShortLinkResponse
Creates a short link that redirects to the target URL and tracks click metrics.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/wavix/link_shortener/client.rb', line 24 def create(request_options: {}, **params) params = Wavix::Internal::Types::Utils.normalize_keys(params) request = Wavix::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "v1/short-links", body: Wavix::LinkShortener::Types::ShortLinkCreateRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Wavix::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Wavix::Types::ShortLinkResponse.load(response.body) else error_class = Wavix::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#metrics ⇒ Wavix::Metrics::Client
48 49 50 |
# File 'lib/wavix/link_shortener/client.rb', line 48 def metrics @metrics ||= Wavix::LinkShortener::Metrics::Client.new(client: @client) end |