linguara 0.0.4 → 0.0.5
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/VERSION +1 -1
 - data/lib/linguara/configuration.rb +1 -1
 - data/lib/linguara/request.rb +9 -0
 - data/lib/linguara.rb +22 -8
 - data/linguara.gemspec +3 -2
 - data/spec/linguara_spec.rb +52 -5
 - metadata +5 -4
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.0.5
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Linguara
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Configuration
         
     | 
| 
       3 
     | 
    
         
            -
                attr_accessor :api_key, :server_path, :return_url, :user, :password, :request_valid_for, :site_url, :log 
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :api_key, :server_path, :return_url, :user, :password, :request_valid_for, :site_url, :log
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                def initialize
         
     | 
| 
       6 
6 
     | 
    
         
             
                  self.log = true
         
     | 
    
        data/lib/linguara.rb
    CHANGED
    
    | 
         @@ -1,8 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'net/http'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'uri'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'nokogiri'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'linguara/configuration'
         
     | 
| 
       4 
5 
     | 
    
         
             
            require 'linguara/utils'
         
     | 
| 
       5 
6 
     | 
    
         
             
            require 'linguara/translation'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'linguara/request'
         
     | 
| 
       6 
8 
     | 
    
         | 
| 
       7 
9 
     | 
    
         
             
            module Linguara
         
     | 
| 
       8 
10 
     | 
    
         
             
              extend Linguara::Utils
         
     | 
| 
         @@ -31,6 +33,7 @@ module Linguara 
     | 
|
| 
       31 
33 
     | 
    
         
             
                  end
         
     | 
| 
       32 
34 
     | 
    
         
             
                end
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
      
 36 
     | 
    
         
            +
                # Sends translation request
         
     | 
| 
       34 
37 
     | 
    
         
             
                def send_translation_request(element, options = {})
         
     | 
| 
       35 
38 
     | 
    
         
             
                  translation = Translation.new(element, options) 
         
     | 
| 
       36 
39 
     | 
    
         
             
                  url= URI.parse("#{Linguara.configuration.server_path}api/translations.xml")
         
     | 
| 
         @@ -38,30 +41,46 @@ module Linguara 
     | 
|
| 
       38 
41 
     | 
    
         
             
                  send_linguara_request(req, url)
         
     | 
| 
       39 
42 
     | 
    
         
             
                end
         
     | 
| 
       40 
43 
     | 
    
         | 
| 
      
 44 
     | 
    
         
            +
                # Sends status request
         
     | 
| 
       41 
45 
     | 
    
         
             
                def send_status_query(translation_request_id)
         
     | 
| 
       42 
46 
     | 
    
         
             
                  url= URI.parse("#{Linguara.configuration.server_path}api/translations/#{translation_request_id}/status.xml")
         
     | 
| 
       43 
47 
     | 
    
         
             
                  req = prepare_request(url, :authorization => true)
         
     | 
| 
       44 
48 
     | 
    
         
             
                  send_linguara_request(req, url)
         
     | 
| 
       45 
49 
     | 
    
         
             
                end
         
     | 
| 
       46 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
                # Sends languages request
         
     | 
| 
       47 
52 
     | 
    
         
             
                def send_languages_request(options={})
         
     | 
| 
       48 
53 
     | 
    
         
             
                  url= URI.parse("#{Linguara.configuration.server_path}api/languages.xml")
         
     | 
| 
       49 
54 
     | 
    
         
             
                  req = prepare_request(url, options.merge(:method => :get))
         
     | 
| 
       50 
55 
     | 
    
         
             
                  send_linguara_request(req, url)
         
     | 
| 
       51 
56 
     | 
    
         
             
                end
         
     | 
| 
       52 
57 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                 
     | 
| 
      
 58 
     | 
    
         
            +
                # Sends specializations request
         
     | 
| 
      
 59 
     | 
    
         
            +
                def send_specializations_request(options = {})
         
     | 
| 
       54 
60 
     | 
    
         
             
                  url= URI.parse("#{Linguara.configuration.server_path}api/specializations.xml")
         
     | 
| 
       55 
61 
     | 
    
         
             
                  req = prepare_request(url, options.merge(:method => :get))
         
     | 
| 
       56 
62 
     | 
    
         
             
                  send_linguara_request(req, url)
         
     | 
| 
       57 
63 
     | 
    
         
             
                end
         
     | 
| 
       58 
64 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
                 
     | 
| 
      
 65 
     | 
    
         
            +
                # Sends translators request
         
     | 
| 
      
 66 
     | 
    
         
            +
                def send_translators_request(options = {})
         
     | 
| 
       60 
67 
     | 
    
         
             
                  url= URI.parse("#{Linguara.configuration.server_path}api/translators.xml")
         
     | 
| 
       61 
68 
     | 
    
         
             
                  req = prepare_request(url, options.merge(:method => :get))
         
     | 
| 
       62 
69 
     | 
    
         
             
                  send_linguara_request(req, url)
         
     | 
| 
       63 
70 
     | 
    
         
             
                end
         
     | 
| 
       64 
71 
     | 
    
         | 
| 
      
 72 
     | 
    
         
            +
                def available_languages
         
     | 
| 
      
 73 
     | 
    
         
            +
                  Nokogiri::XML(send_languages_request.response.body).xpath("//language").map do |element|
         
     | 
| 
      
 74 
     | 
    
         
            +
                    [element.xpath('name').inner_text, element.xpath('code').inner_text]
         
     | 
| 
      
 75 
     | 
    
         
            +
                  end
         
     | 
| 
      
 76 
     | 
    
         
            +
                end
         
     | 
| 
      
 77 
     | 
    
         
            +
                
         
     | 
| 
      
 78 
     | 
    
         
            +
                def available_specializations
         
     | 
| 
      
 79 
     | 
    
         
            +
                  Nokogiri::XML(send_specializations_request.response.body).xpath("//specialization").map do |element|
         
     | 
| 
      
 80 
     | 
    
         
            +
                    [element.xpath('name').inner_text, element.xpath('id').inner_text]
         
     | 
| 
      
 81 
     | 
    
         
            +
                  end
         
     | 
| 
      
 82 
     | 
    
         
            +
                end    
         
     | 
| 
      
 83 
     | 
    
         
            +
                
         
     | 
| 
       65 
84 
     | 
    
         
             
                # Override this method if you want to perform some action when connection
         
     | 
| 
       66 
85 
     | 
    
         
             
                # with linguara cannot be established e.g. log request or redo the send
         
     | 
| 
       67 
86 
     | 
    
         
             
                def handle_request_error
         
     | 
| 
         @@ -112,12 +131,7 @@ module Linguara 
     | 
|
| 
       112 
131 
     | 
    
         
             
                    log("SENDING LINGUARA REQUEST TO #{url.path}: \n#{req.body}")
         
     | 
| 
       113 
132 
     | 
    
         
             
                    res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
         
     | 
| 
       114 
133 
     | 
    
         
             
                    log("LINGUARA RESPONSE: #{res.message} -- #{res.body}")
         
     | 
| 
       115 
     | 
    
         
            -
                     
     | 
| 
       116 
     | 
    
         
            -
                    if Linguara.configuration.return_request
         
     | 
| 
       117 
     | 
    
         
            -
                      return req
         
     | 
| 
       118 
     | 
    
         
            -
                    else
         
     | 
| 
       119 
     | 
    
         
            -
                      return res
         
     | 
| 
       120 
     | 
    
         
            -
                    end
         
     | 
| 
      
 134 
     | 
    
         
            +
                    return LinguaraRequest.new( :request => req, :response => res )
         
     | 
| 
       121 
135 
     | 
    
         
             
                  rescue Errno::ETIMEDOUT 
         
     | 
| 
       122 
136 
     | 
    
         
             
                    handle_request_error
         
     | 
| 
       123 
137 
     | 
    
         
             
                  end
         
     | 
    
        data/linguara.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{linguara}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0.0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.0.5"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Aleksander Dabrowski", "Piotr Barczuk"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2010-07- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2010-07-30}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{Gem to integrate with linguara api}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{aleks@kumulator.pl}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -27,6 +27,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       27 
27 
     | 
    
         
             
                 "lib/linguara.rb",
         
     | 
| 
       28 
28 
     | 
    
         
             
                 "lib/linguara/active_record.rb",
         
     | 
| 
       29 
29 
     | 
    
         
             
                 "lib/linguara/configuration.rb",
         
     | 
| 
      
 30 
     | 
    
         
            +
                 "lib/linguara/request.rb",
         
     | 
| 
       30 
31 
     | 
    
         
             
                 "lib/linguara/translation.rb",
         
     | 
| 
       31 
32 
     | 
    
         
             
                 "lib/linguara/utils.rb",
         
     | 
| 
       32 
33 
     | 
    
         
             
                 "linguara.gemspec",
         
     | 
    
        data/spec/linguara_spec.rb
    CHANGED
    
    | 
         @@ -36,7 +36,7 @@ describe "Linguara" do 
     | 
|
| 
       36 
36 
     | 
    
         
             
                it 'sends request' do
         
     | 
| 
       37 
37 
     | 
    
         
             
                  blog_post = BlogPost.new( :title => "Old title", :body => "Old body")
         
     | 
| 
       38 
38 
     | 
    
         
             
                  FakeWeb.register_uri(:post, "http://www.example.com/api/translations.xml", :body => 'response_from_linguara', :status => 200) 
         
     | 
| 
       39 
     | 
    
         
            -
                  response = Linguara.send_translation_request(blog_post)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  response = Linguara.send_translation_request(blog_post).response
         
     | 
| 
       40 
40 
     | 
    
         
             
                  response.body.should eql('response_from_linguara')
         
     | 
| 
       41 
41 
     | 
    
         
             
                end     
         
     | 
| 
       42 
42 
     | 
    
         
             
              end
         
     | 
| 
         @@ -44,7 +44,7 @@ describe "Linguara" do 
     | 
|
| 
       44 
44 
     | 
    
         
             
              describe '#send_status_query' do
         
     | 
| 
       45 
45 
     | 
    
         
             
                it 'sends request' do
         
     | 
| 
       46 
46 
     | 
    
         
             
                  FakeWeb.register_uri(:post, "http://www.example.com/api/translations/5/status.xml", :body => 'response_from_linguara', :status => 200) 
         
     | 
| 
       47 
     | 
    
         
            -
                  response = Linguara.send_status_query(5)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  response = Linguara.send_status_query(5).response
         
     | 
| 
       48 
48 
     | 
    
         
             
                  response.body.should eql('response_from_linguara')
         
     | 
| 
       49 
49 
     | 
    
         
             
                end     
         
     | 
| 
       50 
50 
     | 
    
         
             
              end
         
     | 
| 
         @@ -52,7 +52,7 @@ describe "Linguara" do 
     | 
|
| 
       52 
52 
     | 
    
         
             
              describe '#send_languages_request' do
         
     | 
| 
       53 
53 
     | 
    
         
             
                it 'sends request' do
         
     | 
| 
       54 
54 
     | 
    
         
             
                  FakeWeb.register_uri(:get, "http://www.example.com/api/languages.xml", :body => 'response_from_linguara', :status => 200) 
         
     | 
| 
       55 
     | 
    
         
            -
                  response = Linguara.send_languages_request("city"=>"321", "specialization"=>"technical", "country"=>"pl", "native_speaker"=>"1", "max_price"=>"12")
         
     | 
| 
      
 55 
     | 
    
         
            +
                  response = Linguara.send_languages_request("city"=>"321", "specialization"=>"technical", "country"=>"pl", "native_speaker"=>"1", "max_price"=>"12").response
         
     | 
| 
       56 
56 
     | 
    
         
             
                  response.body.should eql('response_from_linguara')
         
     | 
| 
       57 
57 
     | 
    
         
             
                end
         
     | 
| 
       58 
58 
     | 
    
         
             
              end
         
     | 
| 
         @@ -60,7 +60,7 @@ describe "Linguara" do 
     | 
|
| 
       60 
60 
     | 
    
         
             
              describe '#send_specializations_request' do
         
     | 
| 
       61 
61 
     | 
    
         
             
                it 'sends request' do
         
     | 
| 
       62 
62 
     | 
    
         
             
                  FakeWeb.register_uri(:get, "http://www.example.com/api/specializations.xml", :body => 'response_from_linguara', :status => 200) 
         
     | 
| 
       63 
     | 
    
         
            -
                  response = Linguara.send_specializations_request("language"=>"suomi", "sworn" => "1", "native_speaker"=>"1", "max_price"=>"12")
         
     | 
| 
      
 63 
     | 
    
         
            +
                  response = Linguara.send_specializations_request("language"=>"suomi", "sworn" => "1", "native_speaker"=>"1", "max_price"=>"12").response
         
     | 
| 
       64 
64 
     | 
    
         
             
                  response.body.should eql('response_from_linguara')
         
     | 
| 
       65 
65 
     | 
    
         
             
                end
         
     | 
| 
       66 
66 
     | 
    
         
             
              end
         
     | 
| 
         @@ -68,7 +68,7 @@ describe "Linguara" do 
     | 
|
| 
       68 
68 
     | 
    
         
             
              describe '#send_translators_request' do
         
     | 
| 
       69 
69 
     | 
    
         
             
                it 'sends request' do
         
     | 
| 
       70 
70 
     | 
    
         
             
                  FakeWeb.register_uri(:get, "http://www.example.com/api/translators.xml", :body => 'response_from_linguara', :status => 200) 
         
     | 
| 
       71 
     | 
    
         
            -
                  response = Linguara.send_translators_request("city"=>"warsaw", "country"=>"pl", "max_price"=>"12", "query"=>"wojcisz", "target_language"=>"en", "source_language" => "pl")
         
     | 
| 
      
 71 
     | 
    
         
            +
                  response = Linguara.send_translators_request("city"=>"warsaw", "country"=>"pl", "max_price"=>"12", "query"=>"wojcisz", "target_language"=>"en", "source_language" => "pl").response
         
     | 
| 
       72 
72 
     | 
    
         
             
                  response.body.should eql('response_from_linguara')
         
     | 
| 
       73 
73 
     | 
    
         
             
                end
         
     | 
| 
       74 
74 
     | 
    
         
             
              end
         
     | 
| 
         @@ -108,7 +108,54 @@ describe "Linguara" do 
     | 
|
| 
       108 
108 
     | 
    
         
             
                end
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
              end
         
     | 
| 
      
 111 
     | 
    
         
            +
              
         
     | 
| 
      
 112 
     | 
    
         
            +
              describe '#available_languages' do
         
     | 
| 
      
 113 
     | 
    
         
            +
                before :each do 
         
     | 
| 
      
 114 
     | 
    
         
            +
                  @response_body = "<?xml version='1.0' encoding='UTF-8'?>
         
     | 
| 
      
 115 
     | 
    
         
            +
                    <languages>
         
     | 
| 
      
 116 
     | 
    
         
            +
                      <language>
         
     | 
| 
      
 117 
     | 
    
         
            +
                        <code>pl</code>
         
     | 
| 
      
 118 
     | 
    
         
            +
                        <name>Polish</name>
         
     | 
| 
      
 119 
     | 
    
         
            +
                      </language>
         
     | 
| 
      
 120 
     | 
    
         
            +
                      <language>
         
     | 
| 
      
 121 
     | 
    
         
            +
                        <code>en</code>
         
     | 
| 
      
 122 
     | 
    
         
            +
                        <name>English</name>
         
     | 
| 
      
 123 
     | 
    
         
            +
                      </language>
         
     | 
| 
      
 124 
     | 
    
         
            +
                      <language>
         
     | 
| 
      
 125 
     | 
    
         
            +
                        <code>tlh</code>
         
     | 
| 
      
 126 
     | 
    
         
            +
                        <name>Klingon</name>
         
     | 
| 
      
 127 
     | 
    
         
            +
                      </language>
         
     | 
| 
      
 128 
     | 
    
         
            +
                   </languages>"
         
     | 
| 
      
 129 
     | 
    
         
            +
                  FakeWeb.register_uri(:get, "http://www.example.com/api/languages.xml", :body => @response_body, :status => 200)      
         
     | 
| 
      
 130 
     | 
    
         
            +
                end
         
     | 
| 
      
 131 
     | 
    
         
            +
                
         
     | 
| 
      
 132 
     | 
    
         
            +
                it 'returns array with languages and codes' do
         
     | 
| 
      
 133 
     | 
    
         
            +
                  expected_array = [['Polish','pl'],['English','en'],['Klingon','tlh']]
         
     | 
| 
      
 134 
     | 
    
         
            +
                  Linguara.available_languages.should eql(expected_array)
         
     | 
| 
      
 135 
     | 
    
         
            +
                end
         
     | 
| 
      
 136 
     | 
    
         
            +
              end
         
     | 
| 
       111 
137 
     | 
    
         | 
| 
      
 138 
     | 
    
         
            +
              describe '#available_specializations' do
         
     | 
| 
      
 139 
     | 
    
         
            +
                before :each do 
         
     | 
| 
      
 140 
     | 
    
         
            +
                  @response_body = "<?xml version='1.0' encoding='UTF-8'?>
         
     | 
| 
      
 141 
     | 
    
         
            +
                    <specializations>
         
     | 
| 
      
 142 
     | 
    
         
            +
                      <specialization>
         
     | 
| 
      
 143 
     | 
    
         
            +
                        <id>2</id>
         
     | 
| 
      
 144 
     | 
    
         
            +
                        <name>IT</name>
         
     | 
| 
      
 145 
     | 
    
         
            +
                      </specialization>
         
     | 
| 
      
 146 
     | 
    
         
            +
                      <specialization>
         
     | 
| 
      
 147 
     | 
    
         
            +
                        <id>3</id>
         
     | 
| 
      
 148 
     | 
    
         
            +
                        <name>Architecture</name>
         
     | 
| 
      
 149 
     | 
    
         
            +
                      </specialization>
         
     | 
| 
      
 150 
     | 
    
         
            +
                   </specializations>"
         
     | 
| 
      
 151 
     | 
    
         
            +
                  FakeWeb.register_uri(:get, "http://www.example.com/api/specializations.xml", :body => @response_body, :status => 200)      
         
     | 
| 
      
 152 
     | 
    
         
            +
                end
         
     | 
| 
      
 153 
     | 
    
         
            +
                
         
     | 
| 
      
 154 
     | 
    
         
            +
                it 'returns array with languages and codes' do
         
     | 
| 
      
 155 
     | 
    
         
            +
                  expected_array = [['IT','2'],['Architecture','3']]
         
     | 
| 
      
 156 
     | 
    
         
            +
                  Linguara.available_specializations.should eql(expected_array)
         
     | 
| 
      
 157 
     | 
    
         
            +
                end
         
     | 
| 
      
 158 
     | 
    
         
            +
              end
         
     | 
| 
       112 
159 
     | 
    
         
             
            end
         
     | 
| 
       113 
160 
     | 
    
         | 
| 
       114 
161 
     | 
    
         
             
            describe 'Linguara::ActiveRecord' do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: linguara
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 21
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 5
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.0.5
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Aleksander Dabrowski
         
     | 
| 
         @@ -16,7 +16,7 @@ autorequire: 
     | 
|
| 
       16 
16 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       17 
17 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            date: 2010-07- 
     | 
| 
      
 19 
     | 
    
         
            +
            date: 2010-07-30 00:00:00 +02:00
         
     | 
| 
       20 
20 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       21 
21 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       22 
22 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -55,6 +55,7 @@ files: 
     | 
|
| 
       55 
55 
     | 
    
         
             
            - lib/linguara.rb
         
     | 
| 
       56 
56 
     | 
    
         
             
            - lib/linguara/active_record.rb
         
     | 
| 
       57 
57 
     | 
    
         
             
            - lib/linguara/configuration.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/linguara/request.rb
         
     | 
| 
       58 
59 
     | 
    
         
             
            - lib/linguara/translation.rb
         
     | 
| 
       59 
60 
     | 
    
         
             
            - lib/linguara/utils.rb
         
     | 
| 
       60 
61 
     | 
    
         
             
            - linguara.gemspec
         
     |