loopiator 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|