freelancer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. data/.gitignore +3 -0
  2. data/Gemfile +14 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +56 -0
  5. data/Rakefile +34 -0
  6. data/VERSION +1 -0
  7. data/freelancer.gemspec +299 -0
  8. data/init.rb +2 -0
  9. data/lib/freelancer.rb +59 -0
  10. data/lib/freelancer/api.rb +20 -0
  11. data/lib/freelancer/api/common.rb +58 -0
  12. data/lib/freelancer/api/employer.rb +56 -0
  13. data/lib/freelancer/api/freelancer.rb +36 -0
  14. data/lib/freelancer/api/job.rb +46 -0
  15. data/lib/freelancer/api/message.rb +89 -0
  16. data/lib/freelancer/api/notification.rb +25 -0
  17. data/lib/freelancer/api/payment.rb +123 -0
  18. data/lib/freelancer/api/profile.rb +30 -0
  19. data/lib/freelancer/api/project.rb +133 -0
  20. data/lib/freelancer/api/user.rb +86 -0
  21. data/lib/freelancer/client.rb +152 -0
  22. data/lib/freelancer/extensions/hash.rb +11 -0
  23. data/lib/freelancer/models/address.rb +46 -0
  24. data/lib/freelancer/models/balance.rb +22 -0
  25. data/lib/freelancer/models/bid.rb +41 -0
  26. data/lib/freelancer/models/config_version.rb +21 -0
  27. data/lib/freelancer/models/eligibility.rb +23 -0
  28. data/lib/freelancer/models/job.rb +33 -0
  29. data/lib/freelancer/models/job_category.rb +18 -0
  30. data/lib/freelancer/models/message.rb +32 -0
  31. data/lib/freelancer/models/milestone.rb +57 -0
  32. data/lib/freelancer/models/news.rb +15 -0
  33. data/lib/freelancer/models/notification.rb +15 -0
  34. data/lib/freelancer/models/notification_status.rb +45 -0
  35. data/lib/freelancer/models/project.rb +116 -0
  36. data/lib/freelancer/models/project_budget.rb +21 -0
  37. data/lib/freelancer/models/project_fee.rb +18 -0
  38. data/lib/freelancer/models/project_options.rb +34 -0
  39. data/lib/freelancer/models/rating.rb +21 -0
  40. data/lib/freelancer/models/review.rb +87 -0
  41. data/lib/freelancer/models/transaction.rb +39 -0
  42. data/lib/freelancer/models/user.rb +225 -0
  43. data/lib/freelancer/models/withdrawal.rb +51 -0
  44. data/lib/freelancer/models/withdrawal_fee.rb +39 -0
  45. data/lib/freelancer/support/json_mapper.rb +95 -0
  46. data/test/fixtures/common/get_config_version.json +1 -0
  47. data/test/fixtures/common/get_config_version.xml +5 -0
  48. data/test/fixtures/common/get_pending_feedback.json +1 -0
  49. data/test/fixtures/common/get_pending_feedback.xml +20 -0
  50. data/test/fixtures/common/get_terms.json +1 -0
  51. data/test/fixtures/common/get_terms.xml +4 -0
  52. data/test/fixtures/common/post_feedback.json +1 -0
  53. data/test/fixtures/common/post_feedback.xml +4 -0
  54. data/test/fixtures/common/post_reply_for_feedback.json +1 -0
  55. data/test/fixtures/common/post_reply_for_feedback.xml +4 -0
  56. data/test/fixtures/common/request_cancel_project.json +1 -0
  57. data/test/fixtures/common/request_cancel_project.xml +4 -0
  58. data/test/fixtures/common/request_withdraw_feedback.json +1 -0
  59. data/test/fixtures/common/request_withdraw_feedback.xml +4 -0
  60. data/test/fixtures/employer/choose_winner_for_project.json +1 -0
  61. data/test/fixtures/employer/choose_winner_for_project.xml +3 -0
  62. data/test/fixtures/employer/delete_draft_project.json +1 -0
  63. data/test/fixtures/employer/delete_draft_project.xml +4 -0
  64. data/test/fixtures/employer/eligible_for_trial_project.json +1 -0
  65. data/test/fixtures/employer/eligible_for_trial_project.xml +5 -0
  66. data/test/fixtures/employer/get_posted_project_list.json +1 -0
  67. data/test/fixtures/employer/get_posted_project_list.xml +38 -0
  68. data/test/fixtures/employer/invite_user_for_project.json +1 -0
  69. data/test/fixtures/employer/invite_user_for_project.xml +4 -0
  70. data/test/fixtures/employer/post_new_draft_project.json +1 -0
  71. data/test/fixtures/employer/post_new_draft_project.xml +5 -0
  72. data/test/fixtures/employer/post_new_project.json +1 -0
  73. data/test/fixtures/employer/post_new_project.xml +5 -0
  74. data/test/fixtures/employer/post_new_trial_project.json +1 -0
  75. data/test/fixtures/employer/post_new_trial_project.xml +5 -0
  76. data/test/fixtures/employer/publish_draft_project.json +1 -0
  77. data/test/fixtures/employer/publish_draft_project.xml +4 -0
  78. data/test/fixtures/employer/update_project_details.json +1 -0
  79. data/test/fixtures/employer/update_project_details.xml +4 -0
  80. data/test/fixtures/employer/upgrade_trial_project.json +1 -0
  81. data/test/fixtures/employer/upgrade_trial_project.xml +4 -0
  82. data/test/fixtures/freelancer/accept_bid_won.json +1 -0
  83. data/test/fixtures/freelancer/accept_bid_won.xml +4 -0
  84. data/test/fixtures/freelancer/get_project_list_for_placed_bids.json +1 -0
  85. data/test/fixtures/freelancer/get_project_list_for_placed_bids.xml +16 -0
  86. data/test/fixtures/freelancer/place_bid_on_project.json +1 -0
  87. data/test/fixtures/freelancer/place_bid_on_project.xml +4 -0
  88. data/test/fixtures/freelancer/retract_bid_from_project.json +1 -0
  89. data/test/fixtures/freelancer/retract_bid_from_project.xml +4 -0
  90. data/test/fixtures/job/get_category_job_list.json +1 -0
  91. data/test/fixtures/job/get_category_job_list.xml +34 -0
  92. data/test/fixtures/job/get_job_list.json +1 -0
  93. data/test/fixtures/job/get_job_list.xml +17 -0
  94. data/test/fixtures/job/get_my_job_list.json +1 -0
  95. data/test/fixtures/job/get_my_job_list.xml +11 -0
  96. data/test/fixtures/message/get_inbox_messages.json +1 -0
  97. data/test/fixtures/message/get_inbox_messages.xml +22 -0
  98. data/test/fixtures/message/get_sent_messages.json +1 -0
  99. data/test/fixtures/message/get_sent_messages.xml +22 -0
  100. data/test/fixtures/message/get_unread_count.json +1 -0
  101. data/test/fixtures/message/get_unread_count.xml +4 -0
  102. data/test/fixtures/message/load_message_thread.json +1 -0
  103. data/test/fixtures/message/load_message_thread.xml +54 -0
  104. data/test/fixtures/message/mark_message_as_read.json +1 -0
  105. data/test/fixtures/message/mark_message_as_read.xml +4 -0
  106. data/test/fixtures/message/send_message.json +1 -0
  107. data/test/fixtures/message/send_message.xml +4 -0
  108. data/test/fixtures/notification/get_news.json +1 -0
  109. data/test/fixtures/notification/get_news.xml +14 -0
  110. data/test/fixtures/notification/get_notification.json +1 -0
  111. data/test/fixtures/notification/get_notification.xml +10 -0
  112. data/test/fixtures/payment/cancel_milestone.json +1 -0
  113. data/test/fixtures/payment/cancel_milestone.xml +4 -0
  114. data/test/fixtures/payment/create_milestone_payment.json +1 -0
  115. data/test/fixtures/payment/create_milestone_payment.xml +4 -0
  116. data/test/fixtures/payment/get_account_balance_status.json +1 -0
  117. data/test/fixtures/payment/get_account_balance_status.xml +12 -0
  118. data/test/fixtures/payment/get_account_milestone_list.json +1 -0
  119. data/test/fixtures/payment/get_account_milestone_list.xml +30 -0
  120. data/test/fixtures/payment/get_account_transaction_list.json +1 -0
  121. data/test/fixtures/payment/get_account_transaction_list.xml +57 -0
  122. data/test/fixtures/payment/get_account_withdrawal_list.json +1 -0
  123. data/test/fixtures/payment/get_account_withdrawal_list.xml +42 -0
  124. data/test/fixtures/payment/get_balance.json +1 -0
  125. data/test/fixtures/payment/get_balance.xml +4 -0
  126. data/test/fixtures/payment/get_project_list_for_transfer.json +1 -0
  127. data/test/fixtures/payment/get_project_list_for_transfer.xml +52 -0
  128. data/test/fixtures/payment/get_withdrawal_fees.json +1 -0
  129. data/test/fixtures/payment/get_withdrawal_fees.xml +41 -0
  130. data/test/fixtures/payment/prepare_transfer.json +1 -0
  131. data/test/fixtures/payment/prepare_transfer.xml +4 -0
  132. data/test/fixtures/payment/release_milestone.json +1 -0
  133. data/test/fixtures/payment/release_milestone.xml +4 -0
  134. data/test/fixtures/payment/request_cancel_withdrawal.json +1 -0
  135. data/test/fixtures/payment/request_cancel_withdrawal.xml +4 -0
  136. data/test/fixtures/payment/request_release_milestone.json +1 -0
  137. data/test/fixtures/payment/request_release_milestone.xml +4 -0
  138. data/test/fixtures/payment/request_withdrawal.json +1 -0
  139. data/test/fixtures/payment/request_withdrawal.xml +6 -0
  140. data/test/fixtures/payment/transfer_money.json +1 -0
  141. data/test/fixtures/payment/transfer_money.xml +4 -0
  142. data/test/fixtures/profile/get_account_details.json +1 -0
  143. data/test/fixtures/profile/get_account_details.xml +71 -0
  144. data/test/fixtures/profile/get_profile_info.json +1 -0
  145. data/test/fixtures/profile/get_profile_info.xml +53 -0
  146. data/test/fixtures/profile/set_profile_info.json +1 -0
  147. data/test/fixtures/profile/set_profile_info.xml +4 -0
  148. data/test/fixtures/project/get_bids_details.json +1 -0
  149. data/test/fixtures/project/get_bids_details.xml +19 -0
  150. data/test/fixtures/project/get_project_budget_config.json +1 -0
  151. data/test/fixtures/project/get_project_budget_config.xml +42 -0
  152. data/test/fixtures/project/get_project_details.json +1 -0
  153. data/test/fixtures/project/get_project_details.xml +78 -0
  154. data/test/fixtures/project/get_project_fees.json +1 -0
  155. data/test/fixtures/project/get_project_fees.xml +31 -0
  156. data/test/fixtures/project/get_public_messages.json +1 -0
  157. data/test/fixtures/project/get_public_messages.xml +27 -0
  158. data/test/fixtures/project/get_sent_messages.xml +22 -0
  159. data/test/fixtures/project/get_unread_count.xml +4 -0
  160. data/test/fixtures/project/load_message_thread.xml +54 -0
  161. data/test/fixtures/project/mark_message_as_read.xml +4 -0
  162. data/test/fixtures/project/post_public_message.json +1 -0
  163. data/test/fixtures/project/post_public_message.xml +4 -0
  164. data/test/fixtures/project/search_projects.json +1 -0
  165. data/test/fixtures/project/search_projects.xml +37 -0
  166. data/test/fixtures/project/send_message.xml +4 -0
  167. data/test/fixtures/user/get_user_details.json +1 -0
  168. data/test/fixtures/user/get_user_details.xml +32 -0
  169. data/test/fixtures/user/get_user_feedback.json +1 -0
  170. data/test/fixtures/user/get_user_feedback.xml +58 -0
  171. data/test/fixtures/user/get_users_by_search.json +1 -0
  172. data/test/fixtures/user/get_users_by_search.xml +26 -0
  173. data/test/freelancer/api/common_api_test.rb +82 -0
  174. data/test/freelancer/api/employer_api_test.rb +105 -0
  175. data/test/freelancer/api/freelancer_api_test.rb +72 -0
  176. data/test/freelancer/api/job_api_test.rb +76 -0
  177. data/test/freelancer/api/message_api_test.rb +144 -0
  178. data/test/freelancer/api/notification_api_test.rb +56 -0
  179. data/test/freelancer/api/payment_api_test.rb +225 -0
  180. data/test/freelancer/api/profile_api_test.rb +54 -0
  181. data/test/freelancer/api/project_api_test.rb +229 -0
  182. data/test/freelancer/api/user_api_test.rb +153 -0
  183. data/test/freelancer/client_test.rb +5 -0
  184. data/test/freelancer/models/balance_test.rb +24 -0
  185. data/test/freelancer/models/bid_test.rb +25 -0
  186. data/test/freelancer/models/config_version.rb +14 -0
  187. data/test/freelancer/models/eligibility_test.rb +14 -0
  188. data/test/freelancer/models/job_category_test.rb +16 -0
  189. data/test/freelancer/models/job_test.rb +19 -0
  190. data/test/freelancer/models/message_test.rb +42 -0
  191. data/test/freelancer/models/milestone_test.rb +21 -0
  192. data/test/freelancer/models/news_test.rb +15 -0
  193. data/test/freelancer/models/notification_test.rb +15 -0
  194. data/test/freelancer/models/project_budget_test.rb +18 -0
  195. data/test/freelancer/models/project_fee_test.rb +17 -0
  196. data/test/freelancer/models/project_test.rb +97 -0
  197. data/test/freelancer/models/review_test.rb +36 -0
  198. data/test/freelancer/models/transaction_test.rb +29 -0
  199. data/test/freelancer/models/user_test.rb +94 -0
  200. data/test/freelancer/models/withdrawal_fee_test.rb +19 -0
  201. data/test/freelancer/models/withdrawal_test.rb +20 -0
  202. data/test/freelancer/oauth_test.rb +112 -0
  203. data/test/freelancer_test.rb +1 -0
  204. data/test/test_helper.rb +42 -0
  205. metadata +427 -0
@@ -0,0 +1,19 @@
1
+ class WithdrawalFeeTest < Test::Unit::TestCase
2
+
3
+ context "withdrawal fee model" do
4
+
5
+ should "create list of fees based on JSON" do
6
+
7
+ fees = Freelancer::Models::WithdrawalFee.parse_collection(fixture_file("payment/get_withdrawal_fees.json"), :shift => [ :"json-result", :items, :fee ])
8
+ fees.size.should == 5
9
+ fees.first.withdrawal_type.should == "paypal"
10
+ fees.first.fee.should == 1
11
+ fees.first.minimum_amount.should == 30
12
+ fees.first.maximum_amount.should == 10000
13
+ fees.first.country_code.should == ""
14
+
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,20 @@
1
+ class WithdrawalTest < Test::Unit::TestCase
2
+
3
+ context "withdrawal model" do
4
+
5
+ should "create list of withdrawals based on account withdraws" do
6
+
7
+ withdrawals = Freelancer::Models::Withdrawal.parse_collection(fixture_file("payment/get_account_withdrawal_list.json"), :shift => [ :"json-result", :items ])
8
+ withdrawals.size.should == 1
9
+ withdrawals.first.id.should == 36
10
+ withdrawals.first.type.should == "paypal"
11
+ withdrawals.first.requested_at.should == Date.parse("2010-08-08 01:58:34")
12
+ withdrawals.first.amount.should == 100
13
+ withdrawals.first.details.should == "PayPal withdrawal to email test@test.com"
14
+ withdrawals.first.processing_at.should == "Mon, 9 - Tue, 10 Aug 2010"
15
+ withdrawals.first.status.should == "Delay"
16
+
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,112 @@
1
+ require "test_helper"
2
+
3
+ class OAuthTest < Test::Unit::TestCase
4
+
5
+ context "oAuth" do
6
+
7
+ setup do
8
+ @consumer_options = {
9
+ :request_token_path => "/RequestRequestToken/requestRequestToken.xml",
10
+ :authorize_url => "http://www.sandbox.freelancer.com/users/api-token/auth.php",
11
+ :access_token_path => "/RequestAccessToken/requestAccessToken.xml",
12
+ :scheme => :query_string,
13
+ :http_method => :get,
14
+ :site => "http://api.sandbox.freelancer.com",
15
+ }
16
+ end
17
+
18
+ should "initialize with consumer token and secret" do
19
+
20
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
21
+ freelancer.consumer_token.should == "consumer_token"
22
+ freelancer.consumer_secret.should == "consumer_secret"
23
+
24
+ end
25
+
26
+ should "set request token path to '/RequestRequestToken/requestRequestToken.xml' by default" do
27
+
28
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
29
+ freelancer.consumer.options[:request_token_path].should == "/RequestRequestToken/requestRequestToken.xml"
30
+
31
+ end
32
+
33
+ should "set authorize url to 'http://www.sandbox.freelancer.com/users/api-token/auth.php' by default" do
34
+
35
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
36
+ freelancer.consumer.options[:authorize_url].should == "http://www.sandbox.freelancer.com/users/api-token/auth.php"
37
+
38
+ end
39
+
40
+ should "set access token path to '/RequestAccessToken/requestAccessToken.xml' by default" do
41
+
42
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
43
+ freelancer.consumer.options[:access_token_path].should == "/RequestAccessToken/requestAccessToken.xml"
44
+
45
+ end
46
+
47
+ should "have a consumer" do
48
+
49
+ consumer = mock("oauth consumer")
50
+ OAuth::Consumer.expects(:new).with("consumer_token", "consumer_secret", @consumer_options).returns(consumer)
51
+
52
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
53
+ freelancer.consumer.should == consumer
54
+
55
+ end
56
+
57
+ should "have a request token from the consumer" do
58
+
59
+ consumer = mock("oauth consumer")
60
+ request_token = mock("request token")
61
+ consumer.expects(:get_request_token).returns(request_token)
62
+ OAuth::Consumer.expects(:new).with("consumer_token", "consumer_secret", @consumer_options).returns(consumer)
63
+
64
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
65
+ freelancer.request_token.should == request_token
66
+
67
+ end
68
+
69
+ should "clear request token and set the callback url" do
70
+
71
+ consumer = mock("oauth consumer")
72
+ request_token = mock("request token")
73
+ OAuth::Consumer.expects(:new).with("consumer_token", "consumer_secret", @consumer_options).returns(consumer)
74
+
75
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
76
+ consumer.expects(:get_request_token).with({ :oauth_callback => "http://foo.bar.com/oauth_callback" })
77
+ freelancer.set_callback_url("http://foo.bar.com/oauth_callback")
78
+
79
+ end
80
+
81
+ should "be able to create access token from request token, request secret and verifier" do
82
+
83
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
84
+ consumer = OAuth::Consumer.new("consumer_token", "consumer_secret", { :site => "http://api.sandbox.freelancer.com" })
85
+ freelancer.stubs(:consumer).returns(consumer)
86
+
87
+ access_token = mock("access_token", :token => "access_token", :secret => "access_secret")
88
+ request_token = mock("request token")
89
+ request_token.expects(:get_access_token).with(:oauth_verifier => "verifier").returns(access_token)
90
+ OAuth::RequestToken.expects(:new).with(consumer, "request_token", "request_secret").returns(request_token)
91
+
92
+ freelancer.authorize_from_request("request_token", "request_secret", "verifier")
93
+ freelancer.access_token.token.should == "access_token"
94
+ freelancer.access_token.secret.should == "access_secret"
95
+
96
+ end
97
+
98
+ should "be able to create access token from access token and secret" do
99
+
100
+ freelancer = Freelancer::Client.new("consumer_token", "consumer_secret")
101
+ consumer = OAuth::Consumer.new("consumer_token", "consumer_secret", { :site => "http://api.sandbox.freelancer.com" })
102
+ freelancer.stubs(:consumer).returns(consumer)
103
+
104
+ freelancer.authorize_from_access("access_token", "access_secret")
105
+ freelancer.access_token.token.should == "access_token"
106
+ freelancer.access_token.secret.should == "access_secret"
107
+
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -0,0 +1 @@
1
+ require "test_helper"
@@ -0,0 +1,42 @@
1
+ require "test/unit"
2
+ require "shoulda"
3
+ require "matchy"
4
+ require "mocha"
5
+ require "fakeweb"
6
+
7
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
9
+ require "freelancer"
10
+
11
+ class Test::Unit::TestCase
12
+ end
13
+
14
+ # Read the specified fixture file and return the file contents
15
+ def fixture_file(filename)
16
+
17
+ return "" if filename == ""
18
+ file_path = File.expand_path(File.dirname(__FILE__) + "/fixtures/" + filename)
19
+
20
+ contents = File.read(file_path)
21
+ # encoder = HTMLEntities.new
22
+ # encoder.decode(contents)
23
+ contents
24
+
25
+ end
26
+
27
+ # Get the URL for an API method
28
+ def api_url(method)
29
+ "http://api.sandbox.freelancer.com:80#{method}"
30
+ end
31
+
32
+ # Create a fake web stub for the specified API GET method
33
+ def stub_api_get(method, filename, status = nil)
34
+ stub_api_request(:get, method, filename, status)
35
+ end
36
+
37
+ # Create a fake web stub for the specified method
38
+ def stub_api_request(type, method, filename, status = nil)
39
+ options = { :body => fixture_file(filename) }
40
+ options.merge!({ :status => status }) unless status.nil?
41
+ FakeWeb.register_uri(type, api_url(method), options)
42
+ end
metadata ADDED
@@ -0,0 +1,427 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: freelancer
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Trond Arve Nordheim
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-08-09 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
23
+ name: oauth
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 0
32
+ - 4
33
+ - 0
34
+ version: 0.4.0
35
+ requirement: *id001
36
+ type: :runtime
37
+ - !ruby/object:Gem::Dependency
38
+ prerelease: false
39
+ name: htmlentities
40
+ version_requirements: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 53
46
+ segments:
47
+ - 4
48
+ - 2
49
+ - 1
50
+ version: 4.2.1
51
+ requirement: *id002
52
+ type: :runtime
53
+ - !ruby/object:Gem::Dependency
54
+ prerelease: false
55
+ name: json_mapper
56
+ version_requirements: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 23
62
+ segments:
63
+ - 0
64
+ - 2
65
+ - 0
66
+ version: 0.2.0
67
+ requirement: *id003
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ prerelease: false
71
+ name: jeweler
72
+ version_requirements: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ requirement: *id004
82
+ type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ prerelease: false
85
+ name: shoulda
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 33
92
+ segments:
93
+ - 2
94
+ - 10
95
+ - 3
96
+ version: 2.10.3
97
+ requirement: *id005
98
+ type: :development
99
+ - !ruby/object:Gem::Dependency
100
+ prerelease: false
101
+ name: mcmire-matchy
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ hash: 15
108
+ segments:
109
+ - 0
110
+ - 5
111
+ - 2
112
+ version: 0.5.2
113
+ requirement: *id006
114
+ type: :development
115
+ - !ruby/object:Gem::Dependency
116
+ prerelease: false
117
+ name: mocha
118
+ version_requirements: &id007 !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ hash: 43
124
+ segments:
125
+ - 0
126
+ - 9
127
+ - 8
128
+ version: 0.9.8
129
+ requirement: *id007
130
+ type: :development
131
+ - !ruby/object:Gem::Dependency
132
+ prerelease: false
133
+ name: fakeweb
134
+ version_requirements: &id008 !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ hash: 15
140
+ segments:
141
+ - 1
142
+ - 2
143
+ - 8
144
+ version: 1.2.8
145
+ requirement: *id008
146
+ type: :development
147
+ description: Ruby gem implementation of the Freelancer.com API
148
+ email: tanordheim@gmail.com
149
+ executables: []
150
+
151
+ extensions: []
152
+
153
+ extra_rdoc_files:
154
+ - LICENSE
155
+ - README.rdoc
156
+ files:
157
+ - .gitignore
158
+ - Gemfile
159
+ - LICENSE
160
+ - README.rdoc
161
+ - Rakefile
162
+ - VERSION
163
+ - freelancer.gemspec
164
+ - init.rb
165
+ - lib/freelancer.rb
166
+ - lib/freelancer/api.rb
167
+ - lib/freelancer/api/common.rb
168
+ - lib/freelancer/api/employer.rb
169
+ - lib/freelancer/api/freelancer.rb
170
+ - lib/freelancer/api/job.rb
171
+ - lib/freelancer/api/message.rb
172
+ - lib/freelancer/api/notification.rb
173
+ - lib/freelancer/api/payment.rb
174
+ - lib/freelancer/api/profile.rb
175
+ - lib/freelancer/api/project.rb
176
+ - lib/freelancer/api/user.rb
177
+ - lib/freelancer/client.rb
178
+ - lib/freelancer/extensions/hash.rb
179
+ - lib/freelancer/models/address.rb
180
+ - lib/freelancer/models/balance.rb
181
+ - lib/freelancer/models/bid.rb
182
+ - lib/freelancer/models/config_version.rb
183
+ - lib/freelancer/models/eligibility.rb
184
+ - lib/freelancer/models/job.rb
185
+ - lib/freelancer/models/job_category.rb
186
+ - lib/freelancer/models/message.rb
187
+ - lib/freelancer/models/milestone.rb
188
+ - lib/freelancer/models/news.rb
189
+ - lib/freelancer/models/notification.rb
190
+ - lib/freelancer/models/notification_status.rb
191
+ - lib/freelancer/models/project.rb
192
+ - lib/freelancer/models/project_budget.rb
193
+ - lib/freelancer/models/project_fee.rb
194
+ - lib/freelancer/models/project_options.rb
195
+ - lib/freelancer/models/rating.rb
196
+ - lib/freelancer/models/review.rb
197
+ - lib/freelancer/models/transaction.rb
198
+ - lib/freelancer/models/user.rb
199
+ - lib/freelancer/models/withdrawal.rb
200
+ - lib/freelancer/models/withdrawal_fee.rb
201
+ - lib/freelancer/support/json_mapper.rb
202
+ - test/fixtures/common/get_config_version.json
203
+ - test/fixtures/common/get_config_version.xml
204
+ - test/fixtures/common/get_pending_feedback.json
205
+ - test/fixtures/common/get_pending_feedback.xml
206
+ - test/fixtures/common/get_terms.json
207
+ - test/fixtures/common/get_terms.xml
208
+ - test/fixtures/common/post_feedback.json
209
+ - test/fixtures/common/post_feedback.xml
210
+ - test/fixtures/common/post_reply_for_feedback.json
211
+ - test/fixtures/common/post_reply_for_feedback.xml
212
+ - test/fixtures/common/request_cancel_project.json
213
+ - test/fixtures/common/request_cancel_project.xml
214
+ - test/fixtures/common/request_withdraw_feedback.json
215
+ - test/fixtures/common/request_withdraw_feedback.xml
216
+ - test/fixtures/employer/choose_winner_for_project.json
217
+ - test/fixtures/employer/choose_winner_for_project.xml
218
+ - test/fixtures/employer/delete_draft_project.json
219
+ - test/fixtures/employer/delete_draft_project.xml
220
+ - test/fixtures/employer/eligible_for_trial_project.json
221
+ - test/fixtures/employer/eligible_for_trial_project.xml
222
+ - test/fixtures/employer/get_posted_project_list.json
223
+ - test/fixtures/employer/get_posted_project_list.xml
224
+ - test/fixtures/employer/invite_user_for_project.json
225
+ - test/fixtures/employer/invite_user_for_project.xml
226
+ - test/fixtures/employer/post_new_draft_project.json
227
+ - test/fixtures/employer/post_new_draft_project.xml
228
+ - test/fixtures/employer/post_new_project.json
229
+ - test/fixtures/employer/post_new_project.xml
230
+ - test/fixtures/employer/post_new_trial_project.json
231
+ - test/fixtures/employer/post_new_trial_project.xml
232
+ - test/fixtures/employer/publish_draft_project.json
233
+ - test/fixtures/employer/publish_draft_project.xml
234
+ - test/fixtures/employer/update_project_details.json
235
+ - test/fixtures/employer/update_project_details.xml
236
+ - test/fixtures/employer/upgrade_trial_project.json
237
+ - test/fixtures/employer/upgrade_trial_project.xml
238
+ - test/fixtures/freelancer/accept_bid_won.json
239
+ - test/fixtures/freelancer/accept_bid_won.xml
240
+ - test/fixtures/freelancer/get_project_list_for_placed_bids.json
241
+ - test/fixtures/freelancer/get_project_list_for_placed_bids.xml
242
+ - test/fixtures/freelancer/place_bid_on_project.json
243
+ - test/fixtures/freelancer/place_bid_on_project.xml
244
+ - test/fixtures/freelancer/retract_bid_from_project.json
245
+ - test/fixtures/freelancer/retract_bid_from_project.xml
246
+ - test/fixtures/job/get_category_job_list.json
247
+ - test/fixtures/job/get_category_job_list.xml
248
+ - test/fixtures/job/get_job_list.json
249
+ - test/fixtures/job/get_job_list.xml
250
+ - test/fixtures/job/get_my_job_list.json
251
+ - test/fixtures/job/get_my_job_list.xml
252
+ - test/fixtures/message/get_inbox_messages.json
253
+ - test/fixtures/message/get_inbox_messages.xml
254
+ - test/fixtures/message/get_sent_messages.json
255
+ - test/fixtures/message/get_sent_messages.xml
256
+ - test/fixtures/message/get_unread_count.json
257
+ - test/fixtures/message/get_unread_count.xml
258
+ - test/fixtures/message/load_message_thread.json
259
+ - test/fixtures/message/load_message_thread.xml
260
+ - test/fixtures/message/mark_message_as_read.json
261
+ - test/fixtures/message/mark_message_as_read.xml
262
+ - test/fixtures/message/send_message.json
263
+ - test/fixtures/message/send_message.xml
264
+ - test/fixtures/notification/get_news.json
265
+ - test/fixtures/notification/get_news.xml
266
+ - test/fixtures/notification/get_notification.json
267
+ - test/fixtures/notification/get_notification.xml
268
+ - test/fixtures/payment/cancel_milestone.json
269
+ - test/fixtures/payment/cancel_milestone.xml
270
+ - test/fixtures/payment/create_milestone_payment.json
271
+ - test/fixtures/payment/create_milestone_payment.xml
272
+ - test/fixtures/payment/get_account_balance_status.json
273
+ - test/fixtures/payment/get_account_balance_status.xml
274
+ - test/fixtures/payment/get_account_milestone_list.json
275
+ - test/fixtures/payment/get_account_milestone_list.xml
276
+ - test/fixtures/payment/get_account_transaction_list.json
277
+ - test/fixtures/payment/get_account_transaction_list.xml
278
+ - test/fixtures/payment/get_account_withdrawal_list.json
279
+ - test/fixtures/payment/get_account_withdrawal_list.xml
280
+ - test/fixtures/payment/get_balance.json
281
+ - test/fixtures/payment/get_balance.xml
282
+ - test/fixtures/payment/get_project_list_for_transfer.json
283
+ - test/fixtures/payment/get_project_list_for_transfer.xml
284
+ - test/fixtures/payment/get_withdrawal_fees.json
285
+ - test/fixtures/payment/get_withdrawal_fees.xml
286
+ - test/fixtures/payment/prepare_transfer.json
287
+ - test/fixtures/payment/prepare_transfer.xml
288
+ - test/fixtures/payment/release_milestone.json
289
+ - test/fixtures/payment/release_milestone.xml
290
+ - test/fixtures/payment/request_cancel_withdrawal.json
291
+ - test/fixtures/payment/request_cancel_withdrawal.xml
292
+ - test/fixtures/payment/request_release_milestone.json
293
+ - test/fixtures/payment/request_release_milestone.xml
294
+ - test/fixtures/payment/request_withdrawal.json
295
+ - test/fixtures/payment/request_withdrawal.xml
296
+ - test/fixtures/payment/transfer_money.json
297
+ - test/fixtures/payment/transfer_money.xml
298
+ - test/fixtures/profile/get_account_details.json
299
+ - test/fixtures/profile/get_account_details.xml
300
+ - test/fixtures/profile/get_profile_info.json
301
+ - test/fixtures/profile/get_profile_info.xml
302
+ - test/fixtures/profile/set_profile_info.json
303
+ - test/fixtures/profile/set_profile_info.xml
304
+ - test/fixtures/project/get_bids_details.json
305
+ - test/fixtures/project/get_bids_details.xml
306
+ - test/fixtures/project/get_project_budget_config.json
307
+ - test/fixtures/project/get_project_budget_config.xml
308
+ - test/fixtures/project/get_project_details.json
309
+ - test/fixtures/project/get_project_details.xml
310
+ - test/fixtures/project/get_project_fees.json
311
+ - test/fixtures/project/get_project_fees.xml
312
+ - test/fixtures/project/get_public_messages.json
313
+ - test/fixtures/project/get_public_messages.xml
314
+ - test/fixtures/project/get_sent_messages.xml
315
+ - test/fixtures/project/get_unread_count.xml
316
+ - test/fixtures/project/load_message_thread.xml
317
+ - test/fixtures/project/mark_message_as_read.xml
318
+ - test/fixtures/project/post_public_message.json
319
+ - test/fixtures/project/post_public_message.xml
320
+ - test/fixtures/project/search_projects.json
321
+ - test/fixtures/project/search_projects.xml
322
+ - test/fixtures/project/send_message.xml
323
+ - test/fixtures/user/get_user_details.json
324
+ - test/fixtures/user/get_user_details.xml
325
+ - test/fixtures/user/get_user_feedback.json
326
+ - test/fixtures/user/get_user_feedback.xml
327
+ - test/fixtures/user/get_users_by_search.json
328
+ - test/fixtures/user/get_users_by_search.xml
329
+ - test/freelancer/api/common_api_test.rb
330
+ - test/freelancer/api/employer_api_test.rb
331
+ - test/freelancer/api/freelancer_api_test.rb
332
+ - test/freelancer/api/job_api_test.rb
333
+ - test/freelancer/api/message_api_test.rb
334
+ - test/freelancer/api/notification_api_test.rb
335
+ - test/freelancer/api/payment_api_test.rb
336
+ - test/freelancer/api/profile_api_test.rb
337
+ - test/freelancer/api/project_api_test.rb
338
+ - test/freelancer/api/user_api_test.rb
339
+ - test/freelancer/client_test.rb
340
+ - test/freelancer/models/balance_test.rb
341
+ - test/freelancer/models/bid_test.rb
342
+ - test/freelancer/models/config_version.rb
343
+ - test/freelancer/models/eligibility_test.rb
344
+ - test/freelancer/models/job_category_test.rb
345
+ - test/freelancer/models/job_test.rb
346
+ - test/freelancer/models/message_test.rb
347
+ - test/freelancer/models/milestone_test.rb
348
+ - test/freelancer/models/news_test.rb
349
+ - test/freelancer/models/notification_test.rb
350
+ - test/freelancer/models/project_budget_test.rb
351
+ - test/freelancer/models/project_fee_test.rb
352
+ - test/freelancer/models/project_test.rb
353
+ - test/freelancer/models/review_test.rb
354
+ - test/freelancer/models/transaction_test.rb
355
+ - test/freelancer/models/user_test.rb
356
+ - test/freelancer/models/withdrawal_fee_test.rb
357
+ - test/freelancer/models/withdrawal_test.rb
358
+ - test/freelancer/oauth_test.rb
359
+ - test/freelancer_test.rb
360
+ - test/test_helper.rb
361
+ has_rdoc: true
362
+ homepage: http://github.com/tanordheim/freelancer
363
+ licenses: []
364
+
365
+ post_install_message:
366
+ rdoc_options:
367
+ - --charset=UTF-8
368
+ require_paths:
369
+ - lib
370
+ required_ruby_version: !ruby/object:Gem::Requirement
371
+ none: false
372
+ requirements:
373
+ - - ">="
374
+ - !ruby/object:Gem::Version
375
+ hash: 3
376
+ segments:
377
+ - 0
378
+ version: "0"
379
+ required_rubygems_version: !ruby/object:Gem::Requirement
380
+ none: false
381
+ requirements:
382
+ - - ">="
383
+ - !ruby/object:Gem::Version
384
+ hash: 3
385
+ segments:
386
+ - 0
387
+ version: "0"
388
+ requirements: []
389
+
390
+ rubyforge_project:
391
+ rubygems_version: 1.3.7
392
+ signing_key:
393
+ specification_version: 3
394
+ summary: Freelancer API
395
+ test_files:
396
+ - test/freelancer_test.rb
397
+ - test/test_helper.rb
398
+ - test/freelancer/api/freelancer_api_test.rb
399
+ - test/freelancer/api/user_api_test.rb
400
+ - test/freelancer/api/notification_api_test.rb
401
+ - test/freelancer/api/job_api_test.rb
402
+ - test/freelancer/api/message_api_test.rb
403
+ - test/freelancer/api/common_api_test.rb
404
+ - test/freelancer/api/project_api_test.rb
405
+ - test/freelancer/api/payment_api_test.rb
406
+ - test/freelancer/api/employer_api_test.rb
407
+ - test/freelancer/api/profile_api_test.rb
408
+ - test/freelancer/client_test.rb
409
+ - test/freelancer/oauth_test.rb
410
+ - test/freelancer/models/bid_test.rb
411
+ - test/freelancer/models/balance_test.rb
412
+ - test/freelancer/models/job_test.rb
413
+ - test/freelancer/models/job_category_test.rb
414
+ - test/freelancer/models/notification_test.rb
415
+ - test/freelancer/models/user_test.rb
416
+ - test/freelancer/models/project_test.rb
417
+ - test/freelancer/models/milestone_test.rb
418
+ - test/freelancer/models/config_version.rb
419
+ - test/freelancer/models/withdrawal_test.rb
420
+ - test/freelancer/models/project_budget_test.rb
421
+ - test/freelancer/models/message_test.rb
422
+ - test/freelancer/models/eligibility_test.rb
423
+ - test/freelancer/models/news_test.rb
424
+ - test/freelancer/models/review_test.rb
425
+ - test/freelancer/models/withdrawal_fee_test.rb
426
+ - test/freelancer/models/transaction_test.rb
427
+ - test/freelancer/models/project_fee_test.rb