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.
- data/lib/illiad/transaction.rb +8 -6
 - data/lib/nostos-source-illiad.rb +3 -3
 - data/lib/nostos-source-illiad/config.rb +1 -1
 - data/lib/nostos-source-illiad/railtie.rb +2 -2
 - data/lib/nostos-source-illiad/record.rb +34 -5
 - data/lib/nostos-source-illiad/version.rb +1 -1
 - data/nostos-source-illiad.gemspec +3 -1
 - metadata +14 -3
 
    
        data/lib/illiad/transaction.rb
    CHANGED
    
    | 
         @@ -1,11 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Extend Illiad::Transaction to map to a Source::Illiad object.
         
     | 
| 
       2 
2 
     | 
    
         
             
            module Illiad
         
     | 
| 
       3 
     | 
    
         
            -
               
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
       5 
     | 
    
         
            -
                   
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 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
         
     | 
    
        data/lib/nostos-source-illiad.rb
    CHANGED
    
    | 
         @@ -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,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
         
     | 
| 
         @@ -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 
     | 
    
         
            -
             
     | 
| 
      
 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. 
     | 
| 
      
 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- 
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2011-04-15 00:00:00 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       16 
     | 
    
         
            -
              name:  
     | 
| 
      
 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
         
     |