class Appfront::API

Attributes

email[R]
host[R]

Public Class Methods

new(opts = {}) click to toggle source
# File lib/appfront/api.rb, line 7
def initialize(opts = {})
  @host  = opts[:host] || 'https://api.appfront.io/v1'

  if opts[:email] and opts[:password]
    @email, @pass = opts[:email], opts[:password]
  else
    @email, @pass = Appfront::Command::Auth.credentials
  end
end

Public Instance Methods

login() click to toggle source
# File lib/appfront/api.rb, line 17
def login
  return unless (@email && @pass)

  @pass = RestClient.post(
    "#{@host}/auth",
    email: @email, password: @pass
  )
rescue => e
  puts e.response
  exit 1
end
method_missing(m, *args, &block) click to toggle source
# File lib/appfront/api.rb, line 41
def method_missing(m, *args, &block)
  unless ['get', 'post', 'put', 'delete'].include? m.to_s
    raise NoMethodError, "undefined method: #{m}"
  end

  res = self.send('req', m, args)
  #TODO Da capire JSON.parse res rescue ""
  JSON.parse res rescue res
end
signup() click to toggle source
# File lib/appfront/api.rb, line 29
def signup
  return unless (@email && @pass)

  @pass = RestClient.post(
    "#{@host}/signup",
    email: @email, password: @pass
  )
rescue => e
  puts e.response
  exit 1
end

Private Instance Methods

req(method, *args) click to toggle source
# File lib/appfront/api.rb, line 53
def req(method, *args)
  raise if args.empty?
  args = args.shift
  path = args.shift

  resource = RestClient::Resource.new(
    "#{@host}#{path}", user: @pass, password: 'x'
  )

  begin
    if path != '/flow.yaml'
      resource.send method, (args.first || {})
    elsif path == '/flow2.yaml'
      file = args.first[:file]
      request = RestClient::Request.new(
        :method => method.to_sym,
        :url => "http://dev:8082/v1#{path}",
        :user => @pass,
        :password => 'x',
        :payload => {
          :multipart => true,
          :file => File.new(file, 'rb')
        })
      response = request.execute
    else
      file = args.first[:file]
      request = RestClient::Request.new(
        :method => method.to_sym,
        :url => "#{host}#{path}",
        :user => @pass,
        :password => 'x',
        :payload => {
          :multipart => true,
          :file => File.new(file, 'rb')
        })
      response = request.execute
    end
  rescue => e
    if e.respond_to? :response
      puts e.response
    else
      puts "Something went wrong, we have been notified."
    end

    exit 1
  end
end