nostos-source-illiad 0.0.1 → 0.0.2

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.
@@ -1,11 +1,13 @@
1
1
  # Extend Illiad::Transaction to map to a Source::Illiad object.
2
2
  module Illiad
3
- class Transaction
4
- def to_record
5
- Source::Illiad::Record.new(:id => read_attribute(:TransactionNumber),
6
- :title => read_attribute(:LoanTitle),
7
- :due_date => read_attribute(:DueDate),
8
- :charged => charged?)
3
+ module AR
4
+ class Transaction
5
+ def to_record
6
+ Source::Illiad::Record.new(:id => read_attribute(:TransactionNumber),
7
+ :title => read_attribute(:LoanTitle),
8
+ :due_date => read_attribute(:DueDate),
9
+ :charged => charged?)
10
+ end
9
11
  end
10
12
  end
11
13
  end
@@ -3,8 +3,8 @@
3
3
  require 'nostos-source-illiad/railtie.rb'
4
4
  require 'nostos-source-illiad/config.rb'
5
5
  require 'nostos-source-illiad/record.rb'
6
+ require 'illiad'
6
7
  require 'illiad/transaction.rb'
7
- require 'activerecord-illiad-adapter'
8
8
 
9
9
 
10
10
  # activerecord-illiad-adapter is named Illiad, so we must rename it to avoid
@@ -22,7 +22,7 @@ module Source
22
22
  end
23
23
 
24
24
  def self.find(id)
25
- IlliadAR::Transaction.find(id).to_record
25
+ IlliadAR::AR::Transaction.find(id).to_record
26
26
  end
27
27
 
28
28
  # Poll Illiad for new transactions to process. The strategy is to find
@@ -50,7 +50,7 @@ module Source
50
50
  Transactions.RequestType = 'Loan'
51
51
  SQL
52
52
 
53
- IlliadAR::Transaction.find_by_sql(sql).map {|t| t.to_record}
53
+ IlliadAR::AR::Transaction.find_by_sql(sql).map {|t| t.to_record}
54
54
  end
55
55
  end
56
56
  end
@@ -1,7 +1,7 @@
1
1
  module Source
2
2
  module Illiad
3
3
  class Config
4
- attr_accessor :number_of_days_to_poll, :db
4
+ attr_accessor :number_of_days_to_poll, :db, :webcirc
5
5
  end
6
6
  end
7
7
  end
@@ -1,5 +1,4 @@
1
1
  require 'rails'
2
- require 'activerecord-illiad-adapter'
3
2
 
4
3
  module Source
5
4
  module Illiad
@@ -10,11 +9,12 @@ module Source
10
9
  Source::Illiad.configure do |config|
11
10
  config.number_of_days_to_poll = app.config.source_illiad[:number_of_days_to_poll]
12
11
  config.db = app.config.source_illiad[:db]
12
+ config.webcirc = app.config.source_illiad[:webcirc]
13
13
  end
14
14
  end
15
15
 
16
16
  initializer "source_illiad.establish_connection", :after => "source_illiad.configure" do |app|
17
- IlliadAR::Base.establish_connection(Source::Illiad.config.db)
17
+ IlliadAR::AR::Base.establish_connection(Source::Illiad.config.db)
18
18
  end
19
19
  end
20
20
  end
@@ -1,3 +1,5 @@
1
+ require 'mechanize'
2
+
1
3
  module Source
2
4
  module Illiad
3
5
  class Record
@@ -13,7 +15,7 @@ module Source
13
15
 
14
16
  def charged?(force = false)
15
17
  if force then
16
- t = IlliadAR::Transaction.find(@id)
18
+ t = IlliadAR::AR::Transaction.find(@id)
17
19
  @due_date = t.due_date
18
20
  @charged = t.charged?
19
21
  end
@@ -21,14 +23,41 @@ module Source
21
23
  @charged
22
24
  end
23
25
 
26
+ def charge!
27
+ # Create a new mechanize object
28
+ agent = Mechanize.new# { |a| a.log = Logger.new(STDERR) }
29
+
30
+ # Load Illiad Web Circulation
31
+ page = agent.get(Source::Illiad.config.webcirc[:url])
32
+
33
+ # Select, fill in, and submit the logon form.
34
+ page = page.form('formLogon') do |f|
35
+ f.TextBoxUsername = Source::Illiad.config.webcirc[:username]
36
+ f.TextBoxPassword = Source::Illiad.config.webcirc[:password]
37
+ end.click_button
38
+
39
+ # Mechanize::ResponseCodeError - 500 => Net::HTTPInternalServerError:
40
+ # catch these and try again.
41
+ page = page.form('aspnetForm') do |f|
42
+ f['ctl00$TextBoxCheckOutTransaction'] = @id
43
+ end.click_button
44
+
45
+ if !page.at("#ctl00_UpdatePanelStatusMessages .success").nil?
46
+ type = 'success'
47
+ elsif !page.at("#ctl00_UpdatePanelStatusMessages .warning").nil?
48
+ type = 'failure'
49
+ else
50
+ type = 'error'
51
+ end
52
+
53
+ puts "#{@id} - #{@title}"
54
+ puts page.at("#ctl00_UpdatePanelStatusMessages .failure, #ctl00_UpdatePanelStatusMessages .success, #ctl00_UpdatePanelStatusMessages .warning").inner_html
55
+ end
56
+
24
57
  private
25
58
 
26
59
  attr_reader :charged
27
60
  attr_writer :id, :title, :due_date, :charged
28
-
29
-
30
-
31
-
32
61
  end
33
62
  end
34
63
  end
@@ -1,5 +1,5 @@
1
1
  module Source
2
2
  module Illiad
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -18,5 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
- s.add_dependency('activerecord-illiad-adapter')
21
+
22
+ s.add_dependency('illiad')
23
+ s.add_dependency('mechanize')
22
24
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: nostos-source-illiad
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Brice Stacey
@@ -10,10 +10,10 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-12 00:00:00 Z
13
+ date: 2011-04-15 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: activerecord-illiad-adapter
16
+ name: illiad
17
17
  prerelease: false
18
18
  requirement: &id001 !ruby/object:Gem::Requirement
19
19
  none: false
@@ -23,6 +23,17 @@ dependencies:
23
23
  version: "0"
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: mechanize
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ version_requirements: *id002
26
37
  description: Nostos Source Driver for Illiad
27
38
  email:
28
39
  - bricestacey@gmail.com