exchanger 0.1.3 → 0.1.4

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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/exchanger.rb +2 -0
  4. data/lib/exchanger/elements/attendee.rb +4 -0
  5. data/lib/exchanger/elements/base_folder.rb +9 -0
  6. data/lib/exchanger/elements/calendar_item.rb +5 -0
  7. data/lib/exchanger/elements/calendar_view.rb +12 -0
  8. data/lib/exchanger/elements/item.rb +9 -0
  9. data/lib/exchanger/operations/create_item.rb +4 -2
  10. data/lib/exchanger/operations/find_item.rb +5 -1
  11. data/lib/exchanger/persistence.rb +4 -0
  12. data/lib/exchanger/version.rb +1 -1
  13. data/spec/cassettes/contact/destroy.yml +58 -0
  14. data/spec/cassettes/contact/destroy_setup.yml +61 -0
  15. data/spec/cassettes/contact/find.yml +119 -0
  16. data/spec/cassettes/contact/find_setup.yml +61 -0
  17. data/spec/cassettes/contact/save.yml +399 -0
  18. data/spec/cassettes/contact/save_cleanup.yml +58 -0
  19. data/spec/cassettes/folder/find_calendar.yml +60 -0
  20. data/spec/cassettes/folder/find_contacts.yml +60 -0
  21. data/spec/cassettes/folder/find_root.yml +60 -0
  22. data/spec/cassettes/folder/find_root_folders.yml +108 -0
  23. data/spec/cassettes/get_user_availability.yml +75 -0
  24. data/spec/cassettes/get_user_availability_default.yml +78 -0
  25. data/spec/cassettes/mailbox/search_test.yml +58 -0
  26. data/spec/cassettes/mailbox/search_test_members.yml +58 -0
  27. data/spec/config.yml +9 -6
  28. data/spec/config.yml.example +3 -3
  29. data/spec/exchanger/calendar_folder_spec.rb +13 -0
  30. data/spec/exchanger/calendar_item_spec.rb +13 -0
  31. data/spec/{client_spec.rb → exchanger/client_spec.rb} +1 -1
  32. data/spec/exchanger/contact_spec.rb +102 -0
  33. data/spec/exchanger/element_spec.rb +4 -0
  34. data/spec/{field_spec.rb → exchanger/field_spec.rb} +1 -1
  35. data/spec/exchanger/folder_spec.rb +17 -0
  36. data/spec/exchanger/get_user_availability_spec.rb +46 -0
  37. data/spec/exchanger/mailbox_spec.rb +18 -0
  38. data/spec/fixtures/get_user_availability.yml +4 -0
  39. data/spec/fixtures/get_user_availability.yml.example +3 -3
  40. data/spec/spec_helper.rb +18 -1
  41. metadata +91 -69
  42. data/spec/calendar_item_spec.rb +0 -26
  43. data/spec/contact_spec.rb +0 -67
  44. data/spec/element_spec.rb +0 -4
  45. data/spec/folder_spec.rb +0 -13
  46. data/spec/get_user_availability_spec.rb +0 -44
  47. data/spec/mailbox_spec.rb +0 -9
@@ -0,0 +1,58 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n
9
+ \ <soap:Body>\n <ResolveNames xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"
10
+ xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\" ReturnFullContactData=\"true\">\n
11
+ \ <UnresolvedEntry>test</UnresolvedEntry>\n </ResolveNames>\n </soap:Body>\n</soap:Envelope>\n"
12
+ headers:
13
+ Soapaction:
14
+ - http://schemas.microsoft.com/exchange/services/2006/messages/ResolveNames
15
+ Content-Type:
16
+ - text/xml; charset=utf-8
17
+ Authorization:
18
+ - Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
19
+ response:
20
+ status:
21
+ code: 200
22
+ message: OK
23
+ headers:
24
+ Cache-Control:
25
+ - private
26
+ Transfer-Encoding:
27
+ - chunked
28
+ Content-Type:
29
+ - text/xml; charset=utf-8
30
+ Server:
31
+ - Microsoft-IIS/7.5
32
+ Requestid:
33
+ - cdb57036-f54d-425e-9c5f-b250b6ec9b03
34
+ Set-Cookie:
35
+ - exchangecookie=bb7d6333d15c4304a021f3518b6604ed; expires=Fri, 11-Oct-2013
36
+ 19:30:41 GMT; path=/; HttpOnly
37
+ X-Aspnet-Version:
38
+ - 2.0.50727
39
+ X-Powered-By:
40
+ - ASP.NET
41
+ X-Diaginfo:
42
+ - AMSPRD0710CA016
43
+ Date:
44
+ - Thu, 11 Oct 2012 19:30:40 GMT
45
+ body:
46
+ encoding: US-ASCII
47
+ string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
48
+ MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
49
+ xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
50
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
51
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:ResolveNamesResponse
52
+ xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:ResolveNamesResponseMessage
53
+ ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:ResolutionSet
54
+ TotalItemsInView="1" IncludesLastItemInRange="true"><t:Resolution><t:Mailbox><t:Name>Test</t:Name><t:EmailAddress>test@ebeigarts.onmicrosoft.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>PublicDL</t:MailboxType></t:Mailbox><t:Contact><t:DisplayName>Test</t:DisplayName><t:EmailAddresses><t:Entry
55
+ Key="EmailAddress1">SMTP:test@ebeigarts.onmicrosoft.com</t:Entry></t:EmailAddresses><t:ContactSource>ActiveDirectory</t:ContactSource></t:Contact></t:Resolution></m:ResolutionSet></m:ResolveNamesResponseMessage></m:ResponseMessages></m:ResolveNamesResponse></s:Body></s:Envelope>
56
+ http_version:
57
+ recorded_at: Thu, 11 Oct 2012 19:30:41 GMT
58
+ recorded_with: VCR 2.2.5
@@ -0,0 +1,58 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://FILTERED_USERNAME:FILTERED_PASSWORD@amsprd0710.outlook.com/EWS/Exchange.asmx
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ! "<?xml version=\"1.0\"?>\n<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n
9
+ \ <soap:Body>\n <ExpandDL xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"
10
+ xmlns:t=\"http://schemas.microsoft.com/exchange/services/2006/types\">\n <Mailbox>\n
11
+ \ <t:EmailAddress>test@ebeigarts.onmicrosoft.com</t:EmailAddress>\n
12
+ \ </Mailbox>\n </ExpandDL>\n </soap:Body>\n</soap:Envelope>\n"
13
+ headers:
14
+ Soapaction:
15
+ - http://schemas.microsoft.com/exchange/services/2006/messages/ExpandDL
16
+ Content-Type:
17
+ - text/xml; charset=utf-8
18
+ Authorization:
19
+ - Basic ZWJlaWdhcnRzQGViZWlnYXJ0cy5vbm1pY3Jvc29mdC5jb206S3k1a2ltUDZTNmlIQQ==
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Cache-Control:
26
+ - private
27
+ Transfer-Encoding:
28
+ - chunked
29
+ Content-Type:
30
+ - text/xml; charset=utf-8
31
+ Server:
32
+ - Microsoft-IIS/7.5
33
+ Requestid:
34
+ - 07e73549-a5eb-4f7c-9710-b0f866ca8fef
35
+ Set-Cookie:
36
+ - exchangecookie=e40c63c5baf54c49abe8502dae797546; expires=Fri, 11-Oct-2013
37
+ 19:30:41 GMT; path=/; HttpOnly
38
+ X-Aspnet-Version:
39
+ - 2.0.50727
40
+ X-Powered-By:
41
+ - ASP.NET
42
+ X-Diaginfo:
43
+ - AMSPRD0710CA001
44
+ Date:
45
+ - Thu, 11 Oct 2012 19:30:41 GMT
46
+ body:
47
+ encoding: US-ASCII
48
+ string: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo
49
+ MajorVersion="14" MinorVersion="16" MajorBuildNumber="207" MinorBuildNumber="9"
50
+ xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
51
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/></s:Header><s:Body
52
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><m:ExpandDLResponse
53
+ xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:ExpandDLResponseMessage
54
+ ResponseClass="Success"><m:ResponseCode>NoError</m:ResponseCode><m:DLExpansion
55
+ TotalItemsInView="1" IncludesLastItemInRange="true"><t:Mailbox><t:Name>ebeigarts</t:Name><t:EmailAddress>ebeigarts@ebeigarts.onmicrosoft.com</t:EmailAddress><t:RoutingType>SMTP</t:RoutingType><t:MailboxType>Mailbox</t:MailboxType></t:Mailbox></m:DLExpansion></m:ExpandDLResponseMessage></m:ResponseMessages></m:ExpandDLResponse></s:Body></s:Envelope>
56
+ http_version:
57
+ recorded_at: Thu, 11 Oct 2012 19:30:41 GMT
58
+ recorded_with: VCR 2.2.5
@@ -1,6 +1,9 @@
1
- endpoint: https://email.tieto.com/EWS/Exchange.asmx
2
- timeout: 5
3
- username: mystaffing.qa
4
- password: Latvia_2710/!
5
- # debug: true
6
- insecure_ssl: true
1
+ # endpoint: https://email.tieto.com/EWS/Exchange.asmx
2
+ # username: rails_tests
3
+ # password: Latvia567
4
+ # debug: false
5
+
6
+ endpoint: https://amsprd0710.outlook.com/EWS/Exchange.asmx
7
+ username: ebeigarts@ebeigarts.onmicrosoft.com
8
+ password: Ky5kimP6S6iHA
9
+ debug: true
@@ -1,4 +1,4 @@
1
- endpoint: https://domain.com/EWS/Exchange.asmx
2
- username: username
3
- password: password
1
+ endpoint: https://amsprd0710.outlook.com/EWS/Exchange.asmx
2
+ username: ebeigarts@ebeigarts.onmicrosoft.com
3
+ password: hidden
4
4
  debug: true
@@ -0,0 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::CalendarFolder do
4
+ before do
5
+ @folder = VCR.use_cassette('folder/find_calendar') do
6
+ Exchanger::Folder.find(:calendar)
7
+ end
8
+ end
9
+
10
+ it "should return calendar folder" do
11
+ @folder.class.should == Exchanger::CalendarFolder
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::CalendarItem do
4
+ before do
5
+ @folder = VCR.use_cassette('folder/find_calendar') do
6
+ Exchanger::Folder.find(:calendar)
7
+ end
8
+ end
9
+
10
+ describe ".find" do
11
+ it "should find by id"
12
+ end
13
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe Exchanger::Client do
4
4
  before do
@@ -0,0 +1,102 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::Contact do
4
+ before do
5
+ @folder = VCR.use_cassette('folder/find_contacts') do
6
+ Exchanger::Folder.find(:contacts)
7
+ end
8
+ @contact = Exchanger::Contact.new
9
+ @contact.parent_folder_id = @folder.folder_id
10
+ end
11
+
12
+ describe "#save" do
13
+ after do
14
+ if @contact.persisted?
15
+ VCR.use_cassette("contact/save_cleanup") do
16
+ @contact.destroy
17
+ end
18
+ end
19
+ end
20
+
21
+ it "should create and update contact" do
22
+ VCR.use_cassette("contact/save") do
23
+ prev_items_size = @folder.items.size
24
+ @contact.given_name = "Edgars"
25
+ @contact.surname = "Beigarts"
26
+ @contact.nickname = "EBEI"
27
+ @contact.complete_name = \
28
+ Exchanger::CompleteName.new(:first_name => "Edgars", :last_name => "Beigarts") # read only
29
+ @contact.physical_addresses = [
30
+ Exchanger::PhysicalAddress.new(:key => "Business", :city => "Riga", :street => "Brivibas iela 1", :state => ""),
31
+ Exchanger::PhysicalAddress.new(:key => "Home", :city => "Riga", :street => "Brivibas iela 2")
32
+ ]
33
+ @contact.email_addresses = [
34
+ Exchanger::EmailAddress.new(:key => "EmailAddress1", :text => "edgars.beigarts@tieto.com")
35
+ ]
36
+ @contact.should be_changed
37
+ @contact.save
38
+ @contact.should_not be_new_record
39
+ @contact.should_not be_changed
40
+ @contact.reload
41
+ @contact.nickname.should == "EBEI"
42
+ @contact.physical_addresses.size.should == 2
43
+ @contact.physical_addresses[0].key.should == "Business"
44
+ @contact.physical_addresses[0].city.should == "Riga"
45
+ @contact.physical_addresses[1].key.should == "Home"
46
+ @contact.physical_addresses[1].city.should == "Riga"
47
+ @contact.email_addresses.size.should == 1
48
+ @contact.email_addresses[0].key.should == "EmailAddress1"
49
+ @contact.email_addresses[0].text.should == "edgars.beigarts@tieto.com"
50
+ @folder.items.size.should == prev_items_size + 1
51
+ @contact.nickname = "Test"
52
+ @contact.physical_addresses.pop # delete last address
53
+ @contact.should be_changed
54
+ @contact.save
55
+ @contact.should_not be_changed
56
+ @contact.physical_addresses.size.should == 1
57
+ end
58
+ end
59
+
60
+ it "cannot create a contact without a parent_folder" do
61
+ @contact.parent_folder_id = nil
62
+ @contact.save.should be_false
63
+ @contact.errors.should include("Parent folder can't be blank")
64
+ end
65
+ end
66
+
67
+ describe "#destroy" do
68
+ before do
69
+ VCR.use_cassette("contact/destroy_setup") do
70
+ @contact.save
71
+ end
72
+ end
73
+
74
+ it "should destroy contact and return true" do
75
+ VCR.use_cassette("contact/destroy") do
76
+ @contact.destroy.should be_true
77
+ end
78
+ end
79
+ end
80
+
81
+ describe ".find" do
82
+ before do
83
+ VCR.use_cassette("contact/find_setup") do
84
+ @contact.save
85
+ end
86
+ end
87
+
88
+ it "should find a contact by id" do
89
+ VCR.use_cassette("contact/find") do
90
+ found_contact = Exchanger::Contact.find(@contact.id)
91
+ found_contact.id.should == @contact.id
92
+ end
93
+ end
94
+
95
+ it "should have parent folder" do
96
+ VCR.use_cassette("contact/find") do
97
+ found_contact = Exchanger::Item.find(@contact.id)
98
+ found_contact.parent_folder.id.should == @folder.id
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,4 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::Element do
4
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe Exchanger::Field do
4
4
  describe "String (default type)" do
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::Folder do
4
+ before do
5
+ @folder = VCR.use_cassette('folder/find_root') do
6
+ Exchanger::Folder.find(:root)
7
+ end
8
+ end
9
+
10
+ describe "#folders" do
11
+ it "should return sub folders" do
12
+ VCR.use_cassette('folder/find_root_folders') do
13
+ @folder.folders.size.should > 0
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,46 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::GetUserAvailability do
4
+ before(:all) do
5
+ @valid_attributes = YAML.load_file(File.expand_path(File.dirname(__FILE__) + '/../fixtures/get_user_availability.yml'))
6
+ @valid_attributes["start_time"] = Time.parse(@valid_attributes["start_time"])
7
+ @valid_attributes["end_time"] = Time.parse(@valid_attributes["end_time"])
8
+ end
9
+
10
+ before do
11
+ @response = VCR.use_cassette('get_user_availability') do
12
+ Exchanger::GetUserAvailability.run(@valid_attributes)
13
+ end
14
+ @items = @response.items
15
+ end
16
+
17
+ it "should be sucessfull with default values" do
18
+ VCR.use_cassette('get_user_availability_default') do
19
+ Exchanger::GetUserAvailability.run().status.should == 200
20
+ end
21
+ end
22
+
23
+ it "should be sucessfull with valid data" do
24
+ @response.status.should == 200
25
+ end
26
+
27
+ it "should response have calendar event items" do
28
+ @items.all?{ |i| i.class.name == "Exchanger::CalendarEvent" }.should be_true
29
+ end
30
+
31
+ it "should calendar event item have valid attributes" do
32
+ ["start_time", "end_time", "busy_type", "calendar_event_details"].each do |k|
33
+ @items[0].attributes.keys.include?(k).should be_true
34
+ end
35
+ end
36
+
37
+ it "should calendar event items have calendar event details" do
38
+ @items.all?{ |i| i.calendar_event_details.class.name == "Exchanger::CalendarEventDetails" }.should be_true
39
+ end
40
+
41
+ it "should calendar event details item have valid attributes" do
42
+ ["id","subject","location", "is_meeting", "is_recurring", "is_exception", "is_reminder_set", "is_private"].each do |k|
43
+ @items[0].calendar_event_details.attributes.keys.include?(k).should be_true
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Exchanger::Mailbox do
4
+ describe ".search" do
5
+ it "should resolve names for distribution list and show members" do
6
+ @mailboxes = VCR.use_cassette('mailbox/search_test') do
7
+ Exchanger::Mailbox.search("test")
8
+ end
9
+ if @mailboxes.size == 0
10
+ pending "Please create distribution list named 'Test' with one member"
11
+ end
12
+ @mailboxes.size.should be > 0
13
+ VCR.use_cassette('mailbox/search_test_members') do
14
+ @mailboxes[0].members.size.should be > 0
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ email_address: ebeigarts@ebeigarts.onmicrosoft.com
2
+ time_zone: EET
3
+ start_time: '2016-01-01 00:00:01'
4
+ end_time: '2016-01-31 23:59:59'
@@ -1,4 +1,4 @@
1
- email_address: test.test@test.com
1
+ email_address: ebeigarts@ebeigarts.onmicrosoft.com
2
2
  time_zone: EET
3
- start_time: '2012-05-31 00:00:01'
4
- end_time: '2012-05-31 23:59:59'
3
+ start_time: '2016-01-01 00:00:01'
4
+ end_time: '2016-01-31 23:59:59'
@@ -1,7 +1,24 @@
1
1
  $:.unshift File.dirname(__FILE__) + '/../lib'
2
2
 
3
- require "rubygems"
3
+ require "bundler/setup"
4
+ require "simplecov"
5
+
6
+ SimpleCov.start do
7
+ add_filter '/spec/'
8
+ end
9
+
4
10
  require "exchanger"
5
11
  require "kconv"
12
+ require "vcr"
13
+ require "webmock"
6
14
 
7
15
  Exchanger::Config.instance.from_hash(YAML.load_file("#{File.dirname(__FILE__)}/config.yml"))
16
+
17
+ VCR.configure do |c|
18
+ c.cassette_library_dir = "spec/cassettes"
19
+ c.hook_into :webmock
20
+ c.ignore_localhost = true
21
+ c.default_cassette_options = { :record => :new_episodes }
22
+ c.filter_sensitive_data('FILTERED_USERNAME') { Exchanger.config.username.gsub("@", "%40") }
23
+ c.filter_sensitive_data('FILTERED_PASSWORD') { Exchanger.config.password }
24
+ end
metadata CHANGED
@@ -1,198 +1,206 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exchanger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.1.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Edgars Beigarts
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-06-14 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: 2.2.2
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 2.2.2
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: nokogiri
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 1.3.0
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 1.3.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: httpclient
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: 2.1.5.2
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.1.5.2
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rubyntlm
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - ">="
68
60
  - !ruby/object:Gem::Version
69
61
  version: 0.1.1
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - ">="
76
67
  - !ruby/object:Gem::Version
77
68
  version: 0.1.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: tzinfo
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.33
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.33
78
83
  - !ruby/object:Gem::Dependency
79
84
  name: rake
80
85
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
86
  requirements:
83
- - - ! '>='
87
+ - - ">="
84
88
  - !ruby/object:Gem::Version
85
89
  version: '0'
86
90
  type: :development
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
93
  requirements:
91
- - - ! '>='
94
+ - - ">="
92
95
  - !ruby/object:Gem::Version
93
96
  version: '0'
94
97
  - !ruby/object:Gem::Dependency
95
98
  name: i18n
96
99
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
100
  requirements:
99
- - - ! '>='
101
+ - - ">="
100
102
  - !ruby/object:Gem::Version
101
103
  version: '0'
102
104
  type: :development
103
105
  prerelease: false
104
106
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
107
  requirements:
107
- - - ! '>='
108
+ - - ">="
108
109
  - !ruby/object:Gem::Version
109
110
  version: '0'
110
111
  - !ruby/object:Gem::Dependency
111
112
  name: rspec
112
113
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 2.6.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
121
  requirements:
123
- - - ~>
122
+ - - "~>"
124
123
  - !ruby/object:Gem::Version
125
124
  version: 2.6.0
126
125
  - !ruby/object:Gem::Dependency
127
- name: rcov
126
+ name: simplecov
128
127
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
128
  requirements:
131
- - - ! '>='
129
+ - - ">="
132
130
  - !ruby/object:Gem::Version
133
131
  version: '0'
134
132
  type: :development
135
133
  prerelease: false
136
134
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
135
  requirements:
139
- - - ! '>='
136
+ - - ">="
140
137
  - !ruby/object:Gem::Version
141
138
  version: '0'
142
139
  - !ruby/object:Gem::Dependency
143
140
  name: yard
144
141
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
142
  requirements:
147
- - - ! '>='
143
+ - - ">="
148
144
  - !ruby/object:Gem::Version
149
145
  version: '0'
150
146
  type: :development
151
147
  prerelease: false
152
148
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
149
  requirements:
155
- - - ! '>='
150
+ - - ">="
156
151
  - !ruby/object:Gem::Version
157
152
  version: '0'
158
153
  - !ruby/object:Gem::Dependency
159
154
  name: BlueCloth
160
155
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
156
  requirements:
163
- - - ! '>='
157
+ - - ">="
164
158
  - !ruby/object:Gem::Version
165
159
  version: '0'
166
160
  type: :development
167
161
  prerelease: false
168
162
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
163
  requirements:
171
- - - ! '>='
164
+ - - ">="
172
165
  - !ruby/object:Gem::Version
173
166
  version: '0'
174
167
  - !ruby/object:Gem::Dependency
175
- name: tzinfo
168
+ name: vcr
176
169
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
170
  requirements:
179
- - - ! '>='
171
+ - - "~>"
180
172
  - !ruby/object:Gem::Version
181
- version: '0'
173
+ version: 2.2.5
182
174
  type: :development
183
175
  prerelease: false
184
176
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
177
  requirements:
187
- - - ! '>='
178
+ - - "~>"
188
179
  - !ruby/object:Gem::Version
189
- version: '0'
180
+ version: 2.2.5
181
+ - !ruby/object:Gem::Dependency
182
+ name: webmock
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 1.8.11
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 1.8.11
190
195
  description: Ruby library for accessing Microsoft Exchange using Exchange Web Services
191
- email: 1@wb4.lv
196
+ email: edgars.beigarts@gmail.com
192
197
  executables: []
193
198
  extensions: []
194
199
  extra_rdoc_files: []
195
200
  files:
201
+ - LICENSE
202
+ - README.md
203
+ - lib/exchanger.rb
196
204
  - lib/exchanger/attributes.rb
197
205
  - lib/exchanger/boolean.rb
198
206
  - lib/exchanger/client.rb
@@ -205,6 +213,7 @@ files:
205
213
  - lib/exchanger/elements/calendar_event_details.rb
206
214
  - lib/exchanger/elements/calendar_folder.rb
207
215
  - lib/exchanger/elements/calendar_item.rb
216
+ - lib/exchanger/elements/calendar_view.rb
208
217
  - lib/exchanger/elements/complete_name.rb
209
218
  - lib/exchanger/elements/contact.rb
210
219
  - lib/exchanger/elements/contacts_folder.rb
@@ -241,43 +250,56 @@ files:
241
250
  - lib/exchanger/operations/update_item.rb
242
251
  - lib/exchanger/persistence.rb
243
252
  - lib/exchanger/version.rb
244
- - lib/exchanger.rb
245
- - spec/calendar_item_spec.rb
246
- - spec/client_spec.rb
253
+ - spec/cassettes/contact/destroy.yml
254
+ - spec/cassettes/contact/destroy_setup.yml
255
+ - spec/cassettes/contact/find.yml
256
+ - spec/cassettes/contact/find_setup.yml
257
+ - spec/cassettes/contact/save.yml
258
+ - spec/cassettes/contact/save_cleanup.yml
259
+ - spec/cassettes/folder/find_calendar.yml
260
+ - spec/cassettes/folder/find_contacts.yml
261
+ - spec/cassettes/folder/find_root.yml
262
+ - spec/cassettes/folder/find_root_folders.yml
263
+ - spec/cassettes/get_user_availability.yml
264
+ - spec/cassettes/get_user_availability_default.yml
265
+ - spec/cassettes/mailbox/search_test.yml
266
+ - spec/cassettes/mailbox/search_test_members.yml
247
267
  - spec/config.yml
248
268
  - spec/config.yml.example
249
- - spec/contact_spec.rb
250
- - spec/element_spec.rb
251
- - spec/field_spec.rb
269
+ - spec/exchanger/calendar_folder_spec.rb
270
+ - spec/exchanger/calendar_item_spec.rb
271
+ - spec/exchanger/client_spec.rb
272
+ - spec/exchanger/contact_spec.rb
273
+ - spec/exchanger/element_spec.rb
274
+ - spec/exchanger/field_spec.rb
275
+ - spec/exchanger/folder_spec.rb
276
+ - spec/exchanger/get_user_availability_spec.rb
277
+ - spec/exchanger/mailbox_spec.rb
278
+ - spec/fixtures/get_user_availability.yml
252
279
  - spec/fixtures/get_user_availability.yml.example
253
- - spec/folder_spec.rb
254
- - spec/get_user_availability_spec.rb
255
- - spec/mailbox_spec.rb
256
280
  - spec/spec_helper.rb
257
- - README.md
258
- - LICENSE
259
281
  homepage: http://github.com/ebeigarts/exchanger
260
282
  licenses: []
283
+ metadata: {}
261
284
  post_install_message:
262
285
  rdoc_options: []
263
286
  require_paths:
264
287
  - lib
265
288
  required_ruby_version: !ruby/object:Gem::Requirement
266
- none: false
267
289
  requirements:
268
- - - ! '>='
290
+ - - ">="
269
291
  - !ruby/object:Gem::Version
270
292
  version: '0'
271
293
  required_rubygems_version: !ruby/object:Gem::Requirement
272
- none: false
273
294
  requirements:
274
- - - ! '>='
295
+ - - ">="
275
296
  - !ruby/object:Gem::Version
276
297
  version: '0'
277
298
  requirements: []
278
299
  rubyforge_project:
279
- rubygems_version: 1.8.24
300
+ rubygems_version: 2.4.8
280
301
  signing_key:
281
- specification_version: 3
302
+ specification_version: 4
282
303
  summary: Ruby library for accessing Microsoft Exchange using Exchange Web Services
283
304
  test_files: []
305
+ has_rdoc: