evernote 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Chris Sepic
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,10 @@
1
+ # evernote #
2
+ This gem is a high level wrapper around Evernote's Thrift-generated ruby code. It currently just bundles up Evernote's thrift-generated code. After installing, just require the gem in your project:
3
+
4
+ require 'evernote'
5
+
6
+ # future releases #
7
+ This gem will eventually provide a cleaner API around the generated code, so you don't feel like you're writing Java.
8
+
9
+ ## Copyright ##
10
+ Copyright (c) 2010 Chris Sepic. See LICENSE for details.
@@ -0,0 +1,46 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "evernote"
8
+ gem.summary = %Q{High level wrapper for the Evernote API}
9
+ gem.email = "chris.sepic@gmail.com"
10
+ gem.homepage = "http://github.com/cgs/evernote"
11
+ gem.authors = ["Chris Sepic"]
12
+ gem.files.include %w{vendor/**/*}
13
+ gem.add_dependency("thrift_client")
14
+ gem.add_development_dependency "rspec"
15
+ gem.add_development_dependency "yard"
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ Jeweler::GemcutterTasks.new
19
+ rescue LoadError
20
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
21
+ end
22
+
23
+ require 'spec/rake/spectask'
24
+ Spec::Rake::SpecTask.new(:spec) do |spec|
25
+ spec.libs << 'lib' << 'spec'
26
+ spec.spec_files = FileList['spec/**/*_spec.rb']
27
+ end
28
+
29
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
30
+ spec.libs << 'lib' << 'spec'
31
+ spec.pattern = 'spec/**/*_spec.rb'
32
+ spec.rcov = true
33
+ end
34
+
35
+ task :spec => :check_dependencies
36
+
37
+ task :default => :spec
38
+
39
+ begin
40
+ require 'yard'
41
+ YARD::Rake::YardocTask.new
42
+ rescue LoadError
43
+ task :yardoc do
44
+ abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
45
+ end
46
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,83 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{evernote}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Chris Sepic"]
12
+ s.date = %q{2010-01-30}
13
+ s.email = %q{chris.sepic@gmail.com}
14
+ s.extra_rdoc_files = [
15
+ "LICENSE",
16
+ "README.mkd"
17
+ ]
18
+ s.files = [
19
+ ".document",
20
+ ".gitignore",
21
+ "LICENSE",
22
+ "README.mkd",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "evernote.gemspec",
26
+ "lib/evernote.rb",
27
+ "spec/evernote_spec.rb",
28
+ "spec/spec.opts",
29
+ "spec/spec_helper.rb",
30
+ "vendor/gen-rb/evernote.rb",
31
+ "vendor/gen-rb/evernote.rb",
32
+ "vendor/gen-rb/evernote/edam/errors_types.rb",
33
+ "vendor/gen-rb/evernote/edam/errors_types.rb",
34
+ "vendor/gen-rb/evernote/edam/limits_constants.rb",
35
+ "vendor/gen-rb/evernote/edam/limits_constants.rb",
36
+ "vendor/gen-rb/evernote/edam/limits_types.rb",
37
+ "vendor/gen-rb/evernote/edam/limits_types.rb",
38
+ "vendor/gen-rb/evernote/edam/note_store.rb",
39
+ "vendor/gen-rb/evernote/edam/note_store.rb",
40
+ "vendor/gen-rb/evernote/edam/note_store_constants.rb",
41
+ "vendor/gen-rb/evernote/edam/note_store_constants.rb",
42
+ "vendor/gen-rb/evernote/edam/note_store_types.rb",
43
+ "vendor/gen-rb/evernote/edam/note_store_types.rb",
44
+ "vendor/gen-rb/evernote/edam/types_constants.rb",
45
+ "vendor/gen-rb/evernote/edam/types_constants.rb",
46
+ "vendor/gen-rb/evernote/edam/types_types.rb",
47
+ "vendor/gen-rb/evernote/edam/types_types.rb",
48
+ "vendor/gen-rb/evernote/edam/user_store.rb",
49
+ "vendor/gen-rb/evernote/edam/user_store.rb",
50
+ "vendor/gen-rb/evernote/edam/user_store_constants.rb",
51
+ "vendor/gen-rb/evernote/edam/user_store_constants.rb",
52
+ "vendor/gen-rb/evernote/edam/user_store_types.rb",
53
+ "vendor/gen-rb/evernote/edam/user_store_types.rb"
54
+ ]
55
+ s.homepage = %q{http://github.com/cgs/evernote}
56
+ s.rdoc_options = ["--charset=UTF-8"]
57
+ s.require_paths = ["lib"]
58
+ s.rubygems_version = %q{1.3.5}
59
+ s.summary = %q{High level wrapper for the Evernote API}
60
+ s.test_files = [
61
+ "spec/evernote_spec.rb",
62
+ "spec/spec_helper.rb"
63
+ ]
64
+
65
+ if s.respond_to? :specification_version then
66
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
67
+ s.specification_version = 3
68
+
69
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
70
+ s.add_runtime_dependency(%q<thrift_client>, [">= 0"])
71
+ s.add_development_dependency(%q<rspec>, [">= 0"])
72
+ s.add_development_dependency(%q<yard>, [">= 0"])
73
+ else
74
+ s.add_dependency(%q<thrift_client>, [">= 0"])
75
+ s.add_dependency(%q<rspec>, [">= 0"])
76
+ s.add_dependency(%q<yard>, [">= 0"])
77
+ end
78
+ else
79
+ s.add_dependency(%q<thrift_client>, [">= 0"])
80
+ s.add_dependency(%q<rspec>, [">= 0"])
81
+ s.add_dependency(%q<yard>, [">= 0"])
82
+ end
83
+ end
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'thrift_client'
3
+
4
+ gen_rb_path = File.expand_path(File.dirname(__FILE__) + "/../vendor/gen-rb")
5
+ $LOAD_PATH.unshift gen_rb_path
6
+ $LOAD_PATH.unshift "#{gen_rb_path}/evernote/edam"
7
+ require "#{gen_rb_path}/evernote"
@@ -0,0 +1,7 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Evernote" do
4
+ it "fails" do
5
+ fail "hey buddy, you should probably rename this file and start specing for real"
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --diff
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'evernote'
4
+ require 'spec'
5
+ require 'spec/autorun'
6
+
7
+ Spec::Runner.configure do |config|
8
+
9
+ end
@@ -0,0 +1,12 @@
1
+ require 'set'
2
+ require 'errors_types'
3
+ require 'limits_constants'
4
+ require 'limits_types'
5
+ require 'note_store'
6
+ require 'note_store_constants'
7
+ require 'note_store_types'
8
+ require 'types_constants'
9
+ require 'types_types'
10
+ require 'user_store'
11
+ require 'user_store_constants'
12
+ require 'user_store_types'
@@ -0,0 +1,123 @@
1
+ #
2
+ # Autogenerated by Thrift
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+
8
+ module Evernote
9
+ module EDAM
10
+ module Error
11
+ module EDAMErrorCode
12
+ UNKNOWN = 1
13
+ BAD_DATA_FORMAT = 2
14
+ PERMISSION_DENIED = 3
15
+ INTERNAL_ERROR = 4
16
+ DATA_REQUIRED = 5
17
+ LIMIT_REACHED = 6
18
+ QUOTA_REACHED = 7
19
+ INVALID_AUTH = 8
20
+ AUTH_EXPIRED = 9
21
+ DATA_CONFLICT = 10
22
+ ENML_VALIDATION = 11
23
+ SHARD_UNAVAILABLE = 12
24
+ VALUE_MAP = {1 => "UNKNOWN", 2 => "BAD_DATA_FORMAT", 3 => "PERMISSION_DENIED", 4 => "INTERNAL_ERROR", 5 => "DATA_REQUIRED", 6 => "LIMIT_REACHED", 7 => "QUOTA_REACHED", 8 => "INVALID_AUTH", 9 => "AUTH_EXPIRED", 10 => "DATA_CONFLICT", 11 => "ENML_VALIDATION", 12 => "SHARD_UNAVAILABLE"}
25
+ VALID_VALUES = Set.new([UNKNOWN, BAD_DATA_FORMAT, PERMISSION_DENIED, INTERNAL_ERROR, DATA_REQUIRED, LIMIT_REACHED, QUOTA_REACHED, INVALID_AUTH, AUTH_EXPIRED, DATA_CONFLICT, ENML_VALIDATION, SHARD_UNAVAILABLE]).freeze
26
+ end
27
+
28
+ # This exception is thrown by EDAM procedures when a call fails as a result of
29
+ # a problem that a user may be able to resolve. For example, if the user
30
+ # attempts to add a note to their account which would exceed their storage
31
+ # quota, this type of exception may be thrown to indicate the source of the
32
+ # error so that they can choose an alternate action.
33
+ #
34
+ # This exception would not be used for internal system errors that do not
35
+ # reflect user actions, but rather reflect a problem within the service that
36
+ # the user cannot resolve.
37
+ #
38
+ # errorCode: The numeric code indicating the type of error that occurred.
39
+ # must be one of the values of EDAMErrorCode.
40
+ #
41
+ # parameter: If the error applied to a particular input parameter, this will
42
+ # indicate which parameter.
43
+ class EDAMUserException < ::Thrift::Exception
44
+ include ::Thrift::Struct
45
+ ERRORCODE = 1
46
+ PARAMETER = 2
47
+
48
+ ::Thrift::Struct.field_accessor self, :errorCode, :parameter
49
+ FIELDS = {
50
+ ERRORCODE => {:type => ::Thrift::Types::I32, :name => 'errorCode', :enum_class => Evernote::EDAM::Error::EDAMErrorCode},
51
+ PARAMETER => {:type => ::Thrift::Types::STRING, :name => 'parameter', :optional => true}
52
+ }
53
+
54
+ def struct_fields; FIELDS; end
55
+
56
+ def validate
57
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field errorCode is unset!') unless @errorCode
58
+ unless @errorCode.nil? || Evernote::EDAM::Error::EDAMErrorCode::VALID_VALUES.include?(@errorCode)
59
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field errorCode!')
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+ # This exception is thrown by EDAM procedures when a call fails as a result of
66
+ # an a problem in the service that could not be changed through user action.
67
+ #
68
+ # errorCode: The numeric code indicating the type of error that occurred.
69
+ # must be one of the values of EDAMErrorCode.
70
+ #
71
+ # message: This may contain additional information about the error
72
+ class EDAMSystemException < ::Thrift::Exception
73
+ include ::Thrift::Struct
74
+ ERRORCODE = 1
75
+ MESSAGE = 2
76
+
77
+ ::Thrift::Struct.field_accessor self, :errorCode, :message
78
+ FIELDS = {
79
+ ERRORCODE => {:type => ::Thrift::Types::I32, :name => 'errorCode', :enum_class => Evernote::EDAM::Error::EDAMErrorCode},
80
+ MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message', :optional => true}
81
+ }
82
+
83
+ def struct_fields; FIELDS; end
84
+
85
+ def validate
86
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field errorCode is unset!') unless @errorCode
87
+ unless @errorCode.nil? || Evernote::EDAM::Error::EDAMErrorCode::VALID_VALUES.include?(@errorCode)
88
+ raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field errorCode!')
89
+ end
90
+ end
91
+
92
+ end
93
+
94
+ # This exception is thrown by EDAM procedures when a caller asks to perform
95
+ # an operation that does not exist. This may be thrown based on an invalid
96
+ # primary identifier (e.g. a bad GUID), or when the caller refers to an object
97
+ # by another unique identifier (e.g. a User's email address).
98
+ #
99
+ # identifier: the object identifier that was not found on the server.
100
+ #
101
+ # key: the value passed from the client in the identifier, which was not
102
+ # found. E.g. the GUID of an object that was not found.
103
+ class EDAMNotFoundException < ::Thrift::Exception
104
+ include ::Thrift::Struct
105
+ IDENTIFIER = 1
106
+ KEY = 2
107
+
108
+ ::Thrift::Struct.field_accessor self, :identifier, :key
109
+ FIELDS = {
110
+ IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'identifier', :optional => true},
111
+ KEY => {:type => ::Thrift::Types::STRING, :name => 'key', :optional => true}
112
+ }
113
+
114
+ def struct_fields; FIELDS; end
115
+
116
+ def validate
117
+ end
118
+
119
+ end
120
+
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,187 @@
1
+ #
2
+ # Autogenerated by Thrift
3
+ #
4
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
+ #
6
+
7
+ require 'limits_types'
8
+
9
+ module Evernote
10
+ module EDAM
11
+ module Limits
12
+ EDAM_ATTRIBUTE_LEN_MIN = 1
13
+
14
+ EDAM_ATTRIBUTE_LEN_MAX = 4096
15
+
16
+ EDAM_ATTRIBUTE_REGEX = %q"^[^\\p{Cc}\\p{Zl}\\p{Zp}]{1,4096}$"
17
+
18
+ EDAM_ATTRIBUTE_LIST_MAX = 100
19
+
20
+ EDAM_GUID_LEN_MIN = 36
21
+
22
+ EDAM_GUID_LEN_MAX = 36
23
+
24
+ EDAM_GUID_REGEX = %q"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
25
+
26
+ EDAM_EMAIL_LEN_MIN = 6
27
+
28
+ EDAM_EMAIL_LEN_MAX = 255
29
+
30
+ EDAM_EMAIL_LOCAL_REGEX = %q"^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*$"
31
+
32
+ EDAM_EMAIL_DOMAIN_REGEX = %q"^[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*\\.([A-Za-z]{2,})$"
33
+
34
+ EDAM_EMAIL_REGEX = %q"^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*\\.([A-Za-z]{2,})$"
35
+
36
+ EDAM_TIMEZONE_LEN_MIN = 1
37
+
38
+ EDAM_TIMEZONE_LEN_MAX = 32
39
+
40
+ EDAM_TIMEZONE_REGEX = %q"^([A-Za-z_-]+(/[A-Za-z_-]+)*)|(GMT(-|\\+)[0-9]{1,2}(:[0-9]{2})?)$"
41
+
42
+ EDAM_MIME_LEN_MIN = 3
43
+
44
+ EDAM_MIME_LEN_MAX = 255
45
+
46
+ EDAM_MIME_REGEX = %q"^[A-Za-z]+/[A-Za-z0-9._+-]+$"
47
+
48
+ EDAM_MIME_TYPE_GIF = %q"image/gif"
49
+
50
+ EDAM_MIME_TYPE_JPEG = %q"image/jpeg"
51
+
52
+ EDAM_MIME_TYPE_PNG = %q"image/png"
53
+
54
+ EDAM_MIME_TYPE_WAV = %q"audio/wav"
55
+
56
+ EDAM_MIME_TYPE_MP3 = %q"audio/mpeg"
57
+
58
+ EDAM_MIME_TYPE_AMR = %q"audio/amr"
59
+
60
+ EDAM_MIME_TYPE_INK = %q"application/vnd.evernote.ink"
61
+
62
+ EDAM_MIME_TYPE_PDF = %q"application/pdf"
63
+
64
+ EDAM_MIME_TYPE_DEFAULT = %q"application/octet-stream"
65
+
66
+ EDAM_MIME_TYPES = Set.new([
67
+ %q"image/gif",
68
+ %q"image/jpeg",
69
+ %q"image/png",
70
+ %q"audio/wav",
71
+ %q"audio/mpeg",
72
+ %q"audio/amr",
73
+ %q"application/vnd.evernote.ink",
74
+ %q"application/pdf",
75
+ ])
76
+
77
+ EDAM_COMMERCE_SERVICE_GOOGLE = %q"Google"
78
+
79
+ EDAM_COMMERCE_SERVICE_PAYPAL = %q"Paypal"
80
+
81
+ EDAM_COMMERCE_SERVICE_GIFT = %q"Gift"
82
+
83
+ EDAM_COMMERCE_SERVICE_TRIALPAY = %q"TrialPay"
84
+
85
+ EDAM_SEARCH_QUERY_LEN_MIN = 0
86
+
87
+ EDAM_SEARCH_QUERY_LEN_MAX = 1024
88
+
89
+ EDAM_SEARCH_QUERY_REGEX = %q"^[^\\p{Cc}\\p{Zl}\\p{Zp}]{0,1024}$"
90
+
91
+ EDAM_HASH_LEN = 16
92
+
93
+ EDAM_USER_USERNAME_LEN_MIN = 1
94
+
95
+ EDAM_USER_USERNAME_LEN_MAX = 64
96
+
97
+ EDAM_USER_USERNAME_REGEX = %q"^[a-z0-9]([a-z0-9_-]{0,62}[a-z0-9])?$"
98
+
99
+ EDAM_USER_NAME_LEN_MIN = 1
100
+
101
+ EDAM_USER_NAME_LEN_MAX = 255
102
+
103
+ EDAM_USER_NAME_REGEX = %q"^[^\\p{Cc}\\p{Zl}\\p{Zp}]{1,255}$"
104
+
105
+ EDAM_TAG_NAME_LEN_MIN = 1
106
+
107
+ EDAM_TAG_NAME_LEN_MAX = 100
108
+
109
+ EDAM_TAG_NAME_REGEX = %q"^[^,\\p{Cc}\\p{Z}]([^,\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^,\\p{Cc}\\p{Z}])?$"
110
+
111
+ EDAM_NOTE_TITLE_LEN_MIN = 1
112
+
113
+ EDAM_NOTE_TITLE_LEN_MAX = 255
114
+
115
+ EDAM_NOTE_TITLE_REGEX = %q"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,253}[^\\p{Cc}\\p{Z}])?$"
116
+
117
+ EDAM_NOTE_CONTENT_LEN_MIN = 0
118
+
119
+ EDAM_NOTE_CONTENT_LEN_MAX = 5242880
120
+
121
+ EDAM_NOTEBOOK_NAME_LEN_MIN = 1
122
+
123
+ EDAM_NOTEBOOK_NAME_LEN_MAX = 100
124
+
125
+ EDAM_NOTEBOOK_NAME_REGEX = %q"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^\\p{Cc}\\p{Z}])?$"
126
+
127
+ EDAM_PUBLISHING_URI_LEN_MIN = 1
128
+
129
+ EDAM_PUBLISHING_URI_LEN_MAX = 255
130
+
131
+ EDAM_PUBLISHING_URI_REGEX = %q"^[a-zA-Z0-9.~_+-]{1,255}$"
132
+
133
+ EDAM_PUBLISHING_URI_PROHIBITED = Set.new([
134
+ %q"..",
135
+ ])
136
+
137
+ EDAM_PUBLISHING_DESCRIPTION_LEN_MIN = 1
138
+
139
+ EDAM_PUBLISHING_DESCRIPTION_LEN_MAX = 200
140
+
141
+ EDAM_PUBLISHING_DESCRIPTION_REGEX = %q"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,198}[^\\p{Cc}\\p{Z}])?$"
142
+
143
+ EDAM_SAVED_SEARCH_NAME_LEN_MIN = 1
144
+
145
+ EDAM_SAVED_SEARCH_NAME_LEN_MAX = 100
146
+
147
+ EDAM_SAVED_SEARCH_NAME_REGEX = %q"^[^\\p{Cc}\\p{Z}]([^\\p{Cc}\\p{Zl}\\p{Zp}]{0,98}[^\\p{Cc}\\p{Z}])?$"
148
+
149
+ EDAM_USER_PASSWORD_LEN_MIN = 6
150
+
151
+ EDAM_USER_PASSWORD_LEN_MAX = 64
152
+
153
+ EDAM_USER_PASSWORD_REGEX = %q"^[A-Za-z0-9!#$%&'()*+,./:;<=>?@^_`{|}~\\[\\]\\\\-]{6,64}$"
154
+
155
+ EDAM_NOTE_TAGS_MAX = 100
156
+
157
+ EDAM_NOTE_RESOURCES_MAX = 1000
158
+
159
+ EDAM_USER_TAGS_MAX = 100000
160
+
161
+ EDAM_USER_SAVED_SEARCHES_MAX = 100
162
+
163
+ EDAM_USER_NOTES_MAX = 100000
164
+
165
+ EDAM_USER_NOTEBOOKS_MAX = 100
166
+
167
+ EDAM_USER_RECENT_MAILED_ADDRESSES_MAX = 10
168
+
169
+ EDAM_USER_MAIL_LIMIT_DAILY_FREE = 50
170
+
171
+ EDAM_USER_MAIL_LIMIT_DAILY_PREMIUM = 200
172
+
173
+ EDAM_NOTE_SIZE_MAX_FREE = 26214400
174
+
175
+ EDAM_NOTE_SIZE_MAX_PREMIUM = 52428800
176
+
177
+ EDAM_RESOURCE_SIZE_MAX_FREE = 26214400
178
+
179
+ EDAM_RESOURCE_SIZE_MAX_PREMIUM = 52428800
180
+
181
+ EDAM_USER_LINKED_NOTEBOOK_MAX = 100
182
+
183
+ EDAM_NOTEBOOK_SHARED_NOTEBOOK_MAX = 100
184
+
185
+ end
186
+ end
187
+ end