etsy 0.2.0 → 0.2.1

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 (66) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +8 -0
  3. data/Gemfile +10 -0
  4. data/README.md +300 -0
  5. data/Rakefile +2 -30
  6. data/etsy.gemspec +36 -0
  7. data/lib/etsy.rb +46 -17
  8. data/lib/etsy/address.rb +47 -0
  9. data/lib/etsy/basic_client.rb +1 -1
  10. data/lib/etsy/category.rb +84 -0
  11. data/lib/etsy/country.rb +27 -0
  12. data/lib/etsy/image.rb +7 -3
  13. data/lib/etsy/listing.rb +107 -8
  14. data/lib/etsy/model.rb +99 -3
  15. data/lib/etsy/payment_template.rb +33 -0
  16. data/lib/etsy/profile.rb +49 -0
  17. data/lib/etsy/request.rb +85 -17
  18. data/lib/etsy/response.rb +80 -4
  19. data/lib/etsy/section.rb +16 -0
  20. data/lib/etsy/secure_client.rb +49 -4
  21. data/lib/etsy/shipping_template.rb +32 -0
  22. data/lib/etsy/shop.rb +21 -12
  23. data/lib/etsy/transaction.rb +18 -0
  24. data/lib/etsy/user.rb +45 -13
  25. data/lib/etsy/verification_request.rb +2 -2
  26. data/test/fixtures/address/getUserAddresses.json +12 -0
  27. data/test/fixtures/category/findAllSubCategoryChildren.json +78 -0
  28. data/test/fixtures/category/findAllTopCategory.json +347 -0
  29. data/test/fixtures/category/findAllTopCategory.single.json +18 -0
  30. data/test/fixtures/category/findAllTopCategoryChildren.json +308 -0
  31. data/test/fixtures/category/getCategory.multiple.json +28 -0
  32. data/test/fixtures/category/getCategory.single.json +18 -0
  33. data/test/fixtures/country/getCountry.json +1 -0
  34. data/test/fixtures/listing/findAllListingActive.category.json +827 -0
  35. data/test/fixtures/listing/{findAllShopListingsActive.json → findAllShopListings.json} +0 -0
  36. data/test/fixtures/listing/getListing.multiple.json +1 -0
  37. data/test/fixtures/listing/getListing.single.json +1 -0
  38. data/test/fixtures/payment_template/getPaymentTemplate.json +1 -0
  39. data/test/fixtures/profile/new.json +28 -0
  40. data/test/fixtures/section/getShopSection.json +18 -0
  41. data/test/fixtures/shipping_template/getShippingTemplate.json +1 -0
  42. data/test/fixtures/shop/getShop.single.json +4 -3
  43. data/test/fixtures/transaction/findAllShopTransactions.json +1 -0
  44. data/test/fixtures/user/getUser.single.withProfile.json +38 -0
  45. data/test/fixtures/user/getUser.single.withShops.json +41 -0
  46. data/test/test_helper.rb +9 -4
  47. data/test/unit/etsy/address_test.rb +61 -0
  48. data/test/unit/etsy/category_test.rb +106 -0
  49. data/test/unit/etsy/country_test.rb +64 -0
  50. data/test/unit/etsy/listing_test.rb +112 -5
  51. data/test/unit/etsy/model_test.rb +64 -0
  52. data/test/unit/etsy/payment_template_test.rb +68 -0
  53. data/test/unit/etsy/profile_test.rb +111 -0
  54. data/test/unit/etsy/request_test.rb +89 -53
  55. data/test/unit/etsy/response_test.rb +118 -4
  56. data/test/unit/etsy/section_test.rb +28 -0
  57. data/test/unit/etsy/secure_client_test.rb +27 -5
  58. data/test/unit/etsy/shipping_template_test.rb +24 -0
  59. data/test/unit/etsy/shop_test.rb +12 -5
  60. data/test/unit/etsy/transaction_test.rb +52 -0
  61. data/test/unit/etsy/user_test.rb +147 -8
  62. data/test/unit/etsy/verification_request_test.rb +3 -3
  63. data/test/unit/etsy_test.rb +19 -7
  64. metadata +133 -77
  65. data/README.rdoc +0 -208
  66. data/lib/etsy/version.rb +0 -13
@@ -13,14 +13,14 @@ module Etsy
13
13
 
14
14
  should "know the url" do
15
15
  client = stub()
16
- client.stubs(:request_token).returns(stub(:authorize_url => 'http://www.etsy.com?foo=bar', :secret => 'secret'))
16
+ client.stubs(:request_token).returns(stub(:params => {:login_url => 'http://www.etsy.com?foo=bar&baz=true'}, :secret => 'secret'))
17
17
 
18
18
  @request.stubs(:client).returns(client)
19
19
 
20
- @request.url.should == 'http://www.etsy.com?foo=bar&oauth_consumer_key=secret'
20
+ @request.url.should == 'http://www.etsy.com?foo=bar&baz=true'
21
21
  end
22
22
 
23
23
  end
24
24
 
25
25
  end
26
- end
26
+ end
@@ -7,8 +7,10 @@ class EtsyTest < Test::Unit::TestCase
7
7
  Etsy.instance_variable_set(:@environment, nil)
8
8
  Etsy.instance_variable_set(:@access_mode, nil)
9
9
  Etsy.instance_variable_set(:@callback_url, nil)
10
+ Etsy.instance_variable_set(:@host, nil)
10
11
  Etsy.instance_variable_set(:@api_key, nil)
11
12
  Etsy.instance_variable_set(:@api_secret, nil)
13
+ Etsy.instance_variable_set(:@permission_scopes, nil)
12
14
  end
13
15
 
14
16
  should "be able to set and retrieve the API key" do
@@ -41,17 +43,18 @@ class EtsyTest < Test::Unit::TestCase
41
43
  Etsy.api_secret.should == 'secret'
42
44
  end
43
45
 
44
- should "be in read-mode by default" do
45
- Etsy.access_mode.should == :read_only
46
+ should "know the host for the sandbox environment" do
47
+ Etsy.environment = :sandbox
48
+ Etsy.host.should == 'sandbox.openapi.etsy.com'
46
49
  end
47
50
 
48
- should "be able to set the access mode to a read-write" do
49
- Etsy.access_mode = :read_write
50
- Etsy.access_mode.should == :read_write
51
+ should "know the host for the production environment" do
52
+ Etsy.environment = :production
53
+ Etsy.host.should == 'openapi.etsy.com'
51
54
  end
52
55
 
53
- should "raise an exception when attempting to set an invalid access mode" do
54
- lambda { Etsy.access_mode = :invalid }.should raise_error(ArgumentError)
56
+ should "default to sandbox host" do
57
+ Etsy.host.should == 'sandbox.openapi.etsy.com'
55
58
  end
56
59
 
57
60
  should "be able to set the callback url" do
@@ -62,6 +65,15 @@ class EtsyTest < Test::Unit::TestCase
62
65
  should "default callback to out-of-band" do
63
66
  Etsy.callback_url.should == 'oob'
64
67
  end
68
+
69
+ should "default permission scopes to an empty array" do
70
+ Etsy.permission_scopes.should == []
71
+ end
72
+
73
+ should "be able to set the scopes" do
74
+ Etsy.permission_scopes = %w(a_scope another_scope)
75
+ Etsy.permission_scopes.should == ['a_scope', 'another_scope']
76
+ end
65
77
  end
66
78
 
67
79
  context "The Etsy module when set up properly" do
metadata CHANGED
@@ -1,132 +1,188 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: etsy
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Patrick Reagan
9
+ - Katrina Owen
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2010-11-11 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
13
+ date: 2012-07-04 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: json
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &70157167530640 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 1
32
- - 4
33
- - 0
34
- version: 1.4.0
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.5.0
35
23
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: oauth
39
24
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *70157167530640
26
+ - !ruby/object:Gem::Dependency
27
+ name: oauth
28
+ requirement: &70157167530160 !ruby/object:Gem::Requirement
41
29
  none: false
42
- requirements:
30
+ requirements:
43
31
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 0
48
- - 4
49
- - 0
32
+ - !ruby/object:Gem::Version
50
33
  version: 0.4.0
51
34
  type: :runtime
52
- version_requirements: *id002
53
- description:
54
- email: reaganpr@gmail.com
35
+ prerelease: false
36
+ version_requirements: *70157167530160
37
+ description: A friendly Ruby interface to the Etsy API
38
+ email:
39
+ - reaganpr@gmail.com
40
+ - katrina.owen@gmail.com
55
41
  executables: []
56
-
57
42
  extensions: []
58
-
59
- extra_rdoc_files:
60
- - README.rdoc
61
- files:
62
- - README.rdoc
43
+ extra_rdoc_files: []
44
+ files:
45
+ - .gitignore
46
+ - .travis.yml
47
+ - Gemfile
48
+ - README.md
63
49
  - Rakefile
50
+ - etsy.gemspec
51
+ - lib/etsy.rb
52
+ - lib/etsy/address.rb
64
53
  - lib/etsy/basic_client.rb
54
+ - lib/etsy/category.rb
55
+ - lib/etsy/country.rb
65
56
  - lib/etsy/image.rb
66
57
  - lib/etsy/listing.rb
67
58
  - lib/etsy/model.rb
59
+ - lib/etsy/payment_template.rb
60
+ - lib/etsy/profile.rb
68
61
  - lib/etsy/request.rb
69
62
  - lib/etsy/response.rb
63
+ - lib/etsy/section.rb
70
64
  - lib/etsy/secure_client.rb
65
+ - lib/etsy/shipping_template.rb
71
66
  - lib/etsy/shop.rb
67
+ - lib/etsy/transaction.rb
72
68
  - lib/etsy/user.rb
73
69
  - lib/etsy/verification_request.rb
74
- - lib/etsy/version.rb
75
- - lib/etsy.rb
70
+ - test/fixtures/address/getUserAddresses.json
71
+ - test/fixtures/category/findAllSubCategoryChildren.json
72
+ - test/fixtures/category/findAllTopCategory.json
73
+ - test/fixtures/category/findAllTopCategory.single.json
74
+ - test/fixtures/category/findAllTopCategoryChildren.json
75
+ - test/fixtures/category/getCategory.multiple.json
76
+ - test/fixtures/category/getCategory.single.json
77
+ - test/fixtures/country/getCountry.json
76
78
  - test/fixtures/image/findAllListingImages.json
77
- - test/fixtures/listing/findAllShopListingsActive.json
79
+ - test/fixtures/listing/findAllListingActive.category.json
80
+ - test/fixtures/listing/findAllShopListings.json
81
+ - test/fixtures/listing/getListing.multiple.json
82
+ - test/fixtures/listing/getListing.single.json
83
+ - test/fixtures/payment_template/getPaymentTemplate.json
84
+ - test/fixtures/profile/new.json
85
+ - test/fixtures/section/getShopSection.json
86
+ - test/fixtures/shipping_template/getShippingTemplate.json
78
87
  - test/fixtures/shop/findAllShop.json
79
88
  - test/fixtures/shop/findAllShop.single.json
80
89
  - test/fixtures/shop/getShop.multiple.json
81
90
  - test/fixtures/shop/getShop.single.json
91
+ - test/fixtures/transaction/findAllShopTransactions.json
82
92
  - test/fixtures/user/getUser.multiple.json
83
93
  - test/fixtures/user/getUser.single.json
84
94
  - test/fixtures/user/getUser.single.private.json
95
+ - test/fixtures/user/getUser.single.withProfile.json
96
+ - test/fixtures/user/getUser.single.withShops.json
85
97
  - test/test_helper.rb
98
+ - test/unit/etsy/address_test.rb
86
99
  - test/unit/etsy/basic_client_test.rb
100
+ - test/unit/etsy/category_test.rb
101
+ - test/unit/etsy/country_test.rb
87
102
  - test/unit/etsy/image_test.rb
88
103
  - test/unit/etsy/listing_test.rb
104
+ - test/unit/etsy/model_test.rb
105
+ - test/unit/etsy/payment_template_test.rb
106
+ - test/unit/etsy/profile_test.rb
89
107
  - test/unit/etsy/request_test.rb
90
108
  - test/unit/etsy/response_test.rb
109
+ - test/unit/etsy/section_test.rb
91
110
  - test/unit/etsy/secure_client_test.rb
111
+ - test/unit/etsy/shipping_template_test.rb
92
112
  - test/unit/etsy/shop_test.rb
113
+ - test/unit/etsy/transaction_test.rb
93
114
  - test/unit/etsy/user_test.rb
94
115
  - test/unit/etsy/verification_request_test.rb
95
116
  - test/unit/etsy_test.rb
96
- has_rdoc: true
97
- homepage: http://sneaq.net
117
+ homepage: http://github.com/kytrinyx/etsy
98
118
  licenses: []
99
-
100
119
  post_install_message:
101
- rdoc_options:
102
- - --main
103
- - README.rdoc
104
- require_paths:
120
+ rdoc_options: []
121
+ require_paths:
105
122
  - lib
106
- required_ruby_version: !ruby/object:Gem::Requirement
123
+ required_ruby_version: !ruby/object:Gem::Requirement
107
124
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 3
112
- segments:
113
- - 0
114
- version: "0"
115
- required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
130
  none: false
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- version: "0"
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
124
135
  requirements: []
125
-
126
136
  rubyforge_project:
127
- rubygems_version: 1.3.7
137
+ rubygems_version: 1.8.10
128
138
  signing_key:
129
139
  specification_version: 3
130
- summary: Provides a friendly ruby-like interface to the Etsy API
131
- test_files: []
132
-
140
+ summary: Provides a friendly ruby-like wrapper for the Etsy API
141
+ test_files:
142
+ - test/fixtures/address/getUserAddresses.json
143
+ - test/fixtures/category/findAllSubCategoryChildren.json
144
+ - test/fixtures/category/findAllTopCategory.json
145
+ - test/fixtures/category/findAllTopCategory.single.json
146
+ - test/fixtures/category/findAllTopCategoryChildren.json
147
+ - test/fixtures/category/getCategory.multiple.json
148
+ - test/fixtures/category/getCategory.single.json
149
+ - test/fixtures/country/getCountry.json
150
+ - test/fixtures/image/findAllListingImages.json
151
+ - test/fixtures/listing/findAllListingActive.category.json
152
+ - test/fixtures/listing/findAllShopListings.json
153
+ - test/fixtures/listing/getListing.multiple.json
154
+ - test/fixtures/listing/getListing.single.json
155
+ - test/fixtures/payment_template/getPaymentTemplate.json
156
+ - test/fixtures/profile/new.json
157
+ - test/fixtures/section/getShopSection.json
158
+ - test/fixtures/shipping_template/getShippingTemplate.json
159
+ - test/fixtures/shop/findAllShop.json
160
+ - test/fixtures/shop/findAllShop.single.json
161
+ - test/fixtures/shop/getShop.multiple.json
162
+ - test/fixtures/shop/getShop.single.json
163
+ - test/fixtures/transaction/findAllShopTransactions.json
164
+ - test/fixtures/user/getUser.multiple.json
165
+ - test/fixtures/user/getUser.single.json
166
+ - test/fixtures/user/getUser.single.private.json
167
+ - test/fixtures/user/getUser.single.withProfile.json
168
+ - test/fixtures/user/getUser.single.withShops.json
169
+ - test/test_helper.rb
170
+ - test/unit/etsy/address_test.rb
171
+ - test/unit/etsy/basic_client_test.rb
172
+ - test/unit/etsy/category_test.rb
173
+ - test/unit/etsy/country_test.rb
174
+ - test/unit/etsy/image_test.rb
175
+ - test/unit/etsy/listing_test.rb
176
+ - test/unit/etsy/model_test.rb
177
+ - test/unit/etsy/payment_template_test.rb
178
+ - test/unit/etsy/profile_test.rb
179
+ - test/unit/etsy/request_test.rb
180
+ - test/unit/etsy/response_test.rb
181
+ - test/unit/etsy/section_test.rb
182
+ - test/unit/etsy/secure_client_test.rb
183
+ - test/unit/etsy/shipping_template_test.rb
184
+ - test/unit/etsy/shop_test.rb
185
+ - test/unit/etsy/transaction_test.rb
186
+ - test/unit/etsy/user_test.rb
187
+ - test/unit/etsy/verification_request_test.rb
188
+ - test/unit/etsy_test.rb
data/README.rdoc DELETED
@@ -1,208 +0,0 @@
1
- = Etsy
2
-
3
- == Description
4
-
5
- The Etsy gem provides a friendly Ruby interface to the Etsy API
6
-
7
- == Installation
8
-
9
- Installing the latest stable version is simple:
10
-
11
- $ gem install etsy
12
-
13
- If you want to be on the bleeding edge, install from GitHub:
14
-
15
- $ git clone git://github.com/reagent/etsy.git
16
- $ cd etsy
17
- $ rake gem && gem install pkg/etsy-<version>.gem
18
-
19
- == Usage
20
-
21
- === Read-Only Mode
22
-
23
- The Etsy API has two modes: read-only, and read-write. Read-only mode only requires an
24
- API key (available from http://developer.etsy.com):
25
-
26
- require 'rubygems'
27
- require 'etsy'
28
-
29
- Etsy.api_key = 'foobar'
30
-
31
- From there, you can make any non-authenticated calls to the API that you need.
32
-
33
- == Authenticated Calls
34
-
35
- The Etsy API has support for both retrieval of extended information and write
36
- support for authenticated users. Authentication can either be performed from
37
- the console or from within a Ruby web application.
38
-
39
- === Console
40
-
41
- For simple authentication from the console, configure the necessary parameters:
42
-
43
- require 'rubygems'
44
- require 'etsy'
45
-
46
- Etsy.api_key = 'key'
47
- Etsy.api_secret = 'secret'
48
- Etsy.access_mode = :read_write
49
-
50
- From there, you will need to paste the verification URL into a browser:
51
-
52
- Etsy.verification_url
53
-
54
- Once you have allowed access, you can now generate an access token by supplying
55
- the verifier displayed on the Etsy site:
56
-
57
- request = Etsy.request_token
58
- access = Etsy.access_token(request.token, request.secret, 'abc123')
59
-
60
- Authenticated calls can now be made by passing an access token and secret:
61
-
62
- Etsy.myself(access.token, access.secret)
63
-
64
- === Web Application
65
-
66
- The process for authenticating via a web application is similar, but requires the
67
- configuration of a callback URL:
68
-
69
- require 'rubygems'
70
- require 'etsy'
71
-
72
- Etsy.api_key = 'key'
73
- Etsy.api_secret = 'secret'
74
- Etsy.access_mode = :read_write
75
- Etsy.callback_url = 'http://localhost:4567/authorize'
76
-
77
- In this mode, you'll need to store the request token and secret before redirecting
78
- to the verification URL. A simple example using Sinatra:
79
-
80
- enable :sessions
81
-
82
- get '/' do
83
- session[:request_token] = Etsy.request_token.token
84
- session[:request_secret] = Etsy.request_token.secret
85
- redirect Etsy.verification_url
86
- end
87
-
88
- get '/authorize' do
89
- access_token = Etsy.access_token(
90
- session[:request_token],
91
- session[:request_secret],
92
- params[:oauth_verifier]
93
- )
94
-
95
- # access_token.token and access_token.secret can now be saved for future API calls
96
- end
97
-
98
- === Users
99
-
100
- If you're starting with a user, the easiest way is to use the Etsy.user method:
101
-
102
- >> user = Etsy.user('littletjane')
103
- => #<Etsy::User:0x107f82c @result=[{"city"=>"Washington, DC", ... >
104
- >> user.username
105
- => "littletjane"
106
- >> user.id
107
- => 5327518
108
-
109
- For more information about what is available for a user, check out the documentation
110
- for Etsy::User.
111
-
112
- == Shops
113
-
114
- Each user may optionally have a shop. If a user is a seller, he / she also has an
115
- associated shop object:
116
-
117
- >> shop = user.shop
118
- => #<Etsy::Shop:0x102578c @result={"is_vacation"=>"", "announcement"=> ... >
119
- >> shop.name
120
- => "littletjane"
121
- >> shop.title
122
- => "a cute and crafty mix of handmade goods."
123
-
124
- More information about shops can be found in the documentation for Etsy::Shop.
125
-
126
- == Listings
127
-
128
- Shops contain multiple listings:
129
-
130
- >> shop.listings
131
- => [#<Etsy::Listing:0x119acac @result={} ...>, ... ]
132
- >> listing = shop.listings.first
133
- => #<Etsy::Listing:0x19a981c @result={} ... >
134
- >> listing.title
135
- => "hanging with the bad boys matchbox"
136
- >> listing.description
137
- => "standard size matchbox, approx. 1.5 x 2 inches ..."
138
- >> listing.url
139
- => "http://www.etsy.com/view_listing.php?listing_id=24165902"
140
- >> listing.view_count
141
- => 19
142
- >> listing.created_at
143
- => Sat Apr 25 11:31:34 -0400 2009
144
-
145
- See the documentation for Etsy::Listing for more information.
146
-
147
- == Images
148
-
149
- Each listing has one or more images available:
150
-
151
- >> listing.images
152
- => [#<Etsy::Image:0x18f85e4 @result={} ... >,
153
- #<Etsy::Image:0x18f85d0 @result={} ... >]
154
- >> listing.images.first.square
155
- => "http://ny-image0.etsy.com/il_75x75.189111072.jpg"
156
- >> listing.images.first.full
157
- => "http://ny-image0.etsy.com/il_fullxfull.189111072.jpg"
158
-
159
- Listings also have a primary image:
160
-
161
- >> listing.image
162
- => #<Etsy::Image:0x18c3060 @result={} ... >
163
- >> listing.image.full
164
- => "http://ny-image0.etsy.com/il_fullxfull.189111072.jpg"
165
-
166
- More information is available in the documentation for Etsy::Image.
167
-
168
- == Contributing
169
-
170
- I have a "commit bit" policy for contributions to this repository. Once I accept
171
- your patch, I will give you full commit access. To submit patches:
172
-
173
- 1. Fork this repository
174
- 2. Implement the desired feature with tests (and documentation if necessary)
175
- 3. Send me a pull request
176
-
177
- I ask that you not submit patches that include changes to the version or gemspec.
178
-
179
- == Contributors
180
-
181
- These people have helped make the Etsy gem what it is today:
182
-
183
- * {Katrina Owen}[http://github.com/kowen]
184
-
185
- == License
186
-
187
- Copyright (c) 2009 - 2010 Patrick Reagan (reaganpr@gmail.com)
188
-
189
- Permission is hereby granted, free of charge, to any person
190
- obtaining a copy of this software and associated documentation
191
- files (the "Software"), to deal in the Software without
192
- restriction, including without limitation the rights to use,
193
- copy, modify, merge, publish, distribute, sublicense, and/or sell
194
- copies of the Software, and to permit persons to whom the
195
- Software is furnished to do so, subject to the following
196
- conditions:
197
-
198
- The above copyright notice and this permission notice shall be
199
- included in all copies or substantial portions of the Software.
200
-
201
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
202
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
203
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
204
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
205
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
206
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
207
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
208
- OTHER DEALINGS IN THE SOFTWARE.