Sha256: 7982e59b670f0fe8a397f2d363be876f6f661cebff1771de72336feb943dc2c8

Contents?: true

Size: 1.68 KB

Versions: 14

Compression:

Stored size: 1.68 KB

Contents

# ..
class TsubaisoAPI
  require 'net/http'
  require 'json'

  def initialize(options = {})
    @base_url = options[:base_url] || 'https://tsubaiso.net'
    @access_token = options[:access_token]
  end

  def list(resource, params = {})
    api_request(url_parse(resource + '/list'), 'GET', params)
  end

  def show(resource, params = {})
    api_request(url_parse(resource + "/show/#{params[:id]}"), 'GET', params)
  end

  def create(resource, params = {})
    api_request(url_parse(resource + '/create'), 'POST', params)
  end

  def update(resource, params = {})
    api_request(url_parse(resource + '/update'), 'POST', params)
  end

  def destroy(resource, params = {})
    api_request(url_parse(resource + '/destroy'), 'POST', params)
  end

  def get(url, params = {})
    api_request(url_parse(url), 'GET', params)
  end

  def post(url, params = {})
    api_request(url_parse(url), 'POST', params)
  end

  private

  def api_request(uri, http_verb, params)
    http = Net::HTTP.new(uri.host, uri.port)
    initheader = { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
    http.use_ssl = true if @base_url =~ /^https/
    if http_verb == 'GET'
      request = Net::HTTP::Get.new(uri.path, initheader)
    else
      request = Net::HTTP::Post.new(uri.path, initheader)
    end
    request['Access-Token'] = @access_token
    request.body = params.to_json
    response = http.request(request)
    if response.body
      begin
        { status: response.code, json: JSON.parse(response.body) }
      rescue
        response.body
      end
    else
      { status: response.code, json: {}.to_json }
    end
  end

  def url_parse(end_point)
    URI.parse(@base_url + end_point)
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
tsubaiso-sdk-1.2.19 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.18 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.17 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.16 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.15 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.14 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.13 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.12 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.11 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.10 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.9 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.8 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.7 lib/tsubaiso_api.rb
tsubaiso-sdk-1.2.6 lib/tsubaiso_api.rb