myvr 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 46a476e0ad9beca3e9b4f43790c54cbde5281a43
4
+ data.tar.gz: 13cee268b5ab3cc57988100ee89c47ef742a8ea7
5
+ SHA512:
6
+ metadata.gz: 74c28bbfa0f70f05d1ee2b2da7c379e509cb196e48c8803b714b7892418b56263fb3de1cec7ddd04a954bce1fac10a1da3b6d192267033fc129d19dfa596808b
7
+ data.tar.gz: 7e04def406f644f3a544925202a20bd247823cbb954c82f9ff4c3d6ee0890216e465838697115d4a8715e77381bebcd637156a72a7429b6fd51480dcdbb9e165
@@ -0,0 +1,71 @@
1
+ # MyVR
2
+
3
+ The purpose of this library is to communicate with the MyVR API using Ruby!
4
+
5
+ To view the original API docs check out
6
+ [developer.myvr.com](https://developer.myvr.com/).
7
+
8
+ ## Installation
9
+
10
+ ```sh
11
+ gem install myvr
12
+ ```
13
+
14
+ ## Configuration
15
+
16
+ There are two different ways to authenticate with MyVR. MyVR Connect using
17
+ OAuth, or Application level authentication.
18
+
19
+
20
+ To start using the MyVR API you will need to [register an application with
21
+ MyVR](https://myvr.com/account/#/settings/api/).
22
+
23
+
24
+ Your new application will be assigned a consumer key/secret pair that identifies
25
+ your application to Twitter. This is all you need to configure your client for
26
+ application-only authentication.
27
+
28
+ ```ruby
29
+ client = MyVR::Client.new(access_key: 'YOUR_ACCESS_KEY')
30
+ client.properties
31
+ ```
32
+
33
+
34
+ ### Roadmap
35
+
36
+ + Properties
37
+ + List Properties :shipit:
38
+ + Retrieve Property :shipit:
39
+ + Create Property
40
+ + Update Property
41
+ + Delete Property
42
+ + Rates
43
+ + List Rates
44
+ + Retrieve Rate
45
+ + Create Rate
46
+ + Update Rate
47
+ + Delete Rate
48
+ + Fees
49
+ + List Fees
50
+ + Retrieve Fees
51
+ + Create Fees
52
+ + Update Fees
53
+ + Delete Fees
54
+ + Photos
55
+ + List Photos
56
+ + Retrieve Photos
57
+ + Create Photos
58
+ + Update Photos
59
+ + Delete Photos
60
+ + Amenities
61
+ + List Amenities
62
+ + Retrieve Amenities
63
+ + Create Amenities
64
+ + Update Amenities
65
+ + Delete Amenities
66
+ + Rooms
67
+ + List Rooms
68
+ + Retrieve Rooms
69
+ + Create Rooms
70
+ + Update Rooms
71
+ + Delete Rooms
@@ -0,0 +1,20 @@
1
+ require 'addressable/uri'
2
+ require 'curb'
3
+ require 'json'
4
+
5
+ require_relative './myvr/version'
6
+ require_relative './myvr/api/amenities'
7
+ require_relative './myvr/api/fees'
8
+ require_relative './myvr/api/photos'
9
+ require_relative './myvr/api/properties'
10
+ require_relative './myvr/api/rates'
11
+ require_relative './myvr/api/rooms'
12
+ require_relative './myvr/client'
13
+
14
+ require_relative './myvr/model'
15
+ require_relative './myvr/amenity'
16
+ require_relative './myvr/fee'
17
+ require_relative './myvr/photo'
18
+ require_relative './myvr/property'
19
+ require_relative './myvr/rate'
20
+ require_relative './myvr/room'
@@ -0,0 +1,4 @@
1
+ module MyVR
2
+ class Amenity < MyVR::Model
3
+ end
4
+ end
@@ -0,0 +1,21 @@
1
+ module MyVR
2
+ module API
3
+ module Amenities
4
+ def amenities!
5
+ data = get_objects("/v1/amenities/")
6
+ data.map do |fee|
7
+ MyVR::Amenity.new(fee)
8
+ end
9
+ end
10
+
11
+ def amenities
12
+ @amenities ||= amenities!
13
+ end
14
+
15
+ def fee(id)
16
+ data = get_object("/v1/amenities/#{ id }/")
17
+ MyVR::Amenity.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module MyVR
2
+ module API
3
+ module Fees
4
+ def fees!
5
+ data = get_objects("/v1/fees/")
6
+ data.map do |fee|
7
+ MyVR::Fee.new(fee)
8
+ end
9
+ end
10
+
11
+ def fees
12
+ @fees ||= fees!
13
+ end
14
+
15
+ def fee(id)
16
+ data = get_object("/v1/fees/#{ id }/")
17
+ MyVR::Fee.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module MyVR
2
+ module API
3
+ module Photos
4
+ def photos!
5
+ data = get_objects("/v1/photos/")
6
+ data.map do |photo|
7
+ MyVR::Photo.new(photo)
8
+ end
9
+ end
10
+
11
+ def photos
12
+ @photos ||= photos!
13
+ end
14
+
15
+ def photo(id)
16
+ data = get_object("/v1/photos/#{ id }/")
17
+ MyVR::Photo.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module MyVR
2
+ module API
3
+ module Properties
4
+ def properties!(search = '')
5
+ data = get_objects("/v1/properties/", { name: search })
6
+ data.map do |property|
7
+ MyVR::Property.new(property)
8
+ end
9
+ end
10
+
11
+ def properties(search='')
12
+ @properties ||= properties!(search)
13
+ end
14
+
15
+ def property(id)
16
+ data = get_object("/v1/properties/#{ id }/")
17
+ MyVR::Property.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module MyVR
2
+ module API
3
+ module Rates
4
+ def rates!
5
+ data = get_objects("/v1/rates/")
6
+ data.map do |rate|
7
+ MyVR::Rate.new(rate)
8
+ end
9
+ end
10
+
11
+ def rates
12
+ @rates ||= rates!
13
+ end
14
+
15
+ def rate(id)
16
+ data = get_object("/v1/rates/#{ id }/")
17
+ MyVR::Rate.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module MyVR
2
+ module API
3
+ module Rooms
4
+ def rooms!
5
+ data = get_objects("/v1/rooms/")
6
+ data.map do |room|
7
+ MyVR::Room.new(room)
8
+ end
9
+ end
10
+
11
+ def rooms
12
+ @rooms ||= rooms!
13
+ end
14
+
15
+ def room(id)
16
+ data = get_object("/v1/rooms/#{ id }/")
17
+ MyVR::Room.new(data)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,62 @@
1
+ require 'active_support/inflector'
2
+
3
+ module MyVR
4
+ class Client
5
+ include MyVR::API::Amenities
6
+ include MyVR::API::Fees
7
+ include MyVR::API::Photos
8
+ include MyVR::API::Properties
9
+ include MyVR::API::Rates
10
+ include MyVR::API::Rooms
11
+
12
+ attr_accessor :access_key, :last_response
13
+
14
+ def initialize(options = {})
15
+ @last_response = nil
16
+ options.each do |key, value|
17
+ instance_variable_set("@#{ key }", value)
18
+ end
19
+ yield(self) if block_given?
20
+ end
21
+
22
+ def user_agent
23
+ @user_agent ||= "MyVRRubyGem/#{ MyVR::Version }"
24
+ end
25
+
26
+ def get_objects(path, params={})
27
+ response = request(:get, path, params.dup)
28
+ response['results']
29
+ end
30
+
31
+ def get_object(path, params={})
32
+ request(:get, path, params.dup)
33
+ end
34
+
35
+ def request(http_method, path, params={})
36
+ url = base_url(path, params.dup)
37
+ c = Curl::Easy.new(url)
38
+ c.http_auth_types = :basic
39
+ c.username = access_key
40
+ c.send(http_method)
41
+ p JSON.parse(c.body_str)
42
+ end
43
+
44
+ def base_url(path, params={})
45
+ Addressable::URI.new(
46
+ host: 'api.local.myvr.com',
47
+ port: 8000,
48
+ scheme: 'http',
49
+ path: path,
50
+ query_values: params
51
+ )
52
+ end
53
+
54
+ private
55
+
56
+ def assert_class_type(klass)
57
+ unless klass.is_a?(String) || klass.is_a?(Class)
58
+ raise 'Class of object(s) to return must be string or class'
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,4 @@
1
+ module MyVR
2
+ module Error
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module MyVR
2
+ class Fee < MyVR::Model
3
+ end
4
+ end
@@ -0,0 +1,9 @@
1
+ module MyVR
2
+ class Model
3
+ def initialize(attrs = {})
4
+ attrs.each do |key, value|
5
+ instance_variable_set("@#{ key }", value)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ module MyVR
2
+ class Photo < MyVR::Model
3
+ end
4
+ end
@@ -0,0 +1,31 @@
1
+ module MyVR
2
+ class Property < MyVR::Model
3
+ attr_reader(
4
+ :uri,
5
+ :id,
6
+ :externalId,
7
+ :name,
8
+ :shortCode,
9
+ :active,
10
+ :bedrooms,
11
+ :bathrooms,
12
+ :accommodates,
13
+ :size,
14
+ :type,
15
+ :weekendNights,
16
+ :currency,
17
+ :allowTurns,
18
+ :checkInTime,
19
+ :checkOutTime,
20
+ :manual,
21
+ :suitablePets,
22
+ :suitableElderly,
23
+ :suitableKids,
24
+ :suitableGroups,
25
+ :suitableSmoking,
26
+ :suitableHandicap,
27
+ :amenities,
28
+ :created
29
+ )
30
+ end
31
+ end
@@ -0,0 +1,4 @@
1
+ module MyVR
2
+ class Rate < MyVR::Model
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ module MyVR
2
+ class Room < MyVR::Model
3
+ end
4
+ end
5
+
@@ -0,0 +1,32 @@
1
+ module MyVR
2
+ module Version
3
+ module_function
4
+ def major
5
+ 0
6
+ end
7
+
8
+ def minor
9
+ 0
10
+ end
11
+
12
+ def patch
13
+ 0
14
+ end
15
+
16
+ def to_h
17
+ {
18
+ major: major,
19
+ minor: minor,
20
+ patch: patch,
21
+ }
22
+ end
23
+
24
+ def to_a
25
+ [major, minor, patch].compact
26
+ end
27
+
28
+ def to_s
29
+ to_a.join('.')
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'myvr/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.add_dependency 'addressable', '~> 2.3'
7
+ s.add_dependency 'curb', '~> 0.9.1'
8
+ s.add_dependency 'json', '~> 1.8', '>= 1.8.3'
9
+ s.add_development_dependency 'bundler', '~> 1.0'
10
+ s.name = 'myvr'
11
+ s.version = MyVR::Version
12
+ s.date = '2016-01-07'
13
+ s.description = 'Ruby interface for the MyVR.com API'
14
+ s.summary = s.description
15
+ s.authors = ['CJ Avilla']
16
+ s.email = 'cavilla@myvr.com'
17
+ s.files = %w(README.md myvr.gemspec) + Dir['lib/**/*.rb']
18
+ s.homepage = 'https://github.com/w1zeman1p/myvr'
19
+ s.license = 'MIT'
20
+ s.require_paths = 'lib'
21
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: myvr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - CJ Avilla
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: curb
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.9.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.9.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.8'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.8.3
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '1.8'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.8.3
61
+ - !ruby/object:Gem::Dependency
62
+ name: bundler
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.0'
75
+ description: Ruby interface for the MyVR.com API
76
+ email: cavilla@myvr.com
77
+ executables: []
78
+ extensions: []
79
+ extra_rdoc_files: []
80
+ files:
81
+ - README.md
82
+ - lib/myvr.rb
83
+ - lib/myvr/amenity.rb
84
+ - lib/myvr/api/amenities.rb
85
+ - lib/myvr/api/fees.rb
86
+ - lib/myvr/api/photos.rb
87
+ - lib/myvr/api/properties.rb
88
+ - lib/myvr/api/rates.rb
89
+ - lib/myvr/api/rooms.rb
90
+ - lib/myvr/client.rb
91
+ - lib/myvr/error.rb
92
+ - lib/myvr/fee.rb
93
+ - lib/myvr/model.rb
94
+ - lib/myvr/photo.rb
95
+ - lib/myvr/property.rb
96
+ - lib/myvr/rate.rb
97
+ - lib/myvr/room.rb
98
+ - lib/myvr/version.rb
99
+ - myvr.gemspec
100
+ homepage: https://github.com/w1zeman1p/myvr
101
+ licenses:
102
+ - MIT
103
+ metadata: {}
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 2.4.5
121
+ signing_key:
122
+ specification_version: 4
123
+ summary: Ruby interface for the MyVR.com API
124
+ test_files: []