prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Rename userInfo/ API endpoint to user/
  Placeholder ticket
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `hs_rest_api/urls.py`
  Content:
  ```
  1 from django.conf.urls import patterns, url
  2 from hs_core import views
  3 from hs_file_types import views as file_type_views
  4 
  5 from rest_framework_swagger.views import get_swagger_view
  6 
  7 schema_view = get_swagger_view(title='Hydroshare API')
  8 
  9 urlpatterns = patterns(
  10     '',
  11 
  12     # Swagger Docs View
  13     url(r'^$', schema_view),
  14 
  15     # resource API
  16     url(r'^resource/types/$', views.resource_rest_api.ResourceTypes.as_view(),
  17         name='list_resource_types'),
  18 
  19     # DEPRECATED: use from above instead
  20     url(r'^resourceTypes/$', views.resource_rest_api.ResourceTypes.as_view(),
  21         name='DEPRECATED_list_resource_types'),
  22 
  23     # DEPRECATED: use GET /resource/ instead
  24     url(r'^resourceList/$', views.resource_rest_api.ResourceList.as_view(),
  25         name='DEPRECATED_list_resources'),
  26 
  27     url(r'^resource/$', views.resource_rest_api.ResourceListCreate.as_view(),
  28         name='list_create_resource'),
  29 
  30     # Public endpoint for resource flags
  31     url(r'^resource/(?P<pk>[0-9a-f-]+)/flag/$', views.set_resource_flag_public,
  32         name='public_set_resource_flag'),
  33 
  34     url(r'^resource/(?P<pk>[0-9a-f-]+)/$',
  35         views.resource_rest_api.ResourceReadUpdateDelete.as_view(),
  36         name='get_update_delete_resource'),
  37 
  38     # Create new version of a resource
  39     url(r'^resource/(?P<pk>[0-9a-f-]+)/version/$', views.create_new_version_resource_public,
  40         name='new_version_resource_public'),
  41 
  42     # public copy resource endpoint
  43     url(r'^resource/(?P<pk>[0-9a-f-]+)/copy/$',
  44         views.copy_resource_public, name='copy_resource_public'),
  45 
  46     # DEPRECATED: use form above instead
  47     url(r'^resource/accessRules/(?P<pk>[0-9a-f-]+)/$',
  48         views.resource_rest_api.AccessRulesUpdate.as_view(),
  49         name='DEPRECATED_update_access_rules'),
  50 
  51     url(r'^resource/(?P<pk>[0-9a-f-]+)/sysmeta/$',
  52         views.resource_rest_api.SystemMetadataRetrieve.as_view(),
  53         name='get_system_metadata'),
  54 
  55     # DEPRECATED: use from above instead
  56     url(r'^sysmeta/(?P<pk>[0-9a-f-]+)/$',
  57         views.resource_rest_api.SystemMetadataRetrieve.as_view(),
  58         name='DEPRECATED_get_system_metadata'),
  59 
  60     url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/$',
  61         views.resource_rest_api.ScienceMetadataRetrieveUpdate.as_view(),
  62         name='get_update_science_metadata'),
  63 
  64     # Resource metadata editing
  65     url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/elements/$',
  66         views.resource_metadata_rest_api.MetadataElementsRetrieveUpdate.as_view(),
  67         name='get_update_science_metadata_elements'),
  68 
  69     # Update key-value metadata
  70     url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/custom/$',
  71         views.update_key_value_metadata_public,
  72         name='update_custom_metadata'),
  73 
  74     # DEPRECATED: use from above instead
  75     url(r'^scimeta/(?P<pk>[0-9a-f-]+)/$',
  76         views.resource_rest_api.ScienceMetadataRetrieveUpdate.as_view(),
  77         name='DEPRECATED_get_update_science_metadata'),
  78 
  79     url(r'^resource/(?P<pk>[A-z0-9]+)/map/$',
  80         views.resource_rest_api.ResourceMapRetrieve.as_view(),
  81         name='get_resource_map'),
  82 
  83     # Patterns are now checked in the view class.
  84     url(r'^resource/(?P<pk>[0-9a-f-]+)/files/(?P<pathname>.+)/$',
  85         views.resource_rest_api.ResourceFileCRUD.as_view(),
  86         name='get_update_delete_resource_file'),
  87 
  88     url(r'^resource/(?P<pk>[0-9a-f-]+)/files/$',
  89         views.resource_rest_api.ResourceFileListCreate.as_view(),
  90         name='list_create_resource_file'),
  91 
  92     url(r'^resource/(?P<pk>[0-9a-f-]+)/folders/(?P<pathname>.*)/$',
  93         views.resource_folder_rest_api.ResourceFolders.as_view(),
  94         name='list_manipulate_folders'),
  95 
  96     # public unzip endpoint
  97     url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/unzip/(?P<pathname>.*)/$',
  98         views.resource_folder_hierarchy.data_store_folder_unzip_public),
  99 
  100     # public zip folder endpoint
  101     url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/zip/$',
  102         views.resource_folder_hierarchy.data_store_folder_zip_public),
  103 
  104     # public move or rename
  105     url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/move-or-rename/$',
  106         views.resource_folder_hierarchy.data_store_file_or_folder_move_or_rename_public),
  107 
  108     url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/set-file-type/(?P<file_path>.*)/'
  109         r'(?P<hs_file_type>[A-z]+)/$',
  110         file_type_views.set_file_type_public,
  111         name="set_file_type_public"),
  112 
  113     # DEPRECATED: use form above instead. Added unused POST for simplicity
  114     url(r'^resource/(?P<pk>[0-9a-f-]+)/file_list/$',
  115         views.resource_rest_api.ResourceFileListCreate.as_view(),
  116         name='DEPRECATED_get_resource_file_list'),
  117 
  118     url(r'^taskstatus/(?P<task_id>[A-z0-9\-]+)/$',
  119         views.resource_rest_api.CheckTaskStatus.as_view(),
  120         name='get_task_status'),
  121 
  122     url(r'^userInfo/$',
  123         views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),
  124 
  125     # Resource Access
  126     url(r'^resource/(?P<pk>[0-9a-f-]+)/access/$',
  127         views.resource_access_api.ResourceAccessUpdateDelete.as_view(),
  128         name='get_update_delete_resource_access'),
  129 )
  130
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/hs_rest_api/urls.py b/hs_rest_api/urls.py
  --- a/hs_rest_api/urls.py
  +++ b/hs_rest_api/urls.py
  @@ -119,6 +119,9 @@
           views.resource_rest_api.CheckTaskStatus.as_view(),
           name='get_task_status'),
   
  +    url(r'^user/$',
  +        views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),
  +
       url(r'^userInfo/$',
           views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),
  
verification_info: {"golden_diff": "diff --git a/hs_rest_api/urls.py b/hs_rest_api/urls.py\n--- a/hs_rest_api/urls.py\n+++ b/hs_rest_api/urls.py\n@@ -119,6 +119,9 @@\n         views.resource_rest_api.CheckTaskStatus.as_view(),\n         name='get_task_status'),\n \n+    url(r'^user/$',\n+        views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),\n+\n     url(r'^userInfo/$',\n         views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),\n", "issue": "Rename userInfo/ API endpoint to user/\nPlaceholder ticket\n", "before_files": [{"content": "from django.conf.urls import patterns, url\nfrom hs_core import views\nfrom hs_file_types import views as file_type_views\n\nfrom rest_framework_swagger.views import get_swagger_view\n\nschema_view = get_swagger_view(title='Hydroshare API')\n\nurlpatterns = patterns(\n    '',\n\n    # Swagger Docs View\n    url(r'^$', schema_view),\n\n    # resource API\n    url(r'^resource/types/$', views.resource_rest_api.ResourceTypes.as_view(),\n        name='list_resource_types'),\n\n    # DEPRECATED: use from above instead\n    url(r'^resourceTypes/$', views.resource_rest_api.ResourceTypes.as_view(),\n        name='DEPRECATED_list_resource_types'),\n\n    # DEPRECATED: use GET /resource/ instead\n    url(r'^resourceList/$', views.resource_rest_api.ResourceList.as_view(),\n        name='DEPRECATED_list_resources'),\n\n    url(r'^resource/$', views.resource_rest_api.ResourceListCreate.as_view(),\n        name='list_create_resource'),\n\n    # Public endpoint for resource flags\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/flag/$', views.set_resource_flag_public,\n        name='public_set_resource_flag'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.ResourceReadUpdateDelete.as_view(),\n        name='get_update_delete_resource'),\n\n    # Create new version of a resource\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/version/$', views.create_new_version_resource_public,\n        name='new_version_resource_public'),\n\n    # public copy resource endpoint\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/copy/$',\n        views.copy_resource_public, name='copy_resource_public'),\n\n    # DEPRECATED: use form above instead\n    url(r'^resource/accessRules/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.AccessRulesUpdate.as_view(),\n        name='DEPRECATED_update_access_rules'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/sysmeta/$',\n        views.resource_rest_api.SystemMetadataRetrieve.as_view(),\n        name='get_system_metadata'),\n\n    # DEPRECATED: use from above instead\n    url(r'^sysmeta/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.SystemMetadataRetrieve.as_view(),\n        name='DEPRECATED_get_system_metadata'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/$',\n        views.resource_rest_api.ScienceMetadataRetrieveUpdate.as_view(),\n        name='get_update_science_metadata'),\n\n    # Resource metadata editing\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/elements/$',\n        views.resource_metadata_rest_api.MetadataElementsRetrieveUpdate.as_view(),\n        name='get_update_science_metadata_elements'),\n\n    # Update key-value metadata\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/custom/$',\n        views.update_key_value_metadata_public,\n        name='update_custom_metadata'),\n\n    # DEPRECATED: use from above instead\n    url(r'^scimeta/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.ScienceMetadataRetrieveUpdate.as_view(),\n        name='DEPRECATED_get_update_science_metadata'),\n\n    url(r'^resource/(?P<pk>[A-z0-9]+)/map/$',\n        views.resource_rest_api.ResourceMapRetrieve.as_view(),\n        name='get_resource_map'),\n\n    # Patterns are now checked in the view class.\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/files/(?P<pathname>.+)/$',\n        views.resource_rest_api.ResourceFileCRUD.as_view(),\n        name='get_update_delete_resource_file'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/files/$',\n        views.resource_rest_api.ResourceFileListCreate.as_view(),\n        name='list_create_resource_file'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/folders/(?P<pathname>.*)/$',\n        views.resource_folder_rest_api.ResourceFolders.as_view(),\n        name='list_manipulate_folders'),\n\n    # public unzip endpoint\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/unzip/(?P<pathname>.*)/$',\n        views.resource_folder_hierarchy.data_store_folder_unzip_public),\n\n    # public zip folder endpoint\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/zip/$',\n        views.resource_folder_hierarchy.data_store_folder_zip_public),\n\n    # public move or rename\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/move-or-rename/$',\n        views.resource_folder_hierarchy.data_store_file_or_folder_move_or_rename_public),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/set-file-type/(?P<file_path>.*)/'\n        r'(?P<hs_file_type>[A-z]+)/$',\n        file_type_views.set_file_type_public,\n        name=\"set_file_type_public\"),\n\n    # DEPRECATED: use form above instead. Added unused POST for simplicity\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/file_list/$',\n        views.resource_rest_api.ResourceFileListCreate.as_view(),\n        name='DEPRECATED_get_resource_file_list'),\n\n    url(r'^taskstatus/(?P<task_id>[A-z0-9\\-]+)/$',\n        views.resource_rest_api.CheckTaskStatus.as_view(),\n        name='get_task_status'),\n\n    url(r'^userInfo/$',\n        views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),\n\n    # Resource Access\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/access/$',\n        views.resource_access_api.ResourceAccessUpdateDelete.as_view(),\n        name='get_update_delete_resource_access'),\n)\n", "path": "hs_rest_api/urls.py"}], "after_files": [{"content": "from django.conf.urls import patterns, url\nfrom hs_core import views\nfrom hs_file_types import views as file_type_views\n\nfrom rest_framework_swagger.views import get_swagger_view\n\nschema_view = get_swagger_view(title='Hydroshare API')\n\nurlpatterns = patterns(\n    '',\n\n    # Swagger Docs View\n    url(r'^$', schema_view),\n\n    # resource API\n    url(r'^resource/types/$', views.resource_rest_api.ResourceTypes.as_view(),\n        name='list_resource_types'),\n\n    # DEPRECATED: use from above instead\n    url(r'^resourceTypes/$', views.resource_rest_api.ResourceTypes.as_view(),\n        name='DEPRECATED_list_resource_types'),\n\n    # DEPRECATED: use GET /resource/ instead\n    url(r'^resourceList/$', views.resource_rest_api.ResourceList.as_view(),\n        name='DEPRECATED_list_resources'),\n\n    url(r'^resource/$', views.resource_rest_api.ResourceListCreate.as_view(),\n        name='list_create_resource'),\n\n    # Public endpoint for resource flags\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/flag/$', views.set_resource_flag_public,\n        name='public_set_resource_flag'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.ResourceReadUpdateDelete.as_view(),\n        name='get_update_delete_resource'),\n\n    # Create new version of a resource\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/version/$', views.create_new_version_resource_public,\n        name='new_version_resource_public'),\n\n    # public copy resource endpoint\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/copy/$',\n        views.copy_resource_public, name='copy_resource_public'),\n\n    # DEPRECATED: use form above instead\n    url(r'^resource/accessRules/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.AccessRulesUpdate.as_view(),\n        name='DEPRECATED_update_access_rules'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/sysmeta/$',\n        views.resource_rest_api.SystemMetadataRetrieve.as_view(),\n        name='get_system_metadata'),\n\n    # DEPRECATED: use from above instead\n    url(r'^sysmeta/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.SystemMetadataRetrieve.as_view(),\n        name='DEPRECATED_get_system_metadata'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/$',\n        views.resource_rest_api.ScienceMetadataRetrieveUpdate.as_view(),\n        name='get_update_science_metadata'),\n\n    # Resource metadata editing\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/elements/$',\n        views.resource_metadata_rest_api.MetadataElementsRetrieveUpdate.as_view(),\n        name='get_update_science_metadata_elements'),\n\n    # Update key-value metadata\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/scimeta/custom/$',\n        views.update_key_value_metadata_public,\n        name='update_custom_metadata'),\n\n    # DEPRECATED: use from above instead\n    url(r'^scimeta/(?P<pk>[0-9a-f-]+)/$',\n        views.resource_rest_api.ScienceMetadataRetrieveUpdate.as_view(),\n        name='DEPRECATED_get_update_science_metadata'),\n\n    url(r'^resource/(?P<pk>[A-z0-9]+)/map/$',\n        views.resource_rest_api.ResourceMapRetrieve.as_view(),\n        name='get_resource_map'),\n\n    # Patterns are now checked in the view class.\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/files/(?P<pathname>.+)/$',\n        views.resource_rest_api.ResourceFileCRUD.as_view(),\n        name='get_update_delete_resource_file'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/files/$',\n        views.resource_rest_api.ResourceFileListCreate.as_view(),\n        name='list_create_resource_file'),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/folders/(?P<pathname>.*)/$',\n        views.resource_folder_rest_api.ResourceFolders.as_view(),\n        name='list_manipulate_folders'),\n\n    # public unzip endpoint\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/unzip/(?P<pathname>.*)/$',\n        views.resource_folder_hierarchy.data_store_folder_unzip_public),\n\n    # public zip folder endpoint\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/zip/$',\n        views.resource_folder_hierarchy.data_store_folder_zip_public),\n\n    # public move or rename\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/move-or-rename/$',\n        views.resource_folder_hierarchy.data_store_file_or_folder_move_or_rename_public),\n\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/functions/set-file-type/(?P<file_path>.*)/'\n        r'(?P<hs_file_type>[A-z]+)/$',\n        file_type_views.set_file_type_public,\n        name=\"set_file_type_public\"),\n\n    # DEPRECATED: use form above instead. Added unused POST for simplicity\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/file_list/$',\n        views.resource_rest_api.ResourceFileListCreate.as_view(),\n        name='DEPRECATED_get_resource_file_list'),\n\n    url(r'^taskstatus/(?P<task_id>[A-z0-9\\-]+)/$',\n        views.resource_rest_api.CheckTaskStatus.as_view(),\n        name='get_task_status'),\n\n    url(r'^user/$',\n        views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),\n\n    url(r'^userInfo/$',\n        views.user_rest_api.UserInfo.as_view(), name='get_logged_in_user_info'),\n\n    # Resource Access\n    url(r'^resource/(?P<pk>[0-9a-f-]+)/access/$',\n        views.resource_access_api.ResourceAccessUpdateDelete.as_view(),\n        name='get_update_delete_resource_access'),\n)\n", "path": "hs_rest_api/urls.py"}]}