loopiator 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +27 -3
- data/lib/generators/loopiator_generator.rb +31 -0
- data/lib/generators/templates/initializer.rb +4 -0
- data/lib/loopiator.rb +25 -13
- data/lib/loopiator/client.rb +26 -37
- data/lib/loopiator/configuration.rb +26 -0
- data/lib/loopiator/credits.rb +2 -2
- data/lib/loopiator/domains.rb +3 -3
- data/lib/loopiator/utilities.rb +9 -0
- data/loopiator.gemspec +7 -5
- data/spec/loopiator/configuration_spec.rb +81 -0
- data/spec/loopiator/credits_spec.rb +12 -13
- data/spec/loopiator/domains_spec.rb +39 -34
- data/spec/spec_helper.rb +14 -1
- data/spec/support/helpers.rb +18 -0
- metadata +11 -21
- data/lib/generators/loopiator/loopiator_generator.rb +0 -18
- data/lib/generators/templates/loopia.template.yml +0 -16
- data/spec/loopiator/client_spec.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be4bd53de4c331058e0fb971f6a7d477baecb6a7
|
4
|
+
data.tar.gz: e5029296588dafd6edca92795e71760f7e0a71b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e8cd80be4a4918de47322b4de7b8f405f981dca9f3ec46bf3ca3624338452e458ede843326f4baa73e898d373bff572c31d5d84d2082ce78f2e809459bb8bec
|
7
|
+
data.tar.gz: 6db744b565eb45dbb941199652cbfbf2ce3b5d0efcfec78ebc6dba0d5f632b907c02e79e1909464a6bb640819a9b2e409949620c78900692b09359f120c5fb02
|
data/README.md
CHANGED
@@ -1,4 +1,28 @@
|
|
1
|
-
Loopiator
|
2
|
-
|
1
|
+
# Loopiator
|
2
|
+
Ruby gem for Interacting with Loopia.se's XML RPC API.
|
3
3
|
|
4
|
-
|
4
|
+
## Installation
|
5
|
+
Add the gem to your Gemfile and run bundle update:
|
6
|
+
```ruby
|
7
|
+
gem 'loopiator'
|
8
|
+
bundle update
|
9
|
+
```
|
10
|
+
|
11
|
+
Generate an initializer for your app:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
rails generate loopiator username password
|
15
|
+
```
|
16
|
+
|
17
|
+
You'll find your API credentials in Loopia's control panel.
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Basic example:
|
22
|
+
```ruby
|
23
|
+
client = Loopiator::Client.new
|
24
|
+
available = client.domain_is_free('google.se')
|
25
|
+
```
|
26
|
+
|
27
|
+
## Notes
|
28
|
+
The full Loopia API hasn't been implemented. I've just implemented the things I need for now. If you need more functionality, either implement it yourself and send a pull request or open an issue and I'll see if I have the time to implement what you need.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/named_base'
|
3
|
+
|
4
|
+
module Loopiator
|
5
|
+
module Generators
|
6
|
+
class LoopiatorGenerator < ::Rails::Generators::Base
|
7
|
+
argument :username, :type => :string, :banner => 'username', :default => nil
|
8
|
+
argument :password, :type => :string, :banner => 'password', :default => nil
|
9
|
+
|
10
|
+
source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
11
|
+
|
12
|
+
def create_initializer
|
13
|
+
say "creating initializer..."
|
14
|
+
|
15
|
+
if loopiator_already_configured?
|
16
|
+
say "It looks like you've already configured Loopiator."
|
17
|
+
say "To re-create the config file, remove it first: config/initializers/loopiator.rb"
|
18
|
+
exit
|
19
|
+
end
|
20
|
+
|
21
|
+
template 'initializer.rb', 'config/initializers/loopiator.rb', assigns: { username: username, password: password }
|
22
|
+
end
|
23
|
+
|
24
|
+
def loopiator_already_configured?
|
25
|
+
File.exists?('config/initializers/loopiator.rb')
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/lib/loopiator.rb
CHANGED
@@ -1,19 +1,31 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require File.join(File.dirname(__FILE__), 'loopiator/railtie') if defined? Rails
|
2
|
+
require File.join(File.dirname(__FILE__), 'loopiator/extensions/hash') if !Hash.instance_methods(false).include?(:symbolize_keys!)
|
3
|
+
require File.join(File.dirname(__FILE__), 'loopiator/configuration')
|
4
|
+
require File.join(File.dirname(__FILE__), 'loopiator/logger')
|
5
|
+
require File.join(File.dirname(__FILE__), 'loopiator/errors')
|
6
|
+
require File.join(File.dirname(__FILE__), 'loopiator/utilities')
|
7
|
+
require File.join(File.dirname(__FILE__), 'loopiator/models/domain')
|
8
|
+
require File.join(File.dirname(__FILE__), 'loopiator/domains')
|
9
|
+
require File.join(File.dirname(__FILE__), 'loopiator/credits')
|
10
|
+
require File.join(File.dirname(__FILE__), 'loopiator/client')
|
3
11
|
|
4
|
-
|
12
|
+
module Loopiator
|
13
|
+
VERSION = "0.3.0"
|
5
14
|
|
6
|
-
|
7
|
-
|
15
|
+
class << self
|
16
|
+
attr_writer :configuration
|
8
17
|
end
|
9
|
-
|
10
|
-
require File.join(File.dirname(__FILE__), 'loopiator/logger')
|
11
|
-
require File.join(File.dirname(__FILE__), 'loopiator/errors')
|
12
18
|
|
13
|
-
|
19
|
+
def self.configuration
|
20
|
+
@configuration ||= Configuration.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.reset
|
24
|
+
@configuration = Configuration.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.configure
|
28
|
+
yield(self.configuration)
|
29
|
+
end
|
14
30
|
|
15
|
-
require File.join(File.dirname(__FILE__), 'loopiator/domains')
|
16
|
-
require File.join(File.dirname(__FILE__), 'loopiator/credits')
|
17
|
-
|
18
|
-
require File.join(File.dirname(__FILE__), 'loopiator/client')
|
19
31
|
end
|
data/lib/loopiator/client.rb
CHANGED
@@ -1,54 +1,27 @@
|
|
1
|
-
require 'uri'
|
2
|
-
require 'cgi'
|
3
|
-
require 'rubygems'
|
4
1
|
require 'xmlrpc/client'
|
5
2
|
require 'simpleidn'
|
6
3
|
|
7
4
|
module Loopiator
|
8
5
|
class Client
|
9
|
-
attr_accessor :
|
6
|
+
attr_accessor :client
|
10
7
|
|
11
8
|
include Loopiator::Logger
|
12
9
|
|
13
|
-
def initialize(
|
14
|
-
|
15
|
-
|
16
|
-
options.symbolize_keys!
|
17
|
-
@config.merge!(options)
|
18
|
-
|
19
|
-
@username = @config.fetch(:username, nil)
|
20
|
-
@password = @config.fetch(:password, nil)
|
21
|
-
@endpoint = @config.fetch(:endpoint, nil)
|
22
|
-
|
23
|
-
timeout = options.fetch(:timeout, 500)
|
24
|
-
|
25
|
-
set_client(timeout)
|
26
|
-
end
|
27
|
-
|
28
|
-
def set_config
|
29
|
-
rails_env = defined?(Rails) ? Rails.env : "development"
|
30
|
-
config ||= YAML.load_file(File.join(Rails.root, "config/loopia.yml"))[rails_env] if defined?(Rails)
|
31
|
-
config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../generators/templates/loopia.yml"))[rails_env] rescue nil
|
32
|
-
config ||= YAML.load_file(File.join(File.dirname(__FILE__), "../generators/templates/loopia.template.yml"))[rails_env] rescue nil
|
33
|
-
config ||= {}
|
34
|
-
|
35
|
-
config.symbolize_keys!
|
36
|
-
|
37
|
-
return config
|
10
|
+
def initialize(connection_options = nil)
|
11
|
+
set_client(connection_options)
|
38
12
|
end
|
39
13
|
|
40
|
-
def set_client(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
@client
|
14
|
+
def set_client(connection_options = nil)
|
15
|
+
self.client = XMLRPC::Client.new_from_hash(generate_connection_options(connection_options))
|
16
|
+
self.client.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
|
17
|
+
self.client
|
45
18
|
end
|
46
19
|
|
47
20
|
def call(rpc_method, *args)
|
48
|
-
response =
|
21
|
+
response = nil
|
49
22
|
|
50
23
|
begin
|
51
|
-
response =
|
24
|
+
response = self.client.call(rpc_method, Loopiator.configuration.username, Loopiator.configuration.password, *args)
|
52
25
|
|
53
26
|
rescue EOFError => eof_error
|
54
27
|
raise Loopiator::ConnectionError
|
@@ -58,7 +31,7 @@ module Loopiator
|
|
58
31
|
end
|
59
32
|
|
60
33
|
def parse_status_response(response)
|
61
|
-
response
|
34
|
+
response = response.downcase.to_sym
|
62
35
|
|
63
36
|
case response
|
64
37
|
when :ok then return response
|
@@ -74,5 +47,21 @@ module Loopiator
|
|
74
47
|
|
75
48
|
include Loopiator::Domains
|
76
49
|
include Loopiator::Credits
|
50
|
+
|
51
|
+
private
|
52
|
+
def generate_connection_options(connection_options = nil)
|
53
|
+
connection_options ||= {
|
54
|
+
host: Loopiator.configuration.host,
|
55
|
+
path: Loopiator.configuration.path,
|
56
|
+
port: Loopiator.configuration.port,
|
57
|
+
use_ssl: Loopiator.configuration.use_ssl,
|
58
|
+
timeout: Loopiator.configuration.timeout,
|
59
|
+
proxy_host: Loopiator.configuration.proxy_host,
|
60
|
+
proxy_port: Loopiator.configuration.proxy_port,
|
61
|
+
user: Loopiator.configuration.proxy_user,
|
62
|
+
password: Loopiator.configuration.proxy_password,
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
77
66
|
end
|
78
67
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Loopiator
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :host, :port, :path
|
4
|
+
attr_accessor :use_ssl, :timeout
|
5
|
+
attr_accessor :username, :password
|
6
|
+
attr_accessor :proxy_host, :proxy_port, :proxy_user, :proxy_password
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
self.host = "api.loopia.se"
|
10
|
+
self.port = 443
|
11
|
+
self.path = "/RPCSERV"
|
12
|
+
|
13
|
+
self.use_ssl = true
|
14
|
+
self.timeout = 180
|
15
|
+
|
16
|
+
self.username = nil
|
17
|
+
self.password = nil
|
18
|
+
|
19
|
+
self.proxy_host = nil
|
20
|
+
self.proxy_port = nil
|
21
|
+
self.proxy_user = nil
|
22
|
+
self.proxy_password = nil
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
data/lib/loopiator/credits.rb
CHANGED
@@ -2,12 +2,12 @@ module Loopiator
|
|
2
2
|
module Credits
|
3
3
|
|
4
4
|
# https://www.loopia.se/api/getcreditsamount/
|
5
|
-
def get_credits_amount(
|
5
|
+
def get_credits_amount(include_vat: true, customer_number: "")
|
6
6
|
call("getCreditsAmount", customer_number, with_vat).to_f
|
7
7
|
end
|
8
8
|
|
9
9
|
# https://www.loopia.se/api/payinvoiceusingcredits/
|
10
|
-
def pay_invoice_using_credits(reference_number, customer_number
|
10
|
+
def pay_invoice_using_credits(reference_number, customer_number: "")
|
11
11
|
parse_status_response(call("payInvoiceUsingCredits", customer_number, reference_number.to_s))
|
12
12
|
end
|
13
13
|
|
data/lib/loopiator/domains.rb
CHANGED
@@ -7,7 +7,7 @@ module Loopiator
|
|
7
7
|
return response.eql?(:ok)
|
8
8
|
end
|
9
9
|
|
10
|
-
def get_domain(domain_name, customer_number
|
10
|
+
def get_domain(domain_name, customer_number: "")
|
11
11
|
domain = nil
|
12
12
|
response = call("getDomain", customer_number, encode_domain(domain_name))
|
13
13
|
|
@@ -31,7 +31,7 @@ module Loopiator
|
|
31
31
|
ordered = order_domain(domain_name, accept_terms: true, customer_number: customer_number, raise_exception_on_occupied: raise_exception_on_occupied)
|
32
32
|
|
33
33
|
if (ordered)
|
34
|
-
domain = get_domain(domain_name, customer_number)
|
34
|
+
domain = get_domain(domain_name, customer_number: customer_number)
|
35
35
|
|
36
36
|
if (domain && domain.needs_to_be_paid? && !domain.reference_number.nil? && !domain.reference_number.empty?)
|
37
37
|
success = pay_invoice_using_credits(domain.reference_number, customer_number)
|
@@ -43,7 +43,7 @@ module Loopiator
|
|
43
43
|
|
44
44
|
private
|
45
45
|
def encode_domain(domain_name)
|
46
|
-
|
46
|
+
Loopiator::Utilities.encode_domain(domain_name)
|
47
47
|
end
|
48
48
|
|
49
49
|
end
|
data/loopiator.gemspec
CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
|
|
3
3
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
|
4
4
|
|
5
5
|
s.name = 'loopiator'
|
6
|
-
s.version = '0.
|
6
|
+
s.version = '0.3.0'
|
7
7
|
|
8
8
|
s.homepage = "https://github.com/Agiley/Loopiator"
|
9
9
|
s.email = "sebastian@agiley.se"
|
@@ -15,17 +15,17 @@ Gem::Specification.new do |s|
|
|
15
15
|
|
16
16
|
s.add_development_dependency 'rake'
|
17
17
|
s.add_development_dependency 'rspec'
|
18
|
-
s.add_development_dependency 'mocha'
|
19
18
|
|
20
19
|
# = MANIFEST =
|
21
20
|
s.files = %w[
|
22
21
|
Gemfile
|
23
22
|
README.md
|
24
23
|
Rakefile
|
25
|
-
lib/generators/
|
26
|
-
lib/generators/templates/
|
24
|
+
lib/generators/loopiator_generator.rb
|
25
|
+
lib/generators/templates/initializer.rb
|
27
26
|
lib/loopiator.rb
|
28
27
|
lib/loopiator/client.rb
|
28
|
+
lib/loopiator/configuration.rb
|
29
29
|
lib/loopiator/credits.rb
|
30
30
|
lib/loopiator/domains.rb
|
31
31
|
lib/loopiator/errors.rb
|
@@ -33,11 +33,13 @@ Gem::Specification.new do |s|
|
|
33
33
|
lib/loopiator/logger.rb
|
34
34
|
lib/loopiator/models/domain.rb
|
35
35
|
lib/loopiator/railtie.rb
|
36
|
+
lib/loopiator/utilities.rb
|
36
37
|
loopiator.gemspec
|
37
|
-
spec/loopiator/
|
38
|
+
spec/loopiator/configuration_spec.rb
|
38
39
|
spec/loopiator/credits_spec.rb
|
39
40
|
spec/loopiator/domains_spec.rb
|
40
41
|
spec/spec_helper.rb
|
42
|
+
spec/support/helpers.rb
|
41
43
|
]
|
42
44
|
# = MANIFEST =
|
43
45
|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe "Loopiator Configuration" do
|
4
|
+
context "When configuring Loopiator" do
|
5
|
+
|
6
|
+
context "Using defaults" do
|
7
|
+
it "should not have a username set" do
|
8
|
+
expect(Loopiator.configuration.username).to be == nil
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should not have a password set" do
|
12
|
+
expect(Loopiator.configuration.password).to be == nil
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a default host set" do
|
16
|
+
expect(Loopiator.configuration.host).to be == "api.loopia.se"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have a default port set" do
|
20
|
+
expect(Loopiator.configuration.port).to be == 443
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have a default path set" do
|
24
|
+
expect(Loopiator.configuration.path).to be == "/RPCSERV"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should have a default timeout set" do
|
28
|
+
expect(Loopiator.configuration.timeout).to be == 180
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "Using custom configuration" do
|
33
|
+
before :each do
|
34
|
+
Loopiator.configure do |config|
|
35
|
+
config.username = "test_user"
|
36
|
+
config.password = "test_password"
|
37
|
+
config.timeout = 200
|
38
|
+
config.proxy_host = "192.1.1.1"
|
39
|
+
config.proxy_port = 8080
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
after :each do
|
44
|
+
Loopiator.reset
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should have a custom username set" do
|
48
|
+
expect(Loopiator.configuration.username).to be == "test_user"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should have a custom password set" do
|
52
|
+
expect(Loopiator.configuration.password).to be == "test_password"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should have a custom timeout set" do
|
56
|
+
expect(Loopiator.configuration.timeout).to be == 200
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should have a custom proxy host set" do
|
60
|
+
expect(Loopiator.configuration.proxy_host).to be == "192.1.1.1"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should have a custom proxy port set" do
|
64
|
+
expect(Loopiator.configuration.proxy_port).to be == 8080
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should have a default host set" do
|
68
|
+
expect(Loopiator.configuration.host).to be == "api.loopia.se"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should have a default port set" do
|
72
|
+
expect(Loopiator.configuration.port).to be == 443
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should have a default path set" do
|
76
|
+
expect(Loopiator.configuration.path).to be == "/RPCSERV"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -2,27 +2,26 @@
|
|
2
2
|
|
3
3
|
require File.expand_path('../../spec_helper', __FILE__)
|
4
4
|
|
5
|
-
describe "Credits Management
|
5
|
+
describe "Credits Management" do
|
6
6
|
|
7
|
-
before
|
7
|
+
before :each do
|
8
8
|
@client = Loopiator::Client.new
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
after :each do
|
12
|
+
Loopiator.reset
|
13
|
+
end
|
14
|
+
|
15
|
+
context "When managing my credits:" do
|
13
16
|
it "I should be able to check how many credits I currently have (with VAT)" do
|
14
|
-
@client.
|
15
|
-
|
16
|
-
remaining_credits.should == 125
|
17
|
+
expect(@client).to receive(:get_credits_amount).with(include_vat: true).and_return(125)
|
18
|
+
expect(@client.get_credits_amount(include_vat: true)).to be == 125
|
17
19
|
end
|
18
20
|
|
19
21
|
it "I should be able to check how many credits I currently have (without VAT)" do
|
20
|
-
@client.
|
21
|
-
|
22
|
-
remaining_credits.should == 100
|
22
|
+
expect(@client).to receive(:get_credits_amount).with(include_vat: false).and_return(100)
|
23
|
+
expect(@client.get_credits_amount(include_vat: false)).to be == 100
|
23
24
|
end
|
24
|
-
|
25
25
|
end
|
26
26
|
|
27
|
-
end
|
28
|
-
|
27
|
+
end
|
@@ -2,30 +2,35 @@
|
|
2
2
|
|
3
3
|
require File.expand_path('../../spec_helper', __FILE__)
|
4
4
|
|
5
|
-
describe "Domain Management
|
5
|
+
describe "Domain Management" do
|
6
6
|
|
7
|
-
before
|
7
|
+
before :each do
|
8
|
+
set_configuration_with_real_credentials if real_credentials_available?
|
8
9
|
@client = Loopiator::Client.new
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
after :each do
|
13
|
+
Loopiator.reset
|
14
|
+
end
|
15
|
+
|
16
|
+
context "When checking domain availability:" do
|
13
17
|
it "I should be able to check that a domain is available" do
|
14
|
-
|
18
|
+
expect(@client).to receive(:domain_is_free).with('dsadsadsadsadsadsadasdas.se').and_return(true) unless real_credentials_available?
|
19
|
+
expect(@client.domain_is_free('dsadsadsadsadsadsadasdas.se')).to be == true
|
15
20
|
end
|
16
|
-
|
21
|
+
|
17
22
|
it "I should be able to check if a domain is not available" do
|
18
|
-
|
23
|
+
expect(@client).to receive(:domain_is_free).with('aftonbladet.se').and_return(false) unless real_credentials_available?
|
24
|
+
expect(@client.domain_is_free('aftonbladet.se')).to be == false
|
19
25
|
end
|
20
|
-
|
26
|
+
|
21
27
|
it "I should be able to check if an IDN-domain is available" do
|
22
|
-
|
28
|
+
expect(@client).to receive(:domain_is_free).with('såhärtestarmanenidndomänkanske.se').and_return(true) unless real_credentials_available?
|
29
|
+
expect(@client.domain_is_free('såhärtestarmanenidndomänkanske.se')).to be == true
|
23
30
|
end
|
24
|
-
|
25
31
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
32
|
+
|
33
|
+
context "When managing domains" do
|
29
34
|
it "I should be able to check the details for a domain that I own" do
|
30
35
|
hash = {"paid" => 1,
|
31
36
|
"unpaid_amount" => 0,
|
@@ -35,19 +40,19 @@ describe "Domain Management -" do
|
|
35
40
|
"expiration_date" => "UNKNOWN",
|
36
41
|
"reference_no" => "999999"
|
37
42
|
}
|
38
|
-
|
43
|
+
|
39
44
|
mock = Loopiator::Models::Domain.new(hash)
|
40
|
-
|
41
|
-
|
42
|
-
|
45
|
+
|
46
|
+
expect(@client).to receive(:get_domain).with('testdomain.se').and_return(mock)
|
47
|
+
|
43
48
|
domain = @client.get_domain('testdomain.se')
|
44
|
-
|
45
|
-
domain.paid
|
46
|
-
|
47
|
-
domain.registered
|
48
|
-
|
49
|
+
|
50
|
+
expect(domain.paid?).to be == true
|
51
|
+
expect(domain.needs_to_be_paid?).to be == false
|
52
|
+
expect(domain.registered?).to be == true
|
53
|
+
expect(domain.reference_number).to be == "999999"
|
49
54
|
end
|
50
|
-
|
55
|
+
|
51
56
|
it "I should be able to see that a domain hasn't been paid for yet." do
|
52
57
|
hash = {"paid" => 0,
|
53
58
|
"unpaid_amount" => 99,
|
@@ -57,19 +62,19 @@ describe "Domain Management -" do
|
|
57
62
|
"expiration_date" => "UNKNOWN",
|
58
63
|
"reference_no" => "1111111"
|
59
64
|
}
|
60
|
-
|
65
|
+
|
61
66
|
mock = Loopiator::Models::Domain.new(hash)
|
62
|
-
|
63
|
-
|
64
|
-
|
67
|
+
|
68
|
+
|
69
|
+
expect(@client).to receive(:get_domain).with('testdomain.se').and_return(mock)
|
70
|
+
|
65
71
|
domain = @client.get_domain('testdomain.se')
|
66
|
-
|
67
|
-
domain.paid
|
68
|
-
|
69
|
-
domain.unpaid_amount.
|
70
|
-
|
72
|
+
|
73
|
+
expect(domain.paid?).to be == false
|
74
|
+
expect(domain.needs_to_be_paid?).to be == true
|
75
|
+
expect(domain.unpaid_amount).to be == 99
|
76
|
+
expect(domain.reference_number).to be == "1111111"
|
71
77
|
end
|
72
|
-
|
73
78
|
end
|
74
|
-
|
79
|
+
|
75
80
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -21,6 +21,19 @@ Bundler.require
|
|
21
21
|
|
22
22
|
require File.expand_path('../../lib/loopiator', __FILE__)
|
23
23
|
|
24
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
25
|
+
|
24
26
|
RSpec.configure do |config|
|
25
|
-
config.
|
27
|
+
config.include(Helpers)
|
28
|
+
|
29
|
+
config.color = true
|
30
|
+
config.formatter = 'documentation'
|
31
|
+
|
32
|
+
config.expect_with :rspec do |expectations|
|
33
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
34
|
+
end
|
35
|
+
|
36
|
+
config.mock_with :rspec do |mocks|
|
37
|
+
mocks.verify_partial_doubles = true
|
38
|
+
end
|
26
39
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Helpers
|
4
|
+
def real_credentials_available?
|
5
|
+
::File.exists?(File.join(File.dirname(__FILE__), 'credentials.yml'))
|
6
|
+
end
|
7
|
+
|
8
|
+
def set_configuration_with_real_credentials
|
9
|
+
cfg = ::YAML.load_file(File.join(File.dirname(__FILE__), 'credentials.yml'))
|
10
|
+
|
11
|
+
::Loopiator.configure do |config|
|
12
|
+
cfg.each do |key, value|
|
13
|
+
config.send("#{key}=", value)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loopiator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Johnsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simpleidn
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: mocha
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
description: Interface for communicating with Loopia's API
|
70
56
|
email: sebastian@agiley.se
|
71
57
|
executables: []
|
@@ -75,10 +61,11 @@ files:
|
|
75
61
|
- Gemfile
|
76
62
|
- README.md
|
77
63
|
- Rakefile
|
78
|
-
- lib/generators/
|
79
|
-
- lib/generators/templates/
|
64
|
+
- lib/generators/loopiator_generator.rb
|
65
|
+
- lib/generators/templates/initializer.rb
|
80
66
|
- lib/loopiator.rb
|
81
67
|
- lib/loopiator/client.rb
|
68
|
+
- lib/loopiator/configuration.rb
|
82
69
|
- lib/loopiator/credits.rb
|
83
70
|
- lib/loopiator/domains.rb
|
84
71
|
- lib/loopiator/errors.rb
|
@@ -86,11 +73,13 @@ files:
|
|
86
73
|
- lib/loopiator/logger.rb
|
87
74
|
- lib/loopiator/models/domain.rb
|
88
75
|
- lib/loopiator/railtie.rb
|
76
|
+
- lib/loopiator/utilities.rb
|
89
77
|
- loopiator.gemspec
|
90
|
-
- spec/loopiator/
|
78
|
+
- spec/loopiator/configuration_spec.rb
|
91
79
|
- spec/loopiator/credits_spec.rb
|
92
80
|
- spec/loopiator/domains_spec.rb
|
93
81
|
- spec/spec_helper.rb
|
82
|
+
- spec/support/helpers.rb
|
94
83
|
homepage: https://github.com/Agiley/Loopiator
|
95
84
|
licenses: []
|
96
85
|
metadata: {}
|
@@ -110,12 +99,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
99
|
version: 1.3.5
|
111
100
|
requirements: []
|
112
101
|
rubyforge_project:
|
113
|
-
rubygems_version: 2.4.
|
102
|
+
rubygems_version: 2.4.8
|
114
103
|
signing_key:
|
115
104
|
specification_version: 2
|
116
105
|
summary: Interface for communicating with Loopia's API
|
117
106
|
test_files:
|
118
|
-
- spec/loopiator/
|
107
|
+
- spec/loopiator/configuration_spec.rb
|
119
108
|
- spec/loopiator/credits_spec.rb
|
120
109
|
- spec/loopiator/domains_spec.rb
|
121
110
|
- spec/spec_helper.rb
|
111
|
+
- spec/support/helpers.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'generators/helpers/file_helper'
|
2
|
-
|
3
|
-
module Loopiator
|
4
|
-
module Generators
|
5
|
-
class LoopiatorGenerator < Rails::Generators::Base
|
6
|
-
namespace "loopiator"
|
7
|
-
source_root File.expand_path("../../templates", __FILE__)
|
8
|
-
|
9
|
-
desc "Copies loopia.yml to the Rails app's config directory."
|
10
|
-
|
11
|
-
def copy_config
|
12
|
-
template "loopia.template.yml", "config/loopia.yml"
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
@@ -1,16 +0,0 @@
|
|
1
|
-
---
|
2
|
-
development:
|
3
|
-
username: "your-username"
|
4
|
-
password: "your-password"
|
5
|
-
endpoint: "https://api.loopia.se/RPCSERV"
|
6
|
-
|
7
|
-
test:
|
8
|
-
username: "your-username"
|
9
|
-
password: "your-password"
|
10
|
-
endpoint: "https://api.loopia.se/RPCSERV"
|
11
|
-
|
12
|
-
production:
|
13
|
-
username: "your-username"
|
14
|
-
password: "your-password"
|
15
|
-
endpoint: "https://api.loopia.se/RPCSERV"
|
16
|
-
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
-
|
3
|
-
describe "Loopiator Api Client" do
|
4
|
-
describe "- When initializing a new client" do
|
5
|
-
|
6
|
-
describe "- With defaults:" do
|
7
|
-
before(:each) do
|
8
|
-
config = {username: "test_user",
|
9
|
-
password: "test_password",
|
10
|
-
endpoint: "https://api.loopia.se/RPCSERV" }
|
11
|
-
|
12
|
-
Loopiator::Client.any_instance.expects(:set_config).at_least_once.returns(config)
|
13
|
-
|
14
|
-
@client = Loopiator::Client.new(config)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should have a username set" do
|
18
|
-
@client.username.should == "test_user"
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should have a password set" do
|
22
|
-
@client.password.should == "test_password"
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should have an endpoint set" do
|
26
|
-
@client.endpoint.should == "https://api.loopia.se/RPCSERV"
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|