asellitt/noip

View on GitHub
lib/noip/updater.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'net/http'

module Noip
  class Updater

    def initialize(credentials)
      @credentials = credentials
      initialize_http_request
    end

    def update
      @response ||= http.request(request)
    end

  private

    attr_reader :credentials, :http, :request, :response

    def initialize_http_request
      @http = Net::HTTP.new('dynupdate.no-ip.com')

      @request = Net::HTTP::Get.new(
        "/nic/update?hostname=#{credentials.host}&ip=#{remote_ip.address}",
        { 'User-Agent' => agent.user_agent }
      )
      @request.basic_auth(
        credentials.username,
        credentials.password
      )
    end

    def agent
      @agent ||= Noip::Agent.new
    end

    def remote_ip
      @remote_ip ||= Noip::RemoteIp.new
    end

  end
end