little_sms 0.1.0 → 0.2.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.
- data/Gemfile +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +15 -5
- data/VERSION +1 -1
- data/lib/little_sms/component.rb +7 -27
- data/lib/little_sms/enumerable.rb +12 -0
- data/lib/little_sms/little_sms.rb +1 -0
- data/lib/little_sms/responce.rb +38 -0
- data/lib/little_sms.rb +0 -1
- data/little_sms.gemspec +13 -22
- data/test/auth.rb +10 -0
- data/test/test_component.rb +13 -6
- data/test/test_little_sms.rb +9 -3
- data/test/test_responce.rb +55 -0
- metadata +64 -102
- data/lib/little_sms/options.rb +0 -32
- data/lib/little_sms/ordering/contact.yaml +0 -20
- data/lib/little_sms/ordering/message.yaml +0 -32
- data/lib/little_sms/ordering/tag.yaml +0 -9
- data/lib/little_sms/ordering/task.yaml +0 -6
- data/lib/little_sms/ordering/user.yaml +0 -6
- data/test/test_options.rb +0 -37
    
        data/Gemfile
    CHANGED
    
    | @@ -7,9 +7,9 @@ gem "json_pure" | |
| 7 7 | 
             
            # Add dependencies to develop your gem here.
         | 
| 8 8 | 
             
            # Include everything needed to run rake, tests, features, etc.
         | 
| 9 9 | 
             
            group :development do
         | 
| 10 | 
            -
              gem "shoulda" | 
| 11 | 
            -
              gem "bundler" | 
| 12 | 
            -
              gem "jeweler" | 
| 13 | 
            -
              gem "rcov" | 
| 10 | 
            +
              gem "shoulda"
         | 
| 11 | 
            +
              gem "bundler"
         | 
| 12 | 
            +
              gem "jeweler"
         | 
| 13 | 
            +
              gem "rcov"
         | 
| 14 14 | 
             
            end
         | 
| 15 15 |  | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -7,16 +7,26 @@ This gem provides access to LittleSMS.ru API from ruby. | |
| 7 7 | 
             
            # Usage
         | 
| 8 8 | 
             
                require "little_sms"
         | 
| 9 9 | 
             
                api = LittleSMS.new(:apiuser, :apikey)
         | 
| 10 | 
            -
                api.message.send(:recipients => " | 
| 10 | 
            +
                api.message.send(:recipients => "+79211234567", :message => "Test", :test => 1)
         | 
| 11 11 |  | 
| 12 12 | 
             
            Also you can pass a block to LittleSMS object:
         | 
| 13 13 |  | 
| 14 14 | 
             
                LittleSMS.new(:apiuser, :apikey) do
         | 
| 15 | 
            -
                  msg =  message.send(:recipients => " | 
| 16 | 
            -
                  if msg | 
| 17 | 
            -
                    messages_id = msg | 
| 15 | 
            +
                  msg =  message.send(:recipients => "+79211234567", :message => "Test")
         | 
| 16 | 
            +
                  if msg.success?
         | 
| 17 | 
            +
                    messages_id = msg.messages_id.join
         | 
| 18 18 | 
             
                    status = message.status(:messages_id => messages_id)
         | 
| 19 | 
            -
                    puts "Message #{status | 
| 19 | 
            +
                    puts "Message #{status.messages[messages_id]}" unless status.error? # => Message delivered
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            In case of error:
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                LittleSMS.new(:apiuser, :apikey) do
         | 
| 26 | 
            +
                  msg = message.send(:recipients => "112", :message => "Test")
         | 
| 27 | 
            +
                  if msg.error?
         | 
| 28 | 
            +
                    puts msg.error   # => 4
         | 
| 29 | 
            +
                    puts msg.message # => "incorrect or empty recipients list"
         | 
| 20 30 | 
             
                  end
         | 
| 21 31 | 
             
                end
         | 
| 22 32 |  | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0. | 
| 1 | 
            +
            0.2.0
         | 
    
        data/lib/little_sms/component.rb
    CHANGED
    
    | @@ -3,6 +3,7 @@ require "net/http" | |
| 3 3 | 
             
            require "net/https"
         | 
| 4 4 | 
             
            require 'digest/md5'
         | 
| 5 5 | 
             
            require 'digest/sha1'
         | 
| 6 | 
            +
            require_relative "responce"
         | 
| 6 7 |  | 
| 7 8 | 
             
            class LittleSMS
         | 
| 8 9 | 
             
              class Component
         | 
| @@ -12,7 +13,7 @@ class LittleSMS | |
| 12 13 |  | 
| 13 14 | 
             
                def initialize(component, api_user, api_key)
         | 
| 14 15 | 
             
                  @api_uri = URI.parse("https://littlesms.ru:443/api/")
         | 
| 15 | 
            -
                  @ | 
| 16 | 
            +
                  @api_user, @api_key = api_user, api_key
         | 
| 16 17 | 
             
                  @component = component # Component name. E.g. message or user.
         | 
| 17 18 | 
             
                end
         | 
| 18 19 |  | 
| @@ -23,13 +24,10 @@ class LittleSMS | |
| 23 24 | 
             
                private
         | 
| 24 25 | 
             
                def request_api_method(method, options = {})
         | 
| 25 26 | 
             
                  options ||= {}
         | 
| 26 | 
            -
                  options. | 
| 27 | 
            -
             | 
| 28 | 
            -
                  # Replace original sort method
         | 
| 29 | 
            -
                  options.extend(self.class::Options)
         | 
| 30 | 
            -
                  options.method_path = {:method => method, :component => @component }
         | 
| 31 | 
            -
             | 
| 27 | 
            +
                  options = Hash[options.sort]
         | 
| 32 28 | 
             
                  options[:sign] = sign_request(options)
         | 
| 29 | 
            +
                  options[:user] = @api_user
         | 
| 30 | 
            +
             | 
| 33 31 | 
             
                  uri = @api_uri.merge("#{@component}/#{method}")
         | 
| 34 32 | 
             
                  req = Net::HTTP::Post.new(uri.path)
         | 
| 35 33 | 
             
                  req.set_form_data(options.delete_if {|k, v| k == :key})
         | 
| @@ -44,32 +42,14 @@ class LittleSMS | |
| 44 42 |  | 
| 45 43 | 
             
                  case res = res.start {|http| http.request(req) }
         | 
| 46 44 | 
             
                  when Net::HTTPSuccess, Net::HTTPRedirection
         | 
| 47 | 
            -
                    return  | 
| 45 | 
            +
                    return Responce.new(JSON.parse(res.body))
         | 
| 48 46 | 
             
                  else
         | 
| 49 47 | 
             
                    res.error!
         | 
| 50 48 | 
             
                  end
         | 
| 51 49 | 
             
                end
         | 
| 52 50 |  | 
| 53 51 | 
             
                def sign_request(options)
         | 
| 54 | 
            -
                  Digest::MD5.hexdigest(
         | 
| 55 | 
            -
                      Digest::SHA1.hexdigest(options.sort.map {|e| e[1]}.join)
         | 
| 56 | 
            -
                    )
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                # Convert all strings keys to symbols
         | 
| 60 | 
            -
                def format_output(hash)
         | 
| 61 | 
            -
                  format = lambda do |v|
         | 
| 62 | 
            -
                    if v.respond_to?(:map)
         | 
| 63 | 
            -
                      format_output(v)
         | 
| 64 | 
            -
                    else
         | 
| 65 | 
            -
                      v
         | 
| 66 | 
            -
                    end
         | 
| 67 | 
            -
                  end
         | 
| 68 | 
            -
                  if hash.kind_of? Hash
         | 
| 69 | 
            -
                    Hash[ hash.map { |k, v| [k.to_sym, format.call(v)] } ]
         | 
| 70 | 
            -
                  else
         | 
| 71 | 
            -
                    hash.map { |v| format.call(v) }
         | 
| 72 | 
            -
                  end
         | 
| 52 | 
            +
                  Digest::MD5.hexdigest(Digest::SHA1.hexdigest("#{@api_user}#{options.values.join}#{@api_key}"))
         | 
| 73 53 | 
             
                end
         | 
| 74 54 | 
             
              end
         | 
| 75 55 | 
             
            end
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            # Convert all keys to symbols
         | 
| 2 | 
            +
            module Enumerable
         | 
| 3 | 
            +
              def recursive_symbolize_keys
         | 
| 4 | 
            +
                symbolize = lambda { |v| v.respond_to?(:map) ? v.recursive_symbolize_keys : v }
         | 
| 5 | 
            +
                if self.kind_of? Hash
         | 
| 6 | 
            +
                  Hash[ self.map { |k, v| [k.to_sym, symbolize.call(v)] } ]
         | 
| 7 | 
            +
                else
         | 
| 8 | 
            +
                  self.map { |v| symbolize.call(v) }
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| @@ -0,0 +1,38 @@ | |
| 1 | 
            +
            require_relative "enumerable"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class LittleSMS
         | 
| 4 | 
            +
              class Responce
         | 
| 5 | 
            +
                def initialize(json)
         | 
| 6 | 
            +
                  @json = json.recursive_symbolize_keys
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def success?
         | 
| 10 | 
            +
                  @json[:status] == "success"
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def error?
         | 
| 14 | 
            +
                  @json[:status] == "error"
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def error
         | 
| 18 | 
            +
                  if error? then @json[:error] else nil end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def message
         | 
| 22 | 
            +
                  if error? then @json[:message] else nil end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def method_missing(name, *args)
         | 
| 26 | 
            +
                  unless args.empty?
         | 
| 27 | 
            +
                    super
         | 
| 28 | 
            +
                  else
         | 
| 29 | 
            +
                    @json[name] || super
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                def respond_to?(method)
         | 
| 34 | 
            +
                  @json.has_key?(method) || super
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
| 38 | 
            +
             | 
    
        data/lib/little_sms.rb
    CHANGED
    
    
    
        data/little_sms.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{little_sms}
         | 
| 8 | 
            -
              s.version = "0. | 
| 8 | 
            +
              s.version = "0.2.0"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["Artyom Bolshakov"]
         | 
| 12 | 
            -
              s.date = %q{2011- | 
| 12 | 
            +
              s.date = %q{2011-07-06}
         | 
| 13 13 | 
             
              s.description = %q{LittleSMS.ru API binding}
         | 
| 14 14 | 
             
              s.email = %q{tweekane@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -25,51 +25,42 @@ Gem::Specification.new do |s| | |
| 25 25 | 
             
                "VERSION",
         | 
| 26 26 | 
             
                "lib/little_sms.rb",
         | 
| 27 27 | 
             
                "lib/little_sms/component.rb",
         | 
| 28 | 
            +
                "lib/little_sms/enumerable.rb",
         | 
| 28 29 | 
             
                "lib/little_sms/little_sms.rb",
         | 
| 29 | 
            -
                "lib/little_sms/ | 
| 30 | 
            -
                "lib/little_sms/ordering/contact.yaml",
         | 
| 31 | 
            -
                "lib/little_sms/ordering/message.yaml",
         | 
| 32 | 
            -
                "lib/little_sms/ordering/tag.yaml",
         | 
| 33 | 
            -
                "lib/little_sms/ordering/task.yaml",
         | 
| 34 | 
            -
                "lib/little_sms/ordering/user.yaml",
         | 
| 30 | 
            +
                "lib/little_sms/responce.rb",
         | 
| 35 31 | 
             
                "little_sms.gemspec",
         | 
| 32 | 
            +
                "test/auth.rb",
         | 
| 36 33 | 
             
                "test/test_component.rb",
         | 
| 37 34 | 
             
                "test/test_little_sms.rb",
         | 
| 38 | 
            -
                "test/ | 
| 35 | 
            +
                "test/test_responce.rb"
         | 
| 39 36 | 
             
              ]
         | 
| 40 37 | 
             
              s.homepage = %q{http://github.com/TweeKane/little_sms}
         | 
| 41 38 | 
             
              s.licenses = ["MIT"]
         | 
| 42 39 | 
             
              s.require_paths = ["lib"]
         | 
| 43 | 
            -
              s.rubygems_version = %q{1. | 
| 40 | 
            +
              s.rubygems_version = %q{1.6.2}
         | 
| 44 41 | 
             
              s.summary = %q{LittleSMS.ru API binding}
         | 
| 45 | 
            -
              s.test_files = [
         | 
| 46 | 
            -
                "test/test_component.rb",
         | 
| 47 | 
            -
                "test/test_little_sms.rb",
         | 
| 48 | 
            -
                "test/test_options.rb"
         | 
| 49 | 
            -
              ]
         | 
| 50 42 |  | 
| 51 43 | 
             
              if s.respond_to? :specification_version then
         | 
| 52 | 
            -
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         | 
| 53 44 | 
             
                s.specification_version = 3
         | 
| 54 45 |  | 
| 55 46 | 
             
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 56 47 | 
             
                  s.add_runtime_dependency(%q<json_pure>, [">= 0"])
         | 
| 57 48 | 
             
                  s.add_development_dependency(%q<shoulda>, [">= 0"])
         | 
| 58 | 
            -
                  s.add_development_dependency(%q<bundler>, [" | 
| 59 | 
            -
                  s.add_development_dependency(%q<jeweler>, [" | 
| 49 | 
            +
                  s.add_development_dependency(%q<bundler>, [">= 0"])
         | 
| 50 | 
            +
                  s.add_development_dependency(%q<jeweler>, [">= 0"])
         | 
| 60 51 | 
             
                  s.add_development_dependency(%q<rcov>, [">= 0"])
         | 
| 61 52 | 
             
                else
         | 
| 62 53 | 
             
                  s.add_dependency(%q<json_pure>, [">= 0"])
         | 
| 63 54 | 
             
                  s.add_dependency(%q<shoulda>, [">= 0"])
         | 
| 64 | 
            -
                  s.add_dependency(%q<bundler>, [" | 
| 65 | 
            -
                  s.add_dependency(%q<jeweler>, [" | 
| 55 | 
            +
                  s.add_dependency(%q<bundler>, [">= 0"])
         | 
| 56 | 
            +
                  s.add_dependency(%q<jeweler>, [">= 0"])
         | 
| 66 57 | 
             
                  s.add_dependency(%q<rcov>, [">= 0"])
         | 
| 67 58 | 
             
                end
         | 
| 68 59 | 
             
              else
         | 
| 69 60 | 
             
                s.add_dependency(%q<json_pure>, [">= 0"])
         | 
| 70 61 | 
             
                s.add_dependency(%q<shoulda>, [">= 0"])
         | 
| 71 | 
            -
                s.add_dependency(%q<bundler>, [" | 
| 72 | 
            -
                s.add_dependency(%q<jeweler>, [" | 
| 62 | 
            +
                s.add_dependency(%q<bundler>, [">= 0"])
         | 
| 63 | 
            +
                s.add_dependency(%q<jeweler>, [">= 0"])
         | 
| 73 64 | 
             
                s.add_dependency(%q<rcov>, [">= 0"])
         | 
| 74 65 | 
             
              end
         | 
| 75 66 | 
             
            end
         | 
    
        data/test/auth.rb
    ADDED
    
    
    
        data/test/test_component.rb
    CHANGED
    
    | @@ -1,25 +1,32 @@ | |
| 1 1 | 
             
            require 'test/unit'
         | 
| 2 2 | 
             
            require 'shoulda'
         | 
| 3 | 
            -
             | 
| 3 | 
            +
            require_relative '../lib/little_sms'
         | 
| 4 | 
            +
            require_relative "auth"
         | 
| 4 5 |  | 
| 5 6 | 
             
            class ComponentTest < Test::Unit::TestCase
         | 
| 7 | 
            +
              include Auth
         | 
| 6 8 | 
             
              context "A LittleSMS::Component" do
         | 
| 7 9 | 
             
                def setup
         | 
| 8 | 
            -
                  @ | 
| 9 | 
            -
                  @options | 
| 10 | 
            -
                  @options.method_path = {:method => :send, :component => :message }
         | 
| 10 | 
            +
                  @api_user, @api_key = self.auth
         | 
| 11 | 
            +
                  @options = {:message=>"test", :recipients=>"+79213752462", :user=>@api_user, :key=>@api_key}
         | 
| 11 12 | 
             
                  @component = LittleSMS::Component.new(:message, "Christ", "Jesus")
         | 
| 12 13 | 
             
                end
         | 
| 13 14 |  | 
| 14 15 | 
             
                should "should sign request" do
         | 
| 15 16 | 
             
                  sign = @component.method(:sign_request).call(@options)
         | 
| 16 | 
            -
                  assert_equal " | 
| 17 | 
            +
                  assert_equal "b616ddc6d0e15aaa92ce79ca78806337", sign
         | 
| 17 18 | 
             
                end
         | 
| 18 19 |  | 
| 19 20 | 
             
                should "format output" do
         | 
| 20 21 | 
             
                  out = {"recipients"=>["911", "112"], "messages_id"=>[], "count"=>1, "parts"=>1, "price"=>0.5, "balance"=>9, "test"=>1, "status"=>"success"}
         | 
| 21 22 | 
             
                  formatted = {:recipients=>["911", "112"], :messages_id=>[], :count=>1, :parts=>1, :price=>0.5, :balance=>9, :test=>1, :status=>"success"}
         | 
| 22 | 
            -
                  assert_equal formatted,  | 
| 23 | 
            +
                  assert_equal formatted, out.recursive_symbolize_keys
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                should "return LittleSMS::Responce object" do
         | 
| 27 | 
            +
                  api = LittleSMS.new(@api_user, @api_key)
         | 
| 28 | 
            +
                  resp = api.message.send(:recipients => "+79213752462", :message => "Test", :test => "1")
         | 
| 29 | 
            +
                  assert_equal(resp.class, LittleSMS::Responce)
         | 
| 23 30 | 
             
                end
         | 
| 24 31 | 
             
              end
         | 
| 25 32 | 
             
            end
         | 
    
        data/test/test_little_sms.rb
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            require 'test/unit'
         | 
| 2 2 | 
             
            require 'shoulda'
         | 
| 3 | 
            -
             | 
| 3 | 
            +
            require_relative '../lib/little_sms'
         | 
| 4 4 |  | 
| 5 5 | 
             
            class LittleSMSTest < Test::Unit::TestCase
         | 
| 6 | 
            +
              include Auth
         | 
| 6 7 | 
             
              context "A LittleSMS" do
         | 
| 7 8 | 
             
                def setup
         | 
| 8 | 
            -
                  @api_user =  | 
| 9 | 
            -
                  @api_key = :testapikeystring
         | 
| 9 | 
            +
                  @api_user, @api_key = self.auth
         | 
| 10 10 | 
             
                  @sms = LittleSMS.new @api_user, @api_key
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| @@ -22,6 +22,12 @@ class LittleSMSTest < Test::Unit::TestCase | |
| 22 22 | 
             
                  end
         | 
| 23 23 | 
             
                  assert_equal(LittleSMS::Component, mes.class)
         | 
| 24 24 | 
             
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                should "send message" do
         | 
| 27 | 
            +
                  api = LittleSMS.new(@api_user, @api_key)
         | 
| 28 | 
            +
                  resp = api.message.send(:recipients => "+79213752462", :message => "Test", :test => "1")
         | 
| 29 | 
            +
                  assert_equal(resp.success?, true)
         | 
| 30 | 
            +
                end
         | 
| 25 31 | 
             
              end
         | 
| 26 32 | 
             
            end
         | 
| 27 33 |  | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            require "test/unit"
         | 
| 2 | 
            +
            require "shoulda"
         | 
| 3 | 
            +
            require_relative "../lib/little_sms/responce"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class ResponceTest < Test::Unit::TestCase
         | 
| 6 | 
            +
              context "A Responce" do
         | 
| 7 | 
            +
                def setup
         | 
| 8 | 
            +
                  @simple_json = {:foo => "bar"}
         | 
| 9 | 
            +
                  @resp = LittleSMS::Responce.new(@simple_json)
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                should "create new responce object" do
         | 
| 13 | 
            +
                  assert_equal(@resp.instance_eval { @json }, @simple_json)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                should "success?" do
         | 
| 17 | 
            +
                  resp = LittleSMS::Responce.new({:status => "success"})
         | 
| 18 | 
            +
                  assert_equal(resp.success?, true)
         | 
| 19 | 
            +
                  assert_equal(resp.error?, false)
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                should "error?" do
         | 
| 23 | 
            +
                  resp = LittleSMS::Responce.new({:status => "error"})
         | 
| 24 | 
            +
                  assert_equal(resp.error?, true)
         | 
| 25 | 
            +
                  assert_equal(resp.success?, false)
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                should "return error code and message" do
         | 
| 29 | 
            +
                  responce_json = {:status => "error", :error => 2, :message => "invalid signature"}
         | 
| 30 | 
            +
                  resp = LittleSMS::Responce.new(responce_json)
         | 
| 31 | 
            +
                  assert_equal(resp.error, responce_json[:error])
         | 
| 32 | 
            +
                  assert_equal(resp.message, responce_json[:message])
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                should "map responce fields to methods" do
         | 
| 36 | 
            +
                  responce_json = {:recipients=>["79213752462"], :price=>0.5, :balance=>0, :test=>1}
         | 
| 37 | 
            +
                  resp = LittleSMS::Responce.new(responce_json)
         | 
| 38 | 
            +
                  assert_equal(resp.price, 0.5)
         | 
| 39 | 
            +
                  assert_equal(resp.balance, 0)
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                should "respond to mapped method" do
         | 
| 43 | 
            +
                  assert_respond_to(@resp, :foo)
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                should "raise error if unknown methods invoked" do
         | 
| 47 | 
            +
                  resp = LittleSMS::Responce.new({:foo => "foo"})
         | 
| 48 | 
            +
                  assert_raise NoMethodError do
         | 
| 49 | 
            +
                    resp.bar
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
            end
         | 
| 55 | 
            +
             | 
    
        metadata
    CHANGED
    
    | @@ -1,107 +1,80 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: little_sms
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 5 | 
            -
              prerelease:  | 
| 6 | 
            -
              segments: 
         | 
| 7 | 
            -
              - 0
         | 
| 8 | 
            -
              - 1
         | 
| 9 | 
            -
              - 0
         | 
| 10 | 
            -
              version: 0.1.0
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 | 
            +
              prerelease: 
         | 
| 11 6 | 
             
            platform: ruby
         | 
| 12 | 
            -
            authors: | 
| 7 | 
            +
            authors:
         | 
| 13 8 | 
             
            - Artyom Bolshakov
         | 
| 14 9 | 
             
            autorequire: 
         | 
| 15 10 | 
             
            bindir: bin
         | 
| 16 11 | 
             
            cert_chain: []
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            date: 2011-03-06 00:00:00 +03:00
         | 
| 12 | 
            +
            date: 2011-07-06 00:00:00.000000000 +04:00
         | 
| 19 13 | 
             
            default_executable: 
         | 
| 20 | 
            -
            dependencies: | 
| 21 | 
            -
            - !ruby/object:Gem::Dependency | 
| 14 | 
            +
            dependencies:
         | 
| 15 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 22 16 | 
             
              name: json_pure
         | 
| 23 | 
            -
              requirement: & | 
| 17 | 
            +
              requirement: &21494940 !ruby/object:Gem::Requirement
         | 
| 24 18 | 
             
                none: false
         | 
| 25 | 
            -
                requirements: | 
| 26 | 
            -
                - -  | 
| 27 | 
            -
                  - !ruby/object:Gem::Version | 
| 28 | 
            -
                     | 
| 29 | 
            -
                    segments: 
         | 
| 30 | 
            -
                    - 0
         | 
| 31 | 
            -
                    version: "0"
         | 
| 19 | 
            +
                requirements:
         | 
| 20 | 
            +
                - - ! '>='
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: '0'
         | 
| 32 23 | 
             
              type: :runtime
         | 
| 33 24 | 
             
              prerelease: false
         | 
| 34 | 
            -
              version_requirements: * | 
| 35 | 
            -
            - !ruby/object:Gem::Dependency | 
| 25 | 
            +
              version_requirements: *21494940
         | 
| 26 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 36 27 | 
             
              name: shoulda
         | 
| 37 | 
            -
              requirement: & | 
| 28 | 
            +
              requirement: &21485800 !ruby/object:Gem::Requirement
         | 
| 38 29 | 
             
                none: false
         | 
| 39 | 
            -
                requirements: | 
| 40 | 
            -
                - -  | 
| 41 | 
            -
                  - !ruby/object:Gem::Version | 
| 42 | 
            -
                     | 
| 43 | 
            -
                    segments: 
         | 
| 44 | 
            -
                    - 0
         | 
| 45 | 
            -
                    version: "0"
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ! '>='
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 46 34 | 
             
              type: :development
         | 
| 47 35 | 
             
              prerelease: false
         | 
| 48 | 
            -
              version_requirements: * | 
| 49 | 
            -
            - !ruby/object:Gem::Dependency | 
| 36 | 
            +
              version_requirements: *21485800
         | 
| 37 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 50 38 | 
             
              name: bundler
         | 
| 51 | 
            -
              requirement: & | 
| 39 | 
            +
              requirement: &21484880 !ruby/object:Gem::Requirement
         | 
| 52 40 | 
             
                none: false
         | 
| 53 | 
            -
                requirements: | 
| 54 | 
            -
                - -  | 
| 55 | 
            -
                  - !ruby/object:Gem::Version | 
| 56 | 
            -
                     | 
| 57 | 
            -
                    segments: 
         | 
| 58 | 
            -
                    - 1
         | 
| 59 | 
            -
                    - 0
         | 
| 60 | 
            -
                    - 0
         | 
| 61 | 
            -
                    version: 1.0.0
         | 
| 41 | 
            +
                requirements:
         | 
| 42 | 
            +
                - - ! '>='
         | 
| 43 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 44 | 
            +
                    version: '0'
         | 
| 62 45 | 
             
              type: :development
         | 
| 63 46 | 
             
              prerelease: false
         | 
| 64 | 
            -
              version_requirements: * | 
| 65 | 
            -
            - !ruby/object:Gem::Dependency | 
| 47 | 
            +
              version_requirements: *21484880
         | 
| 48 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 66 49 | 
             
              name: jeweler
         | 
| 67 | 
            -
              requirement: & | 
| 50 | 
            +
              requirement: &21483820 !ruby/object:Gem::Requirement
         | 
| 68 51 | 
             
                none: false
         | 
| 69 | 
            -
                requirements: | 
| 70 | 
            -
                - -  | 
| 71 | 
            -
                  - !ruby/object:Gem::Version | 
| 72 | 
            -
                     | 
| 73 | 
            -
                    segments: 
         | 
| 74 | 
            -
                    - 1
         | 
| 75 | 
            -
                    - 5
         | 
| 76 | 
            -
                    - 2
         | 
| 77 | 
            -
                    version: 1.5.2
         | 
| 52 | 
            +
                requirements:
         | 
| 53 | 
            +
                - - ! '>='
         | 
| 54 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 55 | 
            +
                    version: '0'
         | 
| 78 56 | 
             
              type: :development
         | 
| 79 57 | 
             
              prerelease: false
         | 
| 80 | 
            -
              version_requirements: * | 
| 81 | 
            -
            - !ruby/object:Gem::Dependency | 
| 58 | 
            +
              version_requirements: *21483820
         | 
| 59 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 82 60 | 
             
              name: rcov
         | 
| 83 | 
            -
              requirement: & | 
| 61 | 
            +
              requirement: &21482980 !ruby/object:Gem::Requirement
         | 
| 84 62 | 
             
                none: false
         | 
| 85 | 
            -
                requirements: | 
| 86 | 
            -
                - -  | 
| 87 | 
            -
                  - !ruby/object:Gem::Version | 
| 88 | 
            -
                     | 
| 89 | 
            -
                    segments: 
         | 
| 90 | 
            -
                    - 0
         | 
| 91 | 
            -
                    version: "0"
         | 
| 63 | 
            +
                requirements:
         | 
| 64 | 
            +
                - - ! '>='
         | 
| 65 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 66 | 
            +
                    version: '0'
         | 
| 92 67 | 
             
              type: :development
         | 
| 93 68 | 
             
              prerelease: false
         | 
| 94 | 
            -
              version_requirements: * | 
| 69 | 
            +
              version_requirements: *21482980
         | 
| 95 70 | 
             
            description: LittleSMS.ru API binding
         | 
| 96 71 | 
             
            email: tweekane@gmail.com
         | 
| 97 72 | 
             
            executables: []
         | 
| 98 | 
            -
             | 
| 99 73 | 
             
            extensions: []
         | 
| 100 | 
            -
             | 
| 101 | 
            -
            extra_rdoc_files: 
         | 
| 74 | 
            +
            extra_rdoc_files:
         | 
| 102 75 | 
             
            - LICENSE.txt
         | 
| 103 76 | 
             
            - README.md
         | 
| 104 | 
            -
            files: | 
| 77 | 
            +
            files:
         | 
| 105 78 | 
             
            - Gemfile
         | 
| 106 79 | 
             
            - Gemfile.lock
         | 
| 107 80 | 
             
            - LICENSE.txt
         | 
| @@ -110,52 +83,41 @@ files: | |
| 110 83 | 
             
            - VERSION
         | 
| 111 84 | 
             
            - lib/little_sms.rb
         | 
| 112 85 | 
             
            - lib/little_sms/component.rb
         | 
| 86 | 
            +
            - lib/little_sms/enumerable.rb
         | 
| 113 87 | 
             
            - lib/little_sms/little_sms.rb
         | 
| 114 | 
            -
            - lib/little_sms/ | 
| 115 | 
            -
            - lib/little_sms/ordering/contact.yaml
         | 
| 116 | 
            -
            - lib/little_sms/ordering/message.yaml
         | 
| 117 | 
            -
            - lib/little_sms/ordering/tag.yaml
         | 
| 118 | 
            -
            - lib/little_sms/ordering/task.yaml
         | 
| 119 | 
            -
            - lib/little_sms/ordering/user.yaml
         | 
| 88 | 
            +
            - lib/little_sms/responce.rb
         | 
| 120 89 | 
             
            - little_sms.gemspec
         | 
| 90 | 
            +
            - test/auth.rb
         | 
| 121 91 | 
             
            - test/test_component.rb
         | 
| 122 92 | 
             
            - test/test_little_sms.rb
         | 
| 123 | 
            -
            - test/ | 
| 93 | 
            +
            - test/test_responce.rb
         | 
| 124 94 | 
             
            has_rdoc: true
         | 
| 125 95 | 
             
            homepage: http://github.com/TweeKane/little_sms
         | 
| 126 | 
            -
            licenses: | 
| 96 | 
            +
            licenses:
         | 
| 127 97 | 
             
            - MIT
         | 
| 128 98 | 
             
            post_install_message: 
         | 
| 129 99 | 
             
            rdoc_options: []
         | 
| 130 | 
            -
             | 
| 131 | 
            -
            require_paths: 
         | 
| 100 | 
            +
            require_paths:
         | 
| 132 101 | 
             
            - lib
         | 
| 133 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 102 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 134 103 | 
             
              none: false
         | 
| 135 | 
            -
              requirements: | 
| 136 | 
            -
              - -  | 
| 137 | 
            -
                - !ruby/object:Gem::Version | 
| 138 | 
            -
                   | 
| 139 | 
            -
                  segments: | 
| 104 | 
            +
              requirements:
         | 
| 105 | 
            +
              - - ! '>='
         | 
| 106 | 
            +
                - !ruby/object:Gem::Version
         | 
| 107 | 
            +
                  version: '0'
         | 
| 108 | 
            +
                  segments:
         | 
| 140 109 | 
             
                  - 0
         | 
| 141 | 
            -
                   | 
| 142 | 
            -
            required_rubygems_version: !ruby/object:Gem::Requirement | 
| 110 | 
            +
                  hash: 423631933341830267
         | 
| 111 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 143 112 | 
             
              none: false
         | 
| 144 | 
            -
              requirements: | 
| 145 | 
            -
              - -  | 
| 146 | 
            -
                - !ruby/object:Gem::Version | 
| 147 | 
            -
                   | 
| 148 | 
            -
                  segments: 
         | 
| 149 | 
            -
                  - 0
         | 
| 150 | 
            -
                  version: "0"
         | 
| 113 | 
            +
              requirements:
         | 
| 114 | 
            +
              - - ! '>='
         | 
| 115 | 
            +
                - !ruby/object:Gem::Version
         | 
| 116 | 
            +
                  version: '0'
         | 
| 151 117 | 
             
            requirements: []
         | 
| 152 | 
            -
             | 
| 153 118 | 
             
            rubyforge_project: 
         | 
| 154 | 
            -
            rubygems_version: 1. | 
| 119 | 
            +
            rubygems_version: 1.6.2
         | 
| 155 120 | 
             
            signing_key: 
         | 
| 156 121 | 
             
            specification_version: 3
         | 
| 157 122 | 
             
            summary: LittleSMS.ru API binding
         | 
| 158 | 
            -
            test_files: 
         | 
| 159 | 
            -
            - test/test_component.rb
         | 
| 160 | 
            -
            - test/test_little_sms.rb
         | 
| 161 | 
            -
            - test/test_options.rb
         | 
| 123 | 
            +
            test_files: []
         | 
    
        data/lib/little_sms/options.rb
    DELETED
    
    | @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            require "yaml"
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            class LittleSMS
         | 
| 4 | 
            -
              class Component
         | 
| 5 | 
            -
                # This module should be mixed with request options hash.
         | 
| 6 | 
            -
                #   to overwite Hash#sort method
         | 
| 7 | 
            -
                module Options
         | 
| 8 | 
            -
                  class NoMethodError < StandardError; end
         | 
| 9 | 
            -
                  class NoComponentError < StandardError; end
         | 
| 10 | 
            -
                  attr_accessor :method_path
         | 
| 11 | 
            -
                  def sort
         | 
| 12 | 
            -
                    order = load_order(@method_path[:component], @method_path[:method])
         | 
| 13 | 
            -
                    self.to_a.sort do |a,b|
         | 
| 14 | 
            -
                      order.find_index(a[0]) <=> order.find_index(b[0])
         | 
| 15 | 
            -
                    end
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  private
         | 
| 19 | 
            -
                  # load sorting order from yaml file
         | 
| 20 | 
            -
                  def load_order(component, method)
         | 
| 21 | 
            -
                    begin
         | 
| 22 | 
            -
                      order = YAML.load_file("#{File.dirname(__FILE__)}/ordering/#{component}.yaml")[method]
         | 
| 23 | 
            -
                      raise NoMethodError, "There is no such method in #{component} file: #{method}" if order.nil?
         | 
| 24 | 
            -
                      order
         | 
| 25 | 
            -
                    rescue Errno::ENOENT
         | 
| 26 | 
            -
                      raise NoComponentError, "There is no such file: #{component}"
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
                  end
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
            end
         | 
| 32 | 
            -
             | 
| @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            ---
         | 
| 2 | 
            -
            :send:
         | 
| 3 | 
            -
            - :user
         | 
| 4 | 
            -
            - :recipients
         | 
| 5 | 
            -
            - :message
         | 
| 6 | 
            -
            - :sender
         | 
| 7 | 
            -
            - :test
         | 
| 8 | 
            -
            - :sign
         | 
| 9 | 
            -
            - :key
         | 
| 10 | 
            -
            :status:
         | 
| 11 | 
            -
            - :user
         | 
| 12 | 
            -
            - :sign
         | 
| 13 | 
            -
            - :messages_id
         | 
| 14 | 
            -
            - :key
         | 
| 15 | 
            -
            :price:
         | 
| 16 | 
            -
            - :user
         | 
| 17 | 
            -
            - :sign
         | 
| 18 | 
            -
            - :recipients
         | 
| 19 | 
            -
            - :message
         | 
| 20 | 
            -
            - :key
         | 
| 21 | 
            -
            :history:
         | 
| 22 | 
            -
            - :user
         | 
| 23 | 
            -
            - :sign
         | 
| 24 | 
            -
            - :history_id
         | 
| 25 | 
            -
            - :recipient
         | 
| 26 | 
            -
            - :sender
         | 
| 27 | 
            -
            - :status
         | 
| 28 | 
            -
            - :date_from
         | 
| 29 | 
            -
            - :date_to
         | 
| 30 | 
            -
            - :id
         | 
| 31 | 
            -
            - :key
         | 
| 32 | 
            -
             | 
    
        data/test/test_options.rb
    DELETED
    
    | @@ -1,37 +0,0 @@ | |
| 1 | 
            -
            require 'test/unit'
         | 
| 2 | 
            -
            require 'shoulda'
         | 
| 3 | 
            -
            require 'lib/little_sms'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            class OptionsTest < Test::Unit::TestCase
         | 
| 6 | 
            -
              context "A Options" do
         | 
| 7 | 
            -
                def setup
         | 
| 8 | 
            -
                  @order = [:user, :recipients, :message, :sender, :test, :sign, :key]
         | 
| 9 | 
            -
                  @options = {:message=>"sos", :recipients=>"112"}
         | 
| 10 | 
            -
                  @options.extend(LittleSMS::Component::Options)
         | 
| 11 | 
            -
                  @options.method_path = {:method => :send, :component => :message }
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                should "load order from file" do
         | 
| 15 | 
            -
                  assert_equal(@order, @options.instance_eval("load_order(:message, :send)"))
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                should "sort with loaded order" do
         | 
| 19 | 
            -
                  assert_equal @options.sort, [[:recipients, "112"], [:message, "sos"]]
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                should "fail if unknown method called" do
         | 
| 23 | 
            -
                  @options.method_path = {:method => :unknown, :component => :message }
         | 
| 24 | 
            -
                  assert_raise LittleSMS::Component::Options::NoMethodError do
         | 
| 25 | 
            -
                     @options.sort
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
                end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                should "fail if unknown component accessed" do
         | 
| 30 | 
            -
                  @options.method_path = {:method => :unknown, :component => :unknown }
         | 
| 31 | 
            -
                  assert_raise LittleSMS::Component::Options::NoComponentError do
         | 
| 32 | 
            -
                     @options.sort
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
                end
         | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
            end
         | 
| 37 | 
            -
             |