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,51 @@
1
+ module Freelancer
2
+ module Models
3
+ class Withdrawal
4
+
5
+ include JSONMapper
6
+
7
+ # The id of the withdrawal
8
+ #
9
+ # Provided from:
10
+ # - /Payment/getAccountWithdrawalList.json
11
+ json_attribute :id, Integer
12
+
13
+ # The type of withdrawal
14
+ #
15
+ # Provided from:
16
+ # - /Payment/getAccountWithdrawalList.json
17
+ json_attribute :type, String
18
+
19
+ # The amount of money withdrawed
20
+ #
21
+ # Provided from:
22
+ # - /Payment/getAccountWithdrawalList.json
23
+ json_attribute :amount, Float
24
+
25
+ # The details of the withdrawal
26
+ #
27
+ # Provided from:
28
+ # - /Payment/getAccountWithdrawalList.json
29
+ json_attribute :details, String
30
+
31
+ # The date and time the withdrawal was requested
32
+ #
33
+ # Provided from:
34
+ # - /Payment/getAccountWithdrawalList.json
35
+ json_attribute :requested_at, :request_at, DateTime
36
+
37
+ # The date and time the withdrawal will be processed
38
+ #
39
+ # Provided from:
40
+ # - /Payment/getAccountWithdrawalList.json
41
+ json_attribute :processing_at, :processing_date, String
42
+
43
+ # The status of the withdrawal
44
+ #
45
+ # Provided from:
46
+ # - /Payment/getAccountWithdrawalList.json
47
+ json_attribute :status, String
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,39 @@
1
+ module Freelancer
2
+ module Models
3
+ class WithdrawalFee
4
+
5
+ include JSONMapper
6
+
7
+ # The withdrawal type
8
+ #
9
+ # Provided from:
10
+ # - /Payment/getWithdrawalFees.json
11
+ json_attribute :withdrawal_type, :withdrawtype, String
12
+
13
+ # The withdrawal fee
14
+ #
15
+ # Provided from:
16
+ # - /Payment/getWithdrawalFees.json
17
+ json_attribute :fee, :charge, Integer
18
+
19
+ # The minimum amount that can be withdrawn
20
+ #
21
+ # Provided from:
22
+ # - /Payment/getWithdrawalFees.json
23
+ json_attribute :minimum_amount, :minamount, Integer
24
+
25
+ # The maximum amount that can be withdrawn
26
+ #
27
+ # Provided from:
28
+ # - /Payment/getWithdrawalFees.json
29
+ json_attribute :maximum_amount, :maxamount, Integer
30
+
31
+ # The country code where the withdrawal type is available
32
+ #
33
+ # Provided from:
34
+ # - /Payment/getWithdrawalFees.json
35
+ json_attribute :country_code, :countrycode, String
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,95 @@
1
+ module Freelancer
2
+ module Support
3
+ class JSONMapper
4
+
5
+ attr_reader :model
6
+ attr_reader :mappings
7
+
8
+ # Initialize the JSON mapper
9
+ def initialize(model)
10
+ @model = model
11
+ @mappings = {}
12
+ end
13
+
14
+ # Map a key against the given model value
15
+ def map(from, to)
16
+ @mappings[from] = to
17
+ end
18
+
19
+ # Build a JSON data structure of the current mapping according to the
20
+ # format specifications from the Freelancer.com API.
21
+ def to_json
22
+
23
+ # Build a Hash of the current mappings
24
+ structure = {}
25
+ mappings.each_pair do |from, to|
26
+
27
+ # If our "to" is a hash, build a nested hash into the structure
28
+ if to.is_a?(Hash)
29
+
30
+ structure[to.keys.first] ||= {}
31
+ structure[to.keys.first][to.values.first] = model[from]
32
+
33
+ else
34
+ structure[to] = model[from]
35
+ end
36
+
37
+ end
38
+
39
+ structure
40
+
41
+ end
42
+
43
+ # Populate the fields of the model by mapping the JSON data structure
44
+ # specified against the model attributes.
45
+ def from_json(json)
46
+
47
+ json.each_pair do |key, value|
48
+
49
+ # If our value is a hash and it's mapped by the mapper,
50
+ # do a special hash lookup on the map target
51
+ # for each of the key+nested key combinations
52
+ if value.is_a?(Hash) && mapped_as_hash?(key)
53
+
54
+ value.each_pair do |nested_key, nested_value|
55
+ map_key = mapped_from({ key => nested_key })
56
+ raise ArgumentError.new("Unable to map key #{{ key => nested_key }.inspect} to model attribute") if map_key.nil?
57
+ model[map_key] = nested_value
58
+ end
59
+
60
+ else
61
+ map_key = mapped_from(key)
62
+ raise ArgumentError.new("Unable to map key #{key} to model attribute") if map_key.nil?
63
+ model[map_key] = value
64
+ end
65
+
66
+
67
+ end
68
+
69
+ model
70
+
71
+ end
72
+
73
+ private
74
+
75
+ # Find the "from" key for the given map "to" key
76
+ def mapped_from(to)
77
+
78
+ mappings.each_pair do |key, value|
79
+ return key if (value.is_a?(Array) && value.include?(to)) || value == to
80
+ end
81
+ nil
82
+
83
+ end
84
+
85
+ # Check if the specified key is mapped as a hash
86
+ def mapped_as_hash?(key)
87
+ mappings.values.each do |mapping|
88
+ return true if mapping.is_a?(Hash) && mapping.keys.first == key
89
+ end
90
+ false
91
+ end
92
+
93
+ end
94
+ end
95
+ end
@@ -0,0 +1 @@
1
+ {"json-result":{"function":"withdrawalfee","version":"1"}}
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <function>withdrawalfee</function>
4
+ <version>3</version>
5
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"count":1,"items":[{"projectid":280,"userid":123456,"username":"test-username","rateuntil":"2010-11-06 01:53:34","status":"Paid"}]}}
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <count>2</count>
4
+ <items>
5
+ <feedback>
6
+ <projectid>658116</projectid>
7
+ <userid>1619638</userid>
8
+ <username>lsy003</username>
9
+ <rateuntil>2010-09-14 01:55:08</rateuntil>
10
+ <status>Unpaid</status>
11
+ </feedback>
12
+ <feedback>
13
+ <projectid>658028</projectid>
14
+ <userid>1619638</userid>
15
+ <username>lsy003</username>
16
+ <rateuntil>2010-09-14 01:31:01</rateuntil>
17
+ <status>Paid</status>
18
+ </feedback>
19
+ </items>
20
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"terms":"Test terms"}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <terms>New API Terms &amp; Conditions</terms>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,3 @@
1
+ <xml-result>
2
+ <statusconfirmation>1</statusconfirmation>
3
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"eligible":0,"bonuspoints":0}}
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
3
+ <eligible>1</eligible>
4
+ <bonuspoints>100</bonuspoints>
5
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"count":2,"items":[{"projectname":"Test project name","projectid":279,"projecturl":"http:\/\/www.sandbox.freelancer.com\/projects\/PHP-NET\/Test-project-name.html","bidcount":0,"averagebid":false,"pmb":false,"status":"A","enddate":"2010-08-22 01:34:34","additionalstatus":"Open"},{"projectname":"Test project to get some reviews on my account","projectid":148,"projecturl":"http:\/\/www.sandbox.freelancer.com\/projects\/NET\/Test-project-get-some-reviews.html","bidcount":1,"averagebid":500,"pmb":false,"status":"F","enddate":"2010-06-09 21:48:38","additionalstatus":"Frozen"}]}}
@@ -0,0 +1,38 @@
1
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
2
+ <count>15</count>
3
+ <items>
4
+ <project>
5
+ <projectname>test project6 posted by API curl</projectname>
6
+ <projectid>589198</projectid>
7
+ <projecturl>http://www.sandbox.freelancer.com/projects/PHP-Java/test-project-posted-API-curl.589198.html</projecturl>
8
+ <bidcount>0</bidcount>
9
+ <averagebid />
10
+ <pmb />
11
+ <status>A</status>
12
+ <enddate>2010-03-29 23:13:47</enddate>
13
+ <additionalstatus>Open</additionalstatus>
14
+ </project>
15
+ <project>
16
+ <projectname>test project5 posted by API curl</projectname>
17
+ <projectid>589197</projectid>
18
+ <projecturl>http://www.sandbox.freelancer.com/projects/PHP-Java/test-project-posted-API-curl.589197.html</projecturl>
19
+ <bidcount>0</bidcount>
20
+ <averagebid />
21
+ <pmb />
22
+ <status>A</status>
23
+ <enddate>2010-03-29 23:12:49</enddate>
24
+ <additionalstatus>Open</additionalstatus>
25
+ </project>
26
+ <project>
27
+ <projectname>test project4 posted by API curl</projectname>
28
+ <projectid>589196</projectid>
29
+ <projecturl>http://www.sandbox.freelancer.com/projects/PHP-Java/test-project-posted-API-curl.589196.html</projecturl>
30
+ <bidcount>0</bidcount>
31
+ <averagebid />
32
+ <pmb />
33
+ <status>A</status>
34
+ <enddate>2010-03-29 23:11:03</enddate>
35
+ <additionalstatus>Open</additionalstatus>
36
+ </project>
37
+ </items>
38
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"projectid":279,"projecturl":"http:\/\/www.sandbox.freelancer.com\/projects\/PHP-NET\/Test-project-name.html","postdatetime":"2010-08-08 01:34:34"}}
@@ -0,0 +1,5 @@
1
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
2
+ <projectid>589207</projectid>
3
+ <projecturl>http://www.sandbox.freelancer.com/projects/PHP-Java/test-project-posted-API-curl.589207.html</projecturl>
4
+ <postdatetime>Thu, 01 Apr 2010 04:48:31 +0000</postdatetime>
5
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"projectid":279,"projecturl":"http:\/\/www.sandbox.freelancer.com\/projects\/PHP-NET\/Test-project-name.html","postdatetime":"2010-08-08 01:34:34"}}
@@ -0,0 +1,5 @@
1
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
2
+ <projectid>589207</projectid>
3
+ <projecturl>http://www.sandbox.freelancer.com/projects/PHP-Java/test-project-posted-API-curl.589207.html</projecturl>
4
+ <postdatetime>Thu, 01 Apr 2010 04:48:31 +0000</postdatetime>
5
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"projectid":279,"projecturl":"http:\/\/www.sandbox.freelancer.com\/projects\/PHP-NET\/Test-project-name.html","postdatetime":"2010-08-08 01:34:34"}}
@@ -0,0 +1,5 @@
1
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
2
+ <projectid>589207</projectid>
3
+ <projecturl>http://www.sandbox.freelancer.com/projects/PHP-Java/test-project-posted-API-curl.589207.html</projecturl>
4
+ <postdatetime>Thu, 01 Apr 2010 04:48:31 +0000</postdatetime>
5
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"count":1,"items":[{"projectname":"Project for testing","projectid":191,"projecturl":"http:\/\/www.sandbox.freelancer.com\/projects\/PHP-NET\/Project-for-testing.html","bidcount":1,"averagebid":250,"pmb":false,"status":"A","enddate":"2010-07-18 00:07:43","additionalstatus":"Open"}]}}
@@ -0,0 +1,16 @@
1
+ <xml-result xmlns="http://api.freelancer.com/schemas/xml-0.1">
2
+ <count>1</count>
3
+ <items>
4
+ <project>
5
+ <projectname>rick+2 project 5</projectname>
6
+ <projectid>589168</projectid>
7
+ <projecturl>http://www.sandbox.freelancer.com/projects/NET/rick-project.589168.html</projecturl>
8
+ <bidcount>1</bidcount>
9
+ <averagebid>250</averagebid>
10
+ <pmb />
11
+ <status>A</status>
12
+ <enddate>2010-05-17 21:37:35</enddate>
13
+ <additionalstatus>Open</additionalstatus>
14
+ </project>
15
+ </items>
16
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>
@@ -0,0 +1 @@
1
+ {"json-result":{"statusconfirmation":1}}
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xml-result>
3
+ <statusconfirmation>1</statusconfirmation>
4
+ </xml-result>