freelancer 0.1.0

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 (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