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,