poczta_polska 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7322e491795261baaea74814da021c85e74f6871
4
+ data.tar.gz: e43dfa728803d4ec87f47bcf087cbd1b98ba5e2c
5
+ SHA512:
6
+ metadata.gz: 512d79b3af228bde0e7e207836308b4189744fd4a21d6e3c40234d2c2bfcd46a5b9772fe523d7409adc272c390cc88a708903db70293159b1171524b010fabf7
7
+ data.tar.gz: 59c8fac3a62de475997076ef96de874a7af71599d0a44af48bfae57a6988f19dc7c2e8a93ef3558f5ecfd2f25758b08f5f834748874b7e24870323a340a6a380
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in poczta_polska.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Mikołaj Rozwadowski
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,64 @@
1
+ # PocztaPolska
2
+
3
+ With this gem you can monitor Polish Post parcels and registered mail
4
+ as well as packages shipped by Pocztex. It allows you to see basic data
5
+ about the consignment as well as all the post offices it has gone through
6
+ (including their locations and opening hours). The data is downloaded from
7
+ [a public SOAP API of the Polish Post](http://www.poczta-polska.pl/pliki/webservices/Metody%20i%20struktury%20uslugi%20sieciowej%20Poczty%20Polskiej%20SA.pdf)
8
+ and wrapped into Ruby classes for your convenience.
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ ```ruby
15
+ gem 'poczta_polska'
16
+ ```
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install poczta_polska
25
+
26
+ ## Usage
27
+
28
+ ```ruby
29
+ require 'poczta_polska'
30
+
31
+ package_id = 'testp0'
32
+ # this package ID generates test data
33
+
34
+ tr = PocztaPolska::tracker
35
+
36
+ begin
37
+ pkg = tr.check(package_id)
38
+
39
+ puts "A package was sent from #{pkg.office_from} to #{pkg.office_to}."
40
+
41
+ pkg.events.each do |event|
42
+ datetime = event.time.strftime("%F, %R")
43
+ puts "Finally:" if event.final?
44
+ puts "Time: #{datetime}"
45
+ puts "Event: #{event.name}"
46
+ puts "Post office: #{event.office}"
47
+ puts
48
+ end
49
+
50
+ rescue PocztaPolska::UnknownPackageError
51
+ puts "The package couldn't be found"
52
+ rescue PocztaPolska::WrongPackageError
53
+ puts "The package ID is wrong"
54
+ end
55
+
56
+ ```
57
+
58
+ ## Contributing
59
+
60
+ 1. Fork it ( https://github.com/hejmsdz/poczta_polska.rb/fork )
61
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
62
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
63
+ 4. Push to the branch (`git push origin my-new-feature`)
64
+ 5. Create a new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "poczta_polska"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,26 @@
1
+ require 'poczta_polska'
2
+
3
+ package_id = 'testp0'
4
+ # this package ID generates test data
5
+
6
+ tr = PocztaPolska::tracker
7
+
8
+ begin
9
+ pkg = tr.check(package_id)
10
+
11
+ puts "A package was sent from #{pkg.office_from} to #{pkg.office_to}."
12
+
13
+ pkg.events.each do |event|
14
+ datetime = event.time.strftime("%F, %R")
15
+ puts "Finally:" if event.final?
16
+ puts "Time: #{datetime}"
17
+ puts "Event: #{event.name}"
18
+ puts "Post office: #{event.office}"
19
+ puts
20
+ end
21
+
22
+ rescue PocztaPolska::UnknownPackageError
23
+ puts "The package couldn't be found"
24
+ rescue PocztaPolska::WrongPackageError
25
+ puts "The package ID is wrong"
26
+ end
@@ -0,0 +1,29 @@
1
+ require "poczta_polska/version"
2
+
3
+ module PocztaPolska
4
+
5
+ Error = Class.new(RuntimeError)
6
+ UnknownPackageError = Class.new(Error)
7
+ WrongPackageError = Class.new(Error)
8
+ TooManyPackagesError = Class.new(Error)
9
+ ManyPackagesForbiddenError = Class.new(Error)
10
+ DateRangeError = Class.new(Error)
11
+
12
+ # Creates a Tracker instance. Authentication is optional,
13
+ # it will allow you to check multiple packages in a single request.
14
+ # @param username [String]
15
+ # @param password [String]
16
+ # @return [Tracker] a Tracker instance
17
+ def self.tracker(username = nil, password = nil)
18
+ if username.nil? && password.nil?
19
+ Tracker.new('https://tt.poczta-polska.pl/Sledzenie/services/Sledzenie?wsdl', 'sledzeniepp', 'PPSA')
20
+ else
21
+ Tracker.new('https://ws.poczta-polska.pl/Sledzenie/services/Sledzenie?wsdl', username, password)
22
+ end
23
+ end
24
+
25
+ require "poczta_polska/tracker"
26
+ require "poczta_polska/package"
27
+ require "poczta_polska/office"
28
+ require "poczta_polska/event"
29
+ end
@@ -0,0 +1,34 @@
1
+ module PocztaPolska
2
+ # This helper module is +include+d into other classes
3
+ # and allows to access elements nested in the +@data+ hash.
4
+ # In order to use it, a class must define a constant hash +ATTR_MAP+.
5
+ # For the following element in the hash:
6
+ #
7
+ # +my_method: [:some, :nested, :value, :to_s]+
8
+ #
9
+ # calling +object.my_method+ will return @data[:some][:nested][:value].to_s.
10
+ # The last element in the array is either a conversion method name, a +Proc+ or +nil+.
11
+ module DynamicReader
12
+ # Returns +true+ if the method name is a key in the +ATTR_MAP+ hash.
13
+ def respond_to_missing?(method, include_private = false)
14
+ self.class::ATTR_MAP.has_key?(method) || super
15
+ end
16
+
17
+ def method_missing(method)
18
+ return super unless respond_to_missing?(method)
19
+
20
+ keys = self.class::ATTR_MAP[method].dup
21
+ convert = keys.pop
22
+ d = @data
23
+ keys.each { |k| d = d[k] }
24
+
25
+ if convert.nil?
26
+ d
27
+ elsif convert.is_a?(Proc)
28
+ convert.call(d)
29
+ else
30
+ d.public_send(convert)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,45 @@
1
+ require 'poczta_polska/dynamic_reader'
2
+ require 'poczta_polska/office'
3
+
4
+ module PocztaPolska
5
+ # The Event class stores information about a point
6
+ # on the package's way.
7
+ class Event
8
+ # @return [Hash] Original data from the XML response
9
+ attr_reader :data
10
+
11
+ # Dynamic methods map
12
+ # @see DynamicReader
13
+ ATTR_MAP = {
14
+ time: [:czas, lambda { |time| DateTime.parse(time) }],
15
+ code: [:kod, :to_sym],
16
+ name: [:nazwa, :to_s],
17
+ office: [:jednostka, :nazwa, :to_s],
18
+ final?: [:konczace, nil]
19
+ }
20
+ include DynamicReader
21
+
22
+ def initialize(data)
23
+ @data = data
24
+ end
25
+
26
+ # Returns detailed information about the post office connected with this event,
27
+ # only if the {Tracker#check}/{Tracker#check_many} method was called
28
+ # with +details+ set to +true+.
29
+ # @return [Office]
30
+ def office_details
31
+ office = @data[:jednostka][:dane_szczegolowe]
32
+ Office.new(office) unless office.nil?
33
+ end
34
+
35
+ # Returns a reason of the event (available only for certain events
36
+ # and certain users) or +nil+. The keys in the hash are +:code+ and +:name+.
37
+ # @return [Hash]
38
+ def reason
39
+ {
40
+ code: @data[:przyczyna][:kod].to_sym,
41
+ name: @data[:przyczyna][:nazwa].to_s
42
+ } unless @data[:przyczyna].nil?
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,48 @@
1
+ module PocztaPolska
2
+ # The Office class stores detailed information about
3
+ # a particular post office.
4
+ class Office
5
+ # @return [Hash] Original data from the XML response
6
+ attr_reader :data
7
+
8
+ def initialize(data)
9
+ @data = data
10
+ end
11
+
12
+ # Returns geographical coordinates of the post office.
13
+ # @return [Array(Float, Float)] latitude and longitude
14
+ def coordinates
15
+ [@data[:szer_geogr].to_f, @data[:dl_geogr].to_f]
16
+ end
17
+
18
+ # Returns the address of the post office.
19
+ # The keys in the hash are +:street+, +:number+, +:code+ and +:town+.
20
+ # @return [Hash]
21
+ def address
22
+ {
23
+ street: @data[:ulica].to_s,
24
+ number: @data.values_at(:nr_domu, :nr_lokalu).compact.join('/'),
25
+ code: @data[:pna].to_s,
26
+ town: @data[:miejscowosc].to_s
27
+ }
28
+ end
29
+
30
+ # Returns opening hours of the post office.
31
+ # The keys in the hash are +:weekdays+, +:saturdays+ and +:sundays+ (including holidays).
32
+ # Every value is an array in the format +[opening_hours, notes]+ or +nil+.
33
+ # @return [Hash<Symbol => Array(String, String), nil>]
34
+ def opening_hours
35
+ hours = @data[:godziny_pracy]
36
+ keys = {weekdays: :dni_robocze, saturdays: :soboty, sundays: :niedz_i_sw}
37
+ Hash[
38
+ keys.map do |h, x|
39
+ value = unless hours[x].nil?
40
+ [hours[x][:godziny].to_s, hours[x][:uwagi].to_s]
41
+ end
42
+
43
+ [h, value]
44
+ end
45
+ ]
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,58 @@
1
+ require 'poczta_polska/dynamic_reader'
2
+ require 'poczta_polska/office'
3
+ require 'poczta_polska/event'
4
+
5
+ module PocztaPolska
6
+ # The Package class contains all necessary information
7
+ # about a tracked package.
8
+ class Package
9
+ # @return [Hash] Original data from the XML response
10
+ attr_reader :data
11
+
12
+ # Dynamic methods map
13
+ # @see DynamicReader
14
+ ATTR_MAP = {
15
+ id: [:numer, :to_s],
16
+ type: [:dane_przesylki, :kod_rodz_przes, :to_sym],
17
+ type_str: [:dane_przesylki, :rodz_przes, :to_s],
18
+ country_from: [:dane_przesylki, :kod_kraju_nadania, :to_sym],
19
+ country_from_str: [:dane_przesylki, :kraj_nadania, :to_s],
20
+ country_to: [:dane_przesylki, :kod_kraju_przezn, :to_sym],
21
+ country_to_str: [:dane_przesylki, :kraj_przezn, :to_s],
22
+ office_from: [:dane_przesylki, :urzad_nadania, :nazwa, :to_s],
23
+ office_to: [:dane_przesylki, :urzad_przezn, :nazwa, :to_s],
24
+ mass: [:dane_przesylki, :masa, nil],
25
+ ready?: [:dane_przesylki, :zakonczono_obsluge, nil]
26
+ }
27
+
28
+ include DynamicReader
29
+
30
+ def initialize(data)
31
+ @data = data
32
+ end
33
+
34
+ # Returns detailed information about the origin post office,
35
+ # only if the {Tracker#check}/{Tracker#check_many} method was called
36
+ # with +details+ set to +true+.
37
+ # @return [Office]
38
+ def office_from_details
39
+ office = @data[:dane_przesylki][:urzad_nadania][:dane_szczegolowe]
40
+ Office.new(office) unless office.nil?
41
+ end
42
+
43
+ # Returns detailed information about the destination post office,
44
+ # only if the {Tracker#check}/{Tracker#check_many} method was called
45
+ # with +details+ set to +true+.
46
+ # @return [Office]
47
+ def office_to_details
48
+ office = @data[:dane_przesylki][:urzad_przezn][:dane_szczegolowe]
49
+ Office.new(office) unless office.nil?
50
+ end
51
+
52
+ # Returns a list of all events connected with the package
53
+ # @return [Array<Event>]
54
+ def events
55
+ @data[:dane_przesylki][:zdarzenia][:zdarzenie].map { |e| Event.new(e) }
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,87 @@
1
+ require 'savon'
2
+
3
+ module PocztaPolska
4
+ # The Tracker class gives access to all necessary API methods
5
+ # and wraps the results in correct Ruby classes.
6
+ class Tracker
7
+ def initialize(wsdl, username, password)
8
+ @client = Savon.client(wsdl: wsdl, wsse_auth: [username, password])
9
+ end
10
+
11
+ # Returns the API version you are using.
12
+ def api_version
13
+ resp = @client.call(:wersja)
14
+ resp.body[:wersja_response][:return].to_s
15
+ end
16
+
17
+ # Returns the maximum number of packages that you can
18
+ # check in a single request with {#check_many} method.
19
+ # If you are not authenticated, it is always 1.
20
+ def max_packages
21
+ resp = @client.call(:maksymalna_liczba_przesylek)
22
+ resp.body[:maksymalna_liczba_przesylek_response][:return].to_i
23
+ end
24
+
25
+ # Finds a package by its ID.
26
+ # @param package_id [String] the ID of a package to find
27
+ # @param details [Boolean] whether to include detailed information (location, opening hours) about the post offices involved
28
+ # @return [Package] information about the package
29
+ # @raise [UnknownPackageError] if the package couldn't be found
30
+ # @raise [WrongPackageError] if the package ID is invalid
31
+ # @raise [Error] if something else goes wrong
32
+ def check(package_id, details = false)
33
+ method_name = 'sprawdz_przesylke'
34
+ method_name << '_pl' if details
35
+
36
+ method = method_name.to_sym
37
+ response_key = "#{method_name}_response".to_sym
38
+
39
+ response = @client.call(method, message: {numer: package_id})
40
+ data = response.body[response_key][:return]
41
+
42
+ case data[:status].to_i
43
+ when -1 then raise UnknownPackageError
44
+ when -2 then raise WrongPackageError
45
+ when -99 then raise Error
46
+ end
47
+
48
+ Package.new(data)
49
+ end
50
+
51
+ # Finds multiple packages by their IDs.
52
+ # @param package_ids [Array<String>] IDs of the packages to find
53
+ # @param details [Boolean] whether to include detailed information (location, opening hours) about the post offices involved
54
+ # @param date_range [Range<Date>] narrow the list down so that it only includes packages with events in the specified date range
55
+ # @return [Array<Package>] information about the packages found
56
+ # @raise [TooManyPackagesError] if you exceed the limit of packages you can check in a single request ({#max_packages})
57
+ # @raise [ManyPackagesForbiddenError] if you are not authenticated, so you can't check many packages at once
58
+ # @raise [DateRangeError] if the date range specified is invalid
59
+ # @raise [Error] if something else goes wrong
60
+ def check_many(package_ids, details = false, date_range = nil)
61
+ method_name = 'sprawdz_przesylki'
62
+ method_name << '_od_do' unless date_range.nil?
63
+ method_name << '_pl' if details
64
+
65
+ method = method_name.to_sym
66
+ response_key = "#{method_name}_response".to_sym
67
+
68
+ params = {numery: package_ids}
69
+ unless date_range.nil?
70
+ params[:od_dnia] = date_range.first.iso8601
71
+ params[:do_dnia] = date_range.end.iso8601
72
+ end
73
+
74
+ response = @client.call(method, message: params)
75
+ data = response.body[response_key][:return]
76
+
77
+ case data[:status].to_i
78
+ when -1 then raise TooManyPackagesError
79
+ when -2 then raise ManyPackagesForbiddenError
80
+ when -3 then raise DateRangeError
81
+ when -99 then raise Error
82
+ end
83
+
84
+ data[:przesylki].map { |p| Package.new(p) }
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,3 @@
1
+ module PocztaPolska
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,43 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'poczta_polska/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "poczta_polska"
8
+ spec.version = PocztaPolska::VERSION
9
+ spec.authors = ["Mikołaj Rozwadowski"]
10
+ spec.email = ["mikolaj.rozwadowski@outlook.com"]
11
+
12
+ spec.summary = "Track Polish Post packages in Ruby"
13
+ spec.description = "With this gem you can monitor Polish Post parcels and registered mail "
14
+ "as well as packages shipped by Pocztex. It allows you to see basic data "
15
+ "about the consignment as well as all the post offices it has gone through "
16
+ "(including their locations and opening hours). The data is downloaded from "
17
+ "[a public SOAP API of the Polish Post](http://www.poczta-polska.pl/pliki/webservices/"
18
+ "Metody%20i%20struktury%20uslugi%20sieciowej%20Poczty%20Polskiej%20SA.pdf) "
19
+ "and wrapped into Ruby classes for your convenience."
20
+ spec.homepage = "https://github.com/hejmsdz/poczta_polska.rb"
21
+ spec.license = "MIT"
22
+
23
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
24
+ # delete this section to allow pushing this gem to any host.
25
+ # if spec.respond_to?(:metadata)
26
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
27
+ # else
28
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
29
+ # end
30
+
31
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
+ spec.bindir = "exe"
33
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
+ spec.require_paths = ["lib"]
35
+
36
+ spec.add_dependency "savon", "~> 2.11", ">= 2.11.1"
37
+ spec.add_dependency "rubyntlm", "~> 0.5"
38
+
39
+ spec.add_development_dependency "bundler", "~> 1.9"
40
+ spec.add_development_dependency "rake", "~> 10.0"
41
+ spec.add_development_dependency "rspec", "~> 3.3"
42
+ spec.add_development_dependency "yard", "~> 0.8"
43
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: poczta_polska
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mikołaj Rozwadowski
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-06-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: savon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.11'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.11.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.11'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.11.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: rubyntlm
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0.5'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.9'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.9'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '10.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '10.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rspec
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.3'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.3'
89
+ - !ruby/object:Gem::Dependency
90
+ name: yard
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.8'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.8'
103
+ description: 'With this gem you can monitor Polish Post parcels and registered mail '
104
+ email:
105
+ - mikolaj.rozwadowski@outlook.com
106
+ executables: []
107
+ extensions: []
108
+ extra_rdoc_files: []
109
+ files:
110
+ - ".gitignore"
111
+ - ".rspec"
112
+ - ".travis.yml"
113
+ - Gemfile
114
+ - LICENSE.txt
115
+ - README.md
116
+ - Rakefile
117
+ - bin/console
118
+ - bin/setup
119
+ - examples/example.rb
120
+ - lib/poczta_polska.rb
121
+ - lib/poczta_polska/dynamic_reader.rb
122
+ - lib/poczta_polska/event.rb
123
+ - lib/poczta_polska/office.rb
124
+ - lib/poczta_polska/package.rb
125
+ - lib/poczta_polska/tracker.rb
126
+ - lib/poczta_polska/version.rb
127
+ - poczta_polska.gemspec
128
+ homepage: https://github.com/hejmsdz/poczta_polska.rb
129
+ licenses:
130
+ - MIT
131
+ metadata: {}
132
+ post_install_message:
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 2.4.6
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: Track Polish Post packages in Ruby
152
+ test_files: []
153
+ has_rdoc: