Sha256: bab599a8177df2749ac15a2f4aa145890263537005bde41e43053705f9590fed

Contents?: true

Size: 1.81 KB

Versions: 2

Compression:

Stored size: 1.81 KB

Contents

require 'net/http'
require 'json'
require 'ostruct'

require 'stf/version'
require 'stf/log/log'
require 'stf/errors'

module Stf
  class Client
    include Log

    def initialize(base_url, token)
      @base_url = base_url
      @token    = token
    end

    def get_devices
      response = execute '/api/v1/devices', Net::HTTP::Get
      return response.devices
    end

    def get_device(serial)
      response = execute "/api/v1/devices/#{serial}", Net::HTTP::Get
      return response.device
    end

    def get_user
      response = execute '/api/v1/user', Net::HTTP::Get
      return response.user
    end

    def get_user_devices
      response = execute '/api/v1/user/devices', Net::HTTP::Get
      return response.devices
    end

    def add_device(serial)
      response = execute '/api/v1/user/devices', Net::HTTP::Post, {serial: serial}.to_json
      return response.success
    end

    def remove_device(serial)
      response = execute "/api/v1/user/devices/#{serial}", Net::HTTP::Delete
      return response.success
    end

    def start_debug(serial)
      response = execute "/api/v1//user/devices/#{serial}/remoteConnect", Net::HTTP::Post
      return response
    end

    def stop_debug(serial)
      response = execute "/api/v1//user/devices/#{serial}/remoteConnect", Net::HTTP::Delete
      return response.success
    end

    private

    def execute(relative_url, type, body='')
      uri          = URI.parse(@base_url + relative_url)
      http         = Net::HTTP.new(uri.host)
      request      = type.new(uri.request_uri, 'Authorization' => "Bearer #{@token}", 'Content-Type' => 'application/json')
      request.body = body
      response     = http.request(request)


      json = JSON.parse(response.body, object_class: OpenStruct)

      logger.debug "API returned #{json}"

      return json
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stf-client-0.1.1 lib/stf/client.rb
stf-client-0.1.0 lib/stf/client.rb