evernote-thrift 1.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/APACHE-LICENSE-2.0.txt +202 -0
  2. data/LICENSE +27 -0
  3. data/NOTICE +5 -0
  4. data/README.md +44 -0
  5. data/evernote-thrift.gemspec +28 -0
  6. data/lib/Evernote/EDAM/errors_constants.rb +14 -0
  7. data/lib/Evernote/EDAM/errors_types.rb +128 -0
  8. data/lib/Evernote/EDAM/limits_constants.rb +252 -0
  9. data/lib/Evernote/EDAM/limits_types.rb +13 -0
  10. data/lib/Evernote/EDAM/note_store.rb +5562 -0
  11. data/lib/Evernote/EDAM/note_store_constants.rb +14 -0
  12. data/lib/Evernote/EDAM/note_store_types.rb +1127 -0
  13. data/lib/Evernote/EDAM/types_constants.rb +20 -0
  14. data/lib/Evernote/EDAM/types_types.rb +1792 -0
  15. data/lib/Evernote/EDAM/user_store.rb +549 -0
  16. data/lib/Evernote/EDAM/user_store_constants.rb +18 -0
  17. data/lib/Evernote/EDAM/user_store_types.rb +417 -0
  18. data/lib/evernote-thrift.rb +39 -0
  19. data/lib/thrift.rb +64 -0
  20. data/lib/thrift/client.rb +62 -0
  21. data/lib/thrift/core_ext.rb +23 -0
  22. data/lib/thrift/core_ext/fixnum.rb +29 -0
  23. data/lib/thrift/exceptions.rb +84 -0
  24. data/lib/thrift/processor.rb +57 -0
  25. data/lib/thrift/protocol/base_protocol.rb +290 -0
  26. data/lib/thrift/protocol/binary_protocol.rb +229 -0
  27. data/lib/thrift/protocol/binary_protocol_accelerated.rb +39 -0
  28. data/lib/thrift/protocol/compact_protocol.rb +426 -0
  29. data/lib/thrift/serializer/deserializer.rb +33 -0
  30. data/lib/thrift/serializer/serializer.rb +34 -0
  31. data/lib/thrift/server/base_server.rb +31 -0
  32. data/lib/thrift/server/mongrel_http_server.rb +58 -0
  33. data/lib/thrift/server/nonblocking_server.rb +305 -0
  34. data/lib/thrift/server/simple_server.rb +43 -0
  35. data/lib/thrift/server/thread_pool_server.rb +75 -0
  36. data/lib/thrift/server/threaded_server.rb +47 -0
  37. data/lib/thrift/struct.rb +237 -0
  38. data/lib/thrift/struct_union.rb +192 -0
  39. data/lib/thrift/thrift_native.rb +24 -0
  40. data/lib/thrift/transport/base_server_transport.rb +37 -0
  41. data/lib/thrift/transport/base_transport.rb +107 -0
  42. data/lib/thrift/transport/buffered_transport.rb +108 -0
  43. data/lib/thrift/transport/framed_transport.rb +116 -0
  44. data/lib/thrift/transport/http_client_transport.rb +53 -0
  45. data/lib/thrift/transport/io_stream_transport.rb +39 -0
  46. data/lib/thrift/transport/memory_buffer_transport.rb +125 -0
  47. data/lib/thrift/transport/server_socket.rb +63 -0
  48. data/lib/thrift/transport/socket.rb +137 -0
  49. data/lib/thrift/transport/unix_server_socket.rb +60 -0
  50. data/lib/thrift/transport/unix_socket.rb +40 -0
  51. data/lib/thrift/types.rb +101 -0
  52. data/lib/thrift/union.rb +179 -0
  53. metadata +99 -0
@@ -0,0 +1,101 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ #
19
+
20
+ require 'set'
21
+
22
+ module Thrift
23
+ module Types
24
+ STOP = 0
25
+ VOID = 1
26
+ BOOL = 2
27
+ BYTE = 3
28
+ DOUBLE = 4
29
+ I16 = 6
30
+ I32 = 8
31
+ I64 = 10
32
+ STRING = 11
33
+ STRUCT = 12
34
+ MAP = 13
35
+ SET = 14
36
+ LIST = 15
37
+ end
38
+
39
+ class << self
40
+ attr_accessor :type_checking
41
+ end
42
+
43
+ class TypeError < Exception
44
+ end
45
+
46
+ def self.check_type(value, field, name, skip_nil=true)
47
+ return if value.nil? and skip_nil
48
+ klasses = case field[:type]
49
+ when Types::VOID
50
+ NilClass
51
+ when Types::BOOL
52
+ [TrueClass, FalseClass]
53
+ when Types::BYTE, Types::I16, Types::I32, Types::I64
54
+ Integer
55
+ when Types::DOUBLE
56
+ Float
57
+ when Types::STRING
58
+ String
59
+ when Types::STRUCT
60
+ [Struct, Union]
61
+ when Types::MAP
62
+ Hash
63
+ when Types::SET
64
+ Set
65
+ when Types::LIST
66
+ Array
67
+ end
68
+ valid = klasses && [*klasses].any? { |klass| klass === value }
69
+ raise TypeError, "Expected #{type_name(field[:type])}, received #{value.class} for field #{name}" unless valid
70
+ # check elements now
71
+ case field[:type]
72
+ when Types::MAP
73
+ value.each_pair do |k,v|
74
+ check_type(k, field[:key], "#{name}.key", false)
75
+ check_type(v, field[:value], "#{name}.value", false)
76
+ end
77
+ when Types::SET, Types::LIST
78
+ value.each do |el|
79
+ check_type(el, field[:element], "#{name}.element", false)
80
+ end
81
+ when Types::STRUCT
82
+ raise TypeError, "Expected #{field[:class]}, received #{value.class} for field #{name}" unless field[:class] == value.class
83
+ end
84
+ end
85
+
86
+ def self.type_name(type)
87
+ Types.constants.each do |const|
88
+ return "Types::#{const}" if Types.const_get(const) == type
89
+ end
90
+ nil
91
+ end
92
+
93
+ module MessageTypes
94
+ CALL = 1
95
+ REPLY = 2
96
+ EXCEPTION = 3
97
+ ONEWAY = 4
98
+ end
99
+ end
100
+
101
+ Thrift.type_checking = false if Thrift.type_checking.nil?
@@ -0,0 +1,179 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ #
19
+
20
+ module Thrift
21
+ class Union
22
+ def initialize(name=nil, value=nil)
23
+ if name
24
+ if name.is_a? Hash
25
+ if name.size > 1
26
+ raise "#{self.class} cannot be instantiated with more than one field!"
27
+ end
28
+
29
+ name, value = name.keys.first, name.values.first
30
+ end
31
+
32
+ if Thrift.type_checking
33
+ raise Exception, "#{self.class} does not contain a field named #{name}!" unless name_to_id(name.to_s)
34
+ end
35
+
36
+ if value.nil?
37
+ raise Exception, "Union #{self.class} cannot be instantiated with setfield and nil value!"
38
+ end
39
+
40
+ Thrift.check_type(value, struct_fields[name_to_id(name.to_s)], name) if Thrift.type_checking
41
+ elsif !value.nil?
42
+ raise Exception, "Value provided, but no name!"
43
+ end
44
+ @setfield = name
45
+ @value = value
46
+ end
47
+
48
+ def inspect
49
+ if get_set_field
50
+ "<#{self.class} #{@setfield}: #{inspect_field(@value, struct_fields[name_to_id(@setfield.to_s)])}>"
51
+ else
52
+ "<#{self.class} >"
53
+ end
54
+ end
55
+
56
+ def read(iprot)
57
+ iprot.read_struct_begin
58
+ fname, ftype, fid = iprot.read_field_begin
59
+ handle_message(iprot, fid, ftype)
60
+ iprot.read_field_end
61
+
62
+ fname, ftype, fid = iprot.read_field_begin
63
+ raise "Too many fields for union" unless (ftype == Types::STOP)
64
+
65
+ iprot.read_struct_end
66
+ validate
67
+ end
68
+
69
+ def write(oprot)
70
+ validate
71
+ oprot.write_struct_begin(self.class.name)
72
+
73
+ fid = self.name_to_id(@setfield.to_s)
74
+
75
+ field_info = struct_fields[fid]
76
+ type = field_info[:type]
77
+ if is_container? type
78
+ oprot.write_field_begin(@setfield, type, fid)
79
+ write_container(oprot, @value, field_info)
80
+ oprot.write_field_end
81
+ else
82
+ oprot.write_field(@setfield, type, fid, @value)
83
+ end
84
+
85
+ oprot.write_field_stop
86
+ oprot.write_struct_end
87
+ end
88
+
89
+ def ==(other)
90
+ other != nil && @setfield == other.get_set_field && @value == other.get_value
91
+ end
92
+
93
+ def eql?(other)
94
+ self.class == other.class && self == other
95
+ end
96
+
97
+ def hash
98
+ [self.class.name, @setfield, @value].hash
99
+ end
100
+
101
+ def self.field_accessor(klass, field_info)
102
+ klass.send :define_method, field_info[:name] do
103
+ if field_info[:name].to_sym == @setfield
104
+ @value
105
+ else
106
+ raise RuntimeError, "#{field_info[:name]} is not union's set field."
107
+ end
108
+ end
109
+
110
+ klass.send :define_method, "#{field_info[:name]}=" do |value|
111
+ Thrift.check_type(value, field_info, field_info[:name]) if Thrift.type_checking
112
+ @setfield = field_info[:name].to_sym
113
+ @value = value
114
+ end
115
+ end
116
+
117
+ def self.qmark_isset_method(klass, field_info)
118
+ klass.send :define_method, "#{field_info[:name]}?" do
119
+ get_set_field == field_info[:name].to_sym && !get_value.nil?
120
+ end
121
+ end
122
+
123
+ def self.generate_accessors(klass)
124
+ klass::FIELDS.values.each do |field_info|
125
+ field_accessor(klass, field_info)
126
+ qmark_isset_method(klass, field_info)
127
+ end
128
+ end
129
+
130
+ # get the symbol that indicates what the currently set field type is.
131
+ def get_set_field
132
+ @setfield
133
+ end
134
+
135
+ # get the current value of this union, regardless of what the set field is.
136
+ # generally, you should only use this method when you don't know in advance
137
+ # what field to expect.
138
+ def get_value
139
+ @value
140
+ end
141
+
142
+ def <=>(other)
143
+ if self.class == other.class
144
+ if get_set_field == other.get_set_field
145
+ if get_set_field.nil?
146
+ 0
147
+ else
148
+ get_value <=> other.get_value
149
+ end
150
+ else
151
+ if get_set_field && other.get_set_field.nil?
152
+ -1
153
+ elsif get_set_field.nil? && other.get_set_field
154
+ 1
155
+ elsif get_set_field.nil? && other.get_set_field.nil?
156
+ 0
157
+ else
158
+ name_to_id(get_set_field.to_s) <=> name_to_id(other.get_set_field.to_s)
159
+ end
160
+ end
161
+ else
162
+ self.class <=> other.class
163
+ end
164
+ end
165
+
166
+ protected
167
+
168
+ def handle_message(iprot, fid, ftype)
169
+ field = struct_fields[fid]
170
+ if field and field[:type] == ftype
171
+ @value = read_field(iprot, field)
172
+ name = field[:name].to_sym
173
+ @setfield = name
174
+ else
175
+ iprot.skip(ftype)
176
+ end
177
+ end
178
+ end
179
+ end
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evernote-thrift
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.22.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Evernote
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-11 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: This SDK contains wrapper code used to call the Evernote Cloud API from
15
+ Ruby.
16
+ email: api@evernote.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - LICENSE
22
+ - NOTICE
23
+ - README.md
24
+ - APACHE-LICENSE-2.0.txt
25
+ - evernote-thrift.gemspec
26
+ - lib/Evernote/EDAM/errors_constants.rb
27
+ - lib/Evernote/EDAM/errors_types.rb
28
+ - lib/Evernote/EDAM/limits_constants.rb
29
+ - lib/Evernote/EDAM/limits_types.rb
30
+ - lib/Evernote/EDAM/note_store.rb
31
+ - lib/Evernote/EDAM/note_store_constants.rb
32
+ - lib/Evernote/EDAM/note_store_types.rb
33
+ - lib/Evernote/EDAM/types_constants.rb
34
+ - lib/Evernote/EDAM/types_types.rb
35
+ - lib/Evernote/EDAM/user_store.rb
36
+ - lib/Evernote/EDAM/user_store_constants.rb
37
+ - lib/Evernote/EDAM/user_store_types.rb
38
+ - lib/evernote-thrift.rb
39
+ - lib/thrift/client.rb
40
+ - lib/thrift/core_ext/fixnum.rb
41
+ - lib/thrift/core_ext.rb
42
+ - lib/thrift/exceptions.rb
43
+ - lib/thrift/processor.rb
44
+ - lib/thrift/protocol/base_protocol.rb
45
+ - lib/thrift/protocol/binary_protocol.rb
46
+ - lib/thrift/protocol/binary_protocol_accelerated.rb
47
+ - lib/thrift/protocol/compact_protocol.rb
48
+ - lib/thrift/serializer/deserializer.rb
49
+ - lib/thrift/serializer/serializer.rb
50
+ - lib/thrift/server/base_server.rb
51
+ - lib/thrift/server/mongrel_http_server.rb
52
+ - lib/thrift/server/nonblocking_server.rb
53
+ - lib/thrift/server/simple_server.rb
54
+ - lib/thrift/server/thread_pool_server.rb
55
+ - lib/thrift/server/threaded_server.rb
56
+ - lib/thrift/struct.rb
57
+ - lib/thrift/struct_union.rb
58
+ - lib/thrift/thrift_native.rb
59
+ - lib/thrift/transport/base_server_transport.rb
60
+ - lib/thrift/transport/base_transport.rb
61
+ - lib/thrift/transport/buffered_transport.rb
62
+ - lib/thrift/transport/framed_transport.rb
63
+ - lib/thrift/transport/http_client_transport.rb
64
+ - lib/thrift/transport/io_stream_transport.rb
65
+ - lib/thrift/transport/memory_buffer_transport.rb
66
+ - lib/thrift/transport/server_socket.rb
67
+ - lib/thrift/transport/socket.rb
68
+ - lib/thrift/transport/unix_server_socket.rb
69
+ - lib/thrift/transport/unix_socket.rb
70
+ - lib/thrift/types.rb
71
+ - lib/thrift/union.rb
72
+ - lib/thrift.rb
73
+ homepage: http://github.com/evernote/evernote-sdk-ruby
74
+ licenses: []
75
+ post_install_message:
76
+ rdoc_options:
77
+ - --inline-source
78
+ - --charset=UTF-8
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project: evernote-sdk-ruby
95
+ rubygems_version: 1.8.24
96
+ signing_key:
97
+ specification_version: 3
98
+ summary: This SDK contains wrapper code used to call the Evernote Cloud API from Ruby.
99
+ test_files: []