rpcoder 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,139 @@
1
+ /* generated by rpcoder */
2
+
3
+ package foo.bar
4
+ {
5
+ import mx.rpc.AsyncResponder;
6
+ import mx.rpc.AsyncToken;
7
+ import mx.rpc.events.ResultEvent;
8
+ import mx.rpc.events.FaultEvent;
9
+ import mx.rpc.http.HTTPService;
10
+ import com.adobe.serialization.json.JSON;
11
+
12
+ public class API
13
+ {
14
+ public static const CONTINUE :int = 100;
15
+ public static const SWITCHING_PROTOCOLS :int = 101;
16
+ public static const PROCESSING :int = 102;
17
+ public static const OK :int = 200;
18
+ public static const CREATED :int = 201;
19
+ public static const ACCEPTED :int = 202;
20
+ public static const NON_AUTHORITATIVE_INFORMATION :int = 203;
21
+ public static const NO_CONTENT :int = 204;
22
+ public static const RESET_CONTENT :int = 205;
23
+ public static const PARTIAL_CONTENT :int = 206;
24
+ public static const MULTI_STATUS :int = 207;
25
+ public static const IM_USED :int = 226;
26
+ public static const MULTIPLE_CHOICES :int = 300;
27
+ public static const MOVED_PERMANENTLY :int = 301;
28
+ public static const FOUND :int = 302;
29
+ public static const SEE_OTHER :int = 303;
30
+ public static const NOT_MODIFIED :int = 304;
31
+ public static const USE_PROXY :int = 305;
32
+ public static const RESERVED :int = 306;
33
+ public static const TEMPORARY_REDIRECT :int = 307;
34
+ public static const BAD_REQUEST :int = 400;
35
+ public static const UNAUTHORIZED :int = 401;
36
+ public static const PAYMENT_REQUIRED :int = 402;
37
+ public static const FORBIDDEN :int = 403;
38
+ public static const NOT_FOUND :int = 404;
39
+ public static const METHOD_NOT_ALLOWED :int = 405;
40
+ public static const NOT_ACCEPTABLE :int = 406;
41
+ public static const PROXY_AUTHENTICATION_REQUIRED :int = 407;
42
+ public static const REQUEST_TIMEOUT :int = 408;
43
+ public static const CONFLICT :int = 409;
44
+ public static const GONE :int = 410;
45
+ public static const LENGTH_REQUIRED :int = 411;
46
+ public static const PRECONDITION_FAILED :int = 412;
47
+ public static const REQUEST_ENTITY_TOO_LARGE :int = 413;
48
+ public static const REQUEST_URI_TOO_LONG :int = 414;
49
+ public static const UNSUPPORTED_MEDIA_TYPE :int = 415;
50
+ public static const REQUESTED_RANGE_NOT_SATISFIABLE :int = 416;
51
+ public static const EXPECTATION_FAILED :int = 417;
52
+ public static const UNPROCESSABLE_ENTITY :int = 422;
53
+ public static const LOCKED :int = 423;
54
+ public static const FAILED_DEPENDENCY :int = 424;
55
+ public static const UPGRADE_REQUIRED :int = 426;
56
+ public static const INTERNAL_SERVER_ERROR :int = 500;
57
+ public static const NOT_IMPLEMENTED :int = 501;
58
+ public static const BAD_GATEWAY :int = 502;
59
+ public static const SERVICE_UNAVAILABLE :int = 503;
60
+ public static const GATEWAY_TIMEOUT :int = 504;
61
+ public static const HTTP_VERSION_NOT_SUPPORTED :int = 505;
62
+ public static const VARIANT_ALSO_NEGOTIATES :int = 506;
63
+ public static const INSUFFICIENT_STORAGE :int = 507;
64
+ public static const NOT_EXTENDED :int = 510;
65
+
66
+ private var _baseUrl:String;
67
+ private var _errorHandler : Function;
68
+
69
+ public function API(baseUrl:String)
70
+ {
71
+ this._baseUrl = baseUrl;
72
+ }
73
+
74
+ public function get baseUrl():String
75
+ {
76
+ return this._baseUrl;
77
+ }
78
+
79
+ public function set errorHandler(handler : Function):void
80
+ {
81
+ this._errorHandler = handler;
82
+ }
83
+
84
+ public function get errorHandler():Function
85
+ {
86
+ return this._errorHandler;
87
+ }
88
+
89
+ /**
90
+ * get mail
91
+ *
92
+ * @id:int
93
+ * @foo:String ["A", "B"]
94
+ * @bar:Array
95
+ * @baz:Boolean 日本の文字
96
+ * @success:Function
97
+ * @error:Function
98
+ */
99
+ public function getMail(id:int, foo:String, bar:Array, baz:Boolean, success:Function, error:Function):void
100
+ {
101
+ var params:Object = {"foo":foo, "bar":bar, "baz":baz};
102
+ request("GET", "/mails/" + id, params,
103
+ function(e:ResultEvent, t:Object):void {
104
+ t = t; // FIXME: for removing warning
105
+ success(new Mail(JSON.decode(e.result as String)));
106
+ },
107
+ function(e:FaultEvent, t:Object):void {
108
+ t = t; // FIXME: for removing warning
109
+ error(e);
110
+ }
111
+ );
112
+ }
113
+
114
+ public function request(method:String, path:String, params:Object, success:Function, error:Function):void
115
+ {
116
+ var service:HTTPService = createHttpService(this.baseUrl);
117
+ service.method = method;
118
+ service.url = path;
119
+ service.request = params;
120
+ service.resultFormat = 'text';
121
+ var token:AsyncToken = service.send();
122
+ token.addResponder(new AsyncResponder(
123
+ success,
124
+ function(e:FaultEvent, t:Object):void {
125
+ if (_errorHandler !== null && e.statusCode >= 500) {
126
+ _errorHandler(e, t);
127
+ } else {
128
+ error(e, t);
129
+ }
130
+ }
131
+ ));
132
+ }
133
+
134
+ public function createHttpService(baseUrl:String) : HTTPService
135
+ {
136
+ return new HTTPService(baseUrl);
137
+ }
138
+ }
139
+ }
@@ -0,0 +1,34 @@
1
+ /* generated by rpcoder */
2
+
3
+ package foo.bar
4
+ {
5
+ public class Mail
6
+ {
7
+ private var _subject:String;
8
+ private var _body:String;
9
+
10
+ public function get subject():String
11
+ {
12
+ return _subject;
13
+ }
14
+
15
+ public function get body():String
16
+ {
17
+ return _body;
18
+ }
19
+
20
+ public function Mail(object:Object = null)
21
+ {
22
+ if (object)
23
+ {
24
+ _subject = object['subject'];
25
+ _body = object['body'];
26
+ }
27
+ }
28
+
29
+ public function toString():String
30
+ {
31
+ return [_subject, _body].join(', ');
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+
3
+ module RPCoder
4
+ describe "Function" do
5
+ context do
6
+ before do
7
+ @function = Function.new
8
+ @function.name = "getMail"
9
+ @function.description = "get a mail"
10
+ @function.path = "/mails/:id" # => ("/mails/" + id)
11
+ @function.method = "GET"
12
+ @function.return_type = "Mail"
13
+ @function.add_param :id, :integer
14
+ @function.add_param :foo, :string, :expect => ["A","B"]
15
+ @function.add_param :bar, :array
16
+ @function.add_param :baz, :boolean, :decription => "日本の文字"
17
+ end
18
+
19
+ {
20
+ '/mail/:id' => ['"/mail/"', 'id'],
21
+ '/mail/:id/foo' => ['"/mail/"', 'id', '"/foo"'],
22
+ '/mail/:mail_id/foo/:id' => ['"/mail/"', 'mail_id', '"/foo/"', 'id'],
23
+ '/mail/:foo/:bar' => ['"/mail/"', 'foo', '"/"', 'bar'],
24
+ }.each do |path, path_parts|
25
+ it "path が #{path} のとき path_parts が #{path_parts.inspect}" do
26
+ @function.path = path
27
+ @function.path_parts.should == path_parts
28
+ end
29
+ end
30
+
31
+ {
32
+ '/mail/:id' => [:foo, :bar, :baz],
33
+ '/mail/:foo/:id' => [:bar, :baz],
34
+ }.each do |path, query_params|
35
+ it "path が #{path} のとき query_params が #{query_params.inspect}" do
36
+ @function.path = path
37
+ @function.query_params.map { |i| i.name }.sort.should == query_params.sort
38
+ end
39
+ end
40
+
41
+ [
42
+ 'foo/bar',
43
+ ':foo/bar',
44
+ ].each do |path|
45
+ it "path が #{path} のとき invalid" do
46
+ @function.path = path
47
+ lambda { @function.path_parts }.should raise_error
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
4
+
5
+ describe "RPCoder" do
6
+ context do
7
+ before do
8
+ RPCoder.clear
9
+ RPCoder.name_space = 'foo.bar'
10
+ RPCoder.api_class_name = 'API'
11
+ RPCoder.function "getMail" do |f|
12
+ f.path = "/mails/:id" # => ("/mails/" + id)
13
+ f.description = 'get mail'
14
+ f.method = "GET"
15
+ f.return_type = "Mail"
16
+ f.add_param :id, :int
17
+ f.add_param :foo, :String, :expect => ["A","B"]
18
+ f.add_param :bar, :Array
19
+ f.add_param :baz, :Boolean, :description => "日本の文字"
20
+ end
21
+
22
+ RPCoder.type "Mail" do |t|
23
+ t.add_field :subject, :String
24
+ t.add_field :body, :String
25
+ end
26
+ end
27
+
28
+ it { RPCoder.functions.size.should == 1 }
29
+
30
+ it { RPCoder.types.size.should == 1 }
31
+
32
+ it 'should render_functions' do
33
+ expected = File.read(File.expand_path('fixtures/foo/bar/API.as', File.dirname(__FILE__)))
34
+ RPCoder.render_functions.should == expected
35
+ end
36
+
37
+ it 'should render_type' do
38
+ expected = File.read(File.expand_path('fixtures/foo/bar/Mail.as', File.dirname(__FILE__)))
39
+ RPCoder.render_type(RPCoder.types.first).should == expected
40
+ end
41
+
42
+ it 'dir_to_export_classes のテスト' do
43
+ RPCoder.dir_to_export_classes('src').should == "src/foo/bar"
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'rpcoder'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
metadata ADDED
@@ -0,0 +1,158 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rpcoder
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.0
6
+ platform: ruby
7
+ authors:
8
+ - jugyo
9
+ - Toshiyuki Hirooka
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-04-25 00:00:00 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: sinatra
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: bundler
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: jeweler
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 1.5.2
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: rcov
62
+ requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: rake
73
+ requirement: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: *id006
82
+ description: Simple RPC generator for as3
83
+ email: toshi.hirooka@gmail.com
84
+ executables: []
85
+
86
+ extensions: []
87
+
88
+ extra_rdoc_files:
89
+ - LICENSE
90
+ - README.rdoc
91
+ files:
92
+ - Gemfile
93
+ - Gemfile.lock
94
+ - LICENSE
95
+ - README.rdoc
96
+ - Rakefile
97
+ - VERSION
98
+ - lib/rpcoder.rb
99
+ - lib/rpcoder/function.rb
100
+ - lib/rpcoder/type.rb
101
+ - lib/templates/API.erb
102
+ - lib/templates/Type.erb
103
+ - mock/build.xml
104
+ - mock/lib/as3corelib.swc
105
+ - mock/lib/flexUnitTasks-4.0.0.jar
106
+ - mock/lib/flexunit-4.0.0.swc
107
+ - mock/lib/flexunit-cilistener-4.0.0.swc
108
+ - mock/lib/flexunit-flexcoverlistener-4.0.0.swc
109
+ - mock/lib/flexunit-uilistener-4.0.0.swc
110
+ - mock/lib/hamcrest-as3-1.1.1.swc
111
+ - mock/lib/mockolate-0.9.3.swc
112
+ - mock/mock_rpcoder.rb
113
+ - mock/mock_server.rb
114
+ - mock/src/Mock.mxml
115
+ - mock/src_test/FlexUnitRunner.mxml
116
+ - mock/src_test/TestSuite.as
117
+ - mock/src_test/com/oneup/rpcoder/test/APITest.as
118
+ - mock/src_test/com/oneup/rpcoder/test/TypeTest.as
119
+ - rpcoder.gemspec
120
+ - spec/fixtures/foo/bar/API.as
121
+ - spec/fixtures/foo/bar/Mail.as
122
+ - spec/rpcoder/function_spec.rb
123
+ - spec/rpcoder_spec.rb
124
+ - spec/spec_helper.rb
125
+ homepage: http://github.com/one-up/rpcoder
126
+ licenses:
127
+ - MIT
128
+ post_install_message:
129
+ rdoc_options: []
130
+
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ hash: 1754127494487391921
139
+ segments:
140
+ - 0
141
+ version: "0"
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: "0"
148
+ requirements: []
149
+
150
+ rubyforge_project:
151
+ rubygems_version: 1.7.2
152
+ signing_key:
153
+ specification_version: 3
154
+ summary: Simple RPC generator for as3
155
+ test_files:
156
+ - spec/rpcoder/function_spec.rb
157
+ - spec/rpcoder_spec.rb
158
+ - spec/spec_helper.rb