lib/xfrtuc.rb in xfrtuc-0.0.3 vs lib/xfrtuc.rb in xfrtuc-0.0.4
- old
+ new
@@ -1,15 +1,13 @@
require 'json'
require 'rest_client'
module Xfrtuc
- VERSION = "0.0.3"
-
class Client
attr_reader :base_url
- def initialize(username, password, base_url: 'https://transferatu.heroku.com')
+ def initialize(username, password, base_url='https://transferatu.heroku.com')
@base_url = base_url
@username = username
@password = password
@resource = RestClient::Resource.new(base_url,
user: username,
@@ -29,19 +27,19 @@
def group(name=nil)
if name.nil?
@group_client ||= Xfrtuc::Group.new(self)
else
self.class.new(@username, @password,
- base_url: @base_url + "/groups/#{URI.encode(name)}")
+ @base_url + "/groups/#{URI.encode(name)}")
end
end
def get(path, params={})
JSON.parse(@resource[path].get(params))
end
- def post(path, data)
+ def post(path, data={})
JSON.parse(@resource[path].post(JSON.generate(data)))
end
def delete(path)
JSON.parse(@resource[path].delete)
@@ -79,20 +77,34 @@
end
class Transfer < ApiEndpoint
def initialize(client); super; end
- def info(id, verbose: false)
+ def info(id, opts={})
+ verbose = opts.delete(:verbose) || false
+ unless opts.empty?
+ raise ArgumentError, "Unsupported option(s): #{opts.keys}"
+ end
client.get("/transfers/#{id}", params: { verbose: verbose })
end
def list
client.get("/transfers")
end
- def create(from_type:, from_url:, from_name: nil,
- to_type:, to_url:, to_name: nil, opts: {})
+ def create(opts)
+ from_type = opts.fetch :from_type
+ from_url = opts.fetch :from_url
+ to_type = opts.fetch :to_type
+ to_url = opts.fetch :to_url
+ [ :from_type, :from_url, :to_type, :to_url ].each { |key| opts.delete key }
+ from_name = opts.delete :from_name
+ to_name = opts.delete :to_name
+ unless opts.empty?
+ raise ArgumentError, "Unsupported option(s): #{opts.keys}"
+ end
+
client.post("/transfers",
from_type: from_type,
from_url: from_url,
from_name: from_name,
to_type: to_type,
@@ -101,10 +113,18 @@
end
def delete(id)
client.delete("/transfers/#{URI.encode(id)}")
end
+
+ def cancel(id)
+ client.post("/transfers/#{URI.encode(id)}/actions/cancel")
+ end
+
+ def public_url(id, opts={})
+ client.post("/transfers/#{URI.encode(id)}/actions/public-url", opts)
+ end
end
class Schedule < ApiEndpoint
def initialize(client); super; end
@@ -114,11 +134,20 @@
def list
client.get("/schedules")
end
- def create(name:, callback_url:, hour:,
- days: Date::DAYNAMES, timezone: 'UTC')
+ def create(opts)
+ name = opts.fetch :name
+ callback_url = opts.fetch :callback_url
+ hour = opts.fetch :hour
+ days = opts.fetch(:days, Date::DAYNAMES)
+ timezone = opts.fetch(:timezone, 'UTC')
+ [ :name, :callback_url, :hour, :days, :timezone ].each { |key| opts.delete key }
+ unless opts.empty?
+ raise ArgumentError, "Unsupported option(s): #{opts.keys}"
+ end
+
client.post("/schedules",
name: name,
callback_url: callback_url,
hour: hour,
days: days,