aos_status_t *oss_put_object_from_file(const oss_request_options_t *options, const aos_string_t *bucket, const aos_string_t *object, const aos_string_t *filename, aos_table_t *headers, aos_table_t **resp_headers) { aos_status_t *s = NULL; aos_http_request_t *req = NULL; aos_http_response_t *resp = NULL; aos_table_t *query_params = NULL; int res = AOSE_OK; s = aos_status_create(options->pool); headers = aos_table_create_if_null(options, headers, 1); set_content_type(filename->data, object->data, headers); query_params = aos_table_create_if_null(options, query_params, 0); oss_init_object_request(options, bucket, object, HTTP_PUT, &req, query_params, headers, &resp); res = oss_write_request_body_from_file(options->pool, filename, req); if (res != AOSE_OK) { aos_file_error_status_set(s, res); return s; } s = oss_process_request(options, req, resp); *resp_headers = resp->headers; return s; }
aos_status_t *oss_copy_object(const oss_request_options_t *options, const aos_string_t *source_bucket, const aos_string_t *source_object, const aos_string_t *dest_bucket, const aos_string_t *dest_object, aos_table_t *headers, aos_table_t **resp_headers) { char *copy_source = NULL; aos_status_t *s = NULL; aos_http_request_t *req = NULL; aos_http_response_t *resp = NULL; aos_table_t *query_params = NULL; headers = aos_table_create_if_null(options, headers, 2); query_params = aos_table_create_if_null(options, query_params, 0); /* init headers */ copy_source = apr_psprintf(options->pool, "/%.*s/%.*s", source_bucket->len, source_bucket->data, source_object->len, source_object->data); apr_table_set(headers, OSS_CANNONICALIZED_HEADER_COPY_SOURCE, copy_source); set_content_type(NULL, dest_object->data, headers); oss_init_object_request(options, dest_bucket, dest_object, HTTP_PUT, &req, query_params, headers, &resp); s = oss_process_request(options, req, resp); *resp_headers = resp->headers; return s; }
aos_status_t *oss_put_object_from_buffer(const oss_request_options_t *options, const aos_string_t *bucket, const aos_string_t *object, aos_list_t *buffer, aos_table_t *headers, aos_table_t **resp_headers) { aos_status_t *s = NULL; aos_http_request_t *req = NULL; aos_http_response_t *resp = NULL; aos_table_t *query_params = NULL; headers = aos_table_create_if_null(options, headers, 1); set_content_type(NULL, object->data, headers); query_params = aos_table_create_if_null(options, query_params, 0); oss_init_object_request(options, bucket, object, HTTP_PUT, &req, query_params, headers, &resp); oss_write_request_body_from_buffer(buffer, req); s = oss_process_request(options, req, resp); *resp_headers = resp->headers; return s; }
aos_status_t *oss_append_object_from_buffer(const oss_request_options_t *options, const aos_string_t *bucket, const aos_string_t *object, int64_t position, aos_list_t *buffer, aos_table_t *headers, aos_table_t **resp_headers) { aos_status_t *s = NULL; aos_http_request_t *req = NULL; aos_http_response_t *resp = NULL; aos_table_t *query_params = NULL; /* init query_params */ query_params = aos_table_create_if_null(options, query_params, 2); apr_table_add(query_params, OSS_APPEND, ""); aos_table_add_int64(query_params, OSS_POSITION, position); /* init headers */ headers = aos_table_create_if_null(options, headers, 1); set_content_type(NULL, object->data, headers); oss_init_object_request(options, bucket, object, HTTP_POST, &req, query_params, headers, &resp); oss_write_request_body_from_buffer(buffer, req); s = oss_process_request(options, req, resp); *resp_headers = resp->headers; return s; }
static void gedit_document_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GeditDocument *doc = GEDIT_DOCUMENT (object); GeditDocumentPrivate *priv = gedit_document_get_instance_private (doc); switch (prop_id) { case PROP_SHORTNAME: G_GNUC_BEGIN_IGNORE_DEPRECATIONS; gedit_document_set_short_name_for_display (doc, g_value_get_string (value)); G_GNUC_END_IGNORE_DEPRECATIONS; break; case PROP_CONTENT_TYPE: set_content_type (doc, g_value_get_string (value)); break; case PROP_USE_GVFS_METADATA: priv->use_gvfs_metadata = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
/** * gedit_document_set_content_type: * @doc: * @content_type: (allow-none): * * Deprecated: 3.18: Unused function. The intent is to change the * #GeditDocument:content-type property to be read-only. */ void gedit_document_set_content_type (GeditDocument *doc, const gchar *content_type) { g_return_if_fail (GEDIT_IS_DOCUMENT (doc)); set_content_type (doc, content_type); }
virtual ssize_t out_content_type() { if (!(out_content_type_)) { ssize_t count = 0, amount = 0; out_content_type_ = set_content_type(); if (0 < (count = this->outln(out_content_type_))) { if (0 < (amount = this->outln())) { count += amount; } } return count; } return 0; }
/** * gedit_document_set_location: * @doc: a #GeditDocument. * @location: the new location. * * Deprecated: 3.14: use gtk_source_file_set_location() instead. */ void gedit_document_set_location (GeditDocument *doc, GFile *location) { GeditDocumentPrivate *priv; g_return_if_fail (GEDIT_IS_DOCUMENT (doc)); g_return_if_fail (G_IS_FILE (location)); priv = gedit_document_get_instance_private (doc); gtk_source_file_set_location (priv->file, location); set_content_type (doc, NULL); }
/** * Send an error message * @param res HttpResponse object * @param code Error Code to lookup and send * @param msg Optional error message (may be NULL) */ void send_error(HttpResponse res, int code, const char *msg) { char server[STRLEN]; const char *err= get_status_string(code); reset_response(res); set_content_type(res, "text/html"); set_status(res, code); StringBuffer_append(res->outputbuffer, "<html><head><title>%d %s</title></head>"\ "<body bgcolor=#FFFFFF><h2>%s</h2>%s<p>"\ "<hr><a href='%s'><font size=-1>%s</font></a>"\ "</body></html>\r\n", code, err, err, msg?msg:"", SERVER_URL, get_server(server, STRLEN)); DEBUG("HttpRequest error: %s %d %s\n", SERVER_PROTOCOL, code, msg ? msg : err); }
static void saved_query_info_cb (GFile *location, GAsyncResult *result, GeditDocument *doc) { GeditDocumentPrivate *priv; GFileInfo *info; const gchar *content_type = NULL; GError *error = NULL; priv = gedit_document_get_instance_private (doc); info = g_file_query_info_finish (location, result, &error); if (error != NULL) { g_warning ("Document saving: query info error: %s", error->message); g_error_free (error); error = NULL; } if (info != NULL && g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE)) { content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); } set_content_type (doc, content_type); if (info != NULL) { /* content_type (owned by info) is no longer needed. */ g_object_unref (info); } g_get_current_time (&priv->time_of_last_save_or_load); priv->create = FALSE; gtk_text_buffer_set_modified (GTK_TEXT_BUFFER (doc), FALSE); save_encoding_metadata (doc); /* Async operation finished. */ g_object_unref (doc); }
static void loaded_query_info_cb (GFile *location, GAsyncResult *result, GeditDocument *doc) { GFileInfo *info; GError *error = NULL; info = g_file_query_info_finish (location, result, &error); if (error != NULL) { /* Ignore not found error as it can happen when opening a * non-existent file from the command line. */ if (error->domain != G_IO_ERROR || error->code != G_IO_ERROR_NOT_FOUND) { g_warning ("Document loading: query info error: %s", error->message); } g_error_free (error); error = NULL; } if (info != NULL && g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE)) { const gchar *content_type; content_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE); set_content_type (doc, content_type); } g_clear_object (&info); /* Async operation finished. */ g_object_unref (doc); }
static void gedit_document_loaded_real (GeditDocument *doc) { GeditDocumentPrivate *priv; GFile *location; priv = gedit_document_get_instance_private (doc); if (!priv->language_set_by_user) { GtkSourceLanguage *language = guess_language (doc); gedit_debug_message (DEBUG_DOCUMENT, "Language: %s", language != NULL ? gtk_source_language_get_name (language) : "None"); set_language (doc, language, FALSE); } g_get_current_time (&priv->time_of_last_save_or_load); set_content_type (doc, NULL); location = gtk_source_file_get_location (priv->file); if (location != NULL) { /* Keep the doc alive during the async operation. */ g_object_ref (doc); g_file_query_info_async (location, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "," G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback) loaded_query_info_cb, doc); } }
aos_status_t *oss_append_object_from_file(const oss_request_options_t *options, const aos_string_t *bucket, const aos_string_t *object, int64_t position, const aos_string_t *append_file, aos_table_t *headers, aos_table_t **resp_headers) { aos_status_t *s = NULL; aos_http_request_t *req = NULL; aos_http_response_t *resp = NULL; aos_table_t *query_params = NULL; int res = AOSE_OK; /* init query_params */ query_params = aos_table_create_if_null(options, query_params, 2); apr_table_add(query_params, OSS_APPEND, ""); aos_table_add_int64(query_params, OSS_POSITION, position); /* init headers */ headers = aos_table_create_if_null(options, headers, 1); set_content_type(append_file->data, object->data, headers); oss_init_object_request(options, bucket, object, HTTP_POST, &req, query_params, headers, &resp); res = oss_write_request_body_from_file(options->pool, append_file, req); s = aos_status_create(options->pool); if (res != AOSE_OK) { aos_file_error_status_set(s, res); return s; } s = oss_process_request(options, req, resp); *resp_headers = resp->headers; return s; }
virtual const char_t* set_content_type(const string_t& to) { return set_content_type(to.chars()); }
void send_file(per_request *reqInfo, struct stat *fi, char allow_options) { FILE *f; #ifdef BLACKOUT_CODE int isblack = FALSE; #endif /* BLACKOUT_CODE */ if ((reqInfo->method != M_GET) && (reqInfo->method != M_HEAD)) { sprintf(error_msg,"%s to non-script",methods[reqInfo->method]); die(reqInfo,SC_NOT_IMPLEMENTED,error_msg); } set_content_type(reqInfo,reqInfo->filename); if((allow_options & OPT_INCLUDES) && (!reqInfo->outh_content_encoding[0])) { #ifdef XBITHACK if((fi->st_mode & S_IXUSR) || (!strcmp(reqInfo->outh_content_type,INCLUDES_MAGIC_TYPE))) { #else if(!strcmp(reqInfo->outh_content_type,INCLUDES_MAGIC_TYPE)) { #endif /* XBITHACK */ reqInfo->bytes_sent = 0; send_parsed_file(reqInfo, allow_options & OPT_INCNOEXEC); log_transaction(reqInfo); return; } } if (reqInfo->path_info[0]) { strcat(reqInfo->filename,reqInfo->path_info); strcat(reqInfo->url,reqInfo->path_info); sprintf(error_msg,"No file matching URL: %s",reqInfo->url); log_reason(reqInfo, error_msg, reqInfo->filename); die(reqInfo,SC_NOT_FOUND,reqInfo->url); } if(!(f=FOpen(reqInfo->filename,"r"))) { if (errno == EACCES) { log_reason(reqInfo,"(1) file permissions deny server access", reqInfo->filename); /* we've already established that it exists */ die(reqInfo,SC_FORBIDDEN,reqInfo->url); } else { /* We know an error occured, of an unexpected variety. * This could be due to no more file descriptors. We have this * child exit after this stage so that errors of state are * swept under the carpet. */ standalone = 0; sprintf(error_msg,"File Open error, errno=%d",errno); log_reason(reqInfo,error_msg,reqInfo->filename); die(reqInfo,SC_SERVER_ERROR,error_msg); } } reqInfo->bytes_sent = 0; #ifdef BLACKOUT_CODE if (!strcmp(reqInfo->outh_content_type,BLACKOUT_MAGIC_TYPE)) { isblack = TRUE; strcpy(reqInfo->outh_content_type,"text/html"); } #endif /* BLACKOUT_CODE */ if(reqInfo->http_version != P_HTTP_0_9) { /* No length dependent headers since black is parsed */ #ifdef BLACKOUT_CODE if (isblack == FALSE) { #endif /* BLACKOUT_CODE */ #ifdef CONTENT_MD5 reqInfo->outh_content_md5 = (unsigned char *)md5digest(f); #endif /* CONTENT_MD5 */ set_content_length(reqInfo,fi->st_size); if (set_last_modified(reqInfo,fi->st_mtime)) { FClose(f); return; } } if (reqInfo->http_version != P_HTTP_0_9) { send_http_header(reqInfo); } #ifdef BLACKOUT_CODE } #endif /* BLACKOUT_CODE */ if(reqInfo->method != M_HEAD) { #ifdef BLACKOUT_CODE if (isblack == TRUE) send_fp_black(reqInfo,f,NULL); else #endif /* BLACKOUT_CODE */ send_fp(reqInfo,f,NULL); } log_transaction(reqInfo); FClose(f); } void send_dir(per_request *reqInfo,struct stat *finfo, char allow_options) { char *name_ptr, *end_ptr; char *ifile, *temp_name; ifile = newString(HUGE_STRING_LEN,STR_TMP); temp_name = newString(HUGE_STRING_LEN,STR_TMP); /* Path Alias (pa) array should now have the trailing slash */ /* if (pa[0] != '/') { */ if ((reqInfo->filename[strlen(reqInfo->filename) - 1] != '/') && (reqInfo->path_info[0] != '/')) { strcpy_dir(ifile,reqInfo->url); construct_url(temp_name,reqInfo->hostInfo,ifile); escape_url(temp_name); die(reqInfo,SC_REDIRECT_PERM,temp_name); } /* Don't allow PATH_INFO to directory indexes as a compromise for error messages for files which don't exist */ if ((reqInfo->path_info[0] != '\0') || (strlen(reqInfo->path_info) > 1)) { strcat(reqInfo->filename,reqInfo->path_info); strcat(reqInfo->url,reqInfo->path_info); sprintf(error_msg,"No file matching URL: %s",reqInfo->url); log_reason(reqInfo, error_msg, reqInfo->filename); freeString(temp_name); freeString(ifile); die(reqInfo,SC_NOT_FOUND,reqInfo->url); } strncpy(temp_name, reqInfo->hostInfo->index_names, HUGE_STRING_LEN-1); end_ptr = name_ptr = temp_name; while (*name_ptr) { while (*name_ptr && isspace (*name_ptr)) ++name_ptr; end_ptr = name_ptr; if (strchr(end_ptr, ' ') ) { end_ptr = strchr(name_ptr, ' '); *end_ptr = '\0'; end_ptr++; } else end_ptr += strlen(end_ptr); make_full_path(reqInfo->filename,name_ptr,ifile); if(stat(ifile,finfo) == -1) { if(! *end_ptr && (allow_options & OPT_INDEXES)) { if (reqInfo->path_info[0]) { strcat(reqInfo->filename,reqInfo->path_info); strcat(reqInfo->url,reqInfo->path_info); log_reason(reqInfo,"file does not exist",reqInfo->filename); freeString(ifile); freeString(temp_name); die(reqInfo,SC_NOT_FOUND,reqInfo->url); } if ((reqInfo->method != M_GET) && (reqInfo->method != M_HEAD)) { sprintf(error_msg,"%s to non-script",methods[reqInfo->method]); freeString(ifile); freeString(temp_name); die(reqInfo,SC_NOT_IMPLEMENTED,error_msg); } index_directory(reqInfo); freeString(ifile); freeString(temp_name); return; } else if (! *end_ptr) { log_reason(reqInfo,"(2) file permissions deny server access", reqInfo->filename); freeString(ifile); freeString(temp_name); die(reqInfo,SC_FORBIDDEN,reqInfo->url); } } else { strcpy(reqInfo->filename,ifile); probe_content_type(reqInfo,reqInfo->filename); if(!strcmp(reqInfo->outh_content_type,CGI_MAGIC_TYPE)) send_cgi(reqInfo,finfo,allow_options); else send_file(reqInfo,finfo,allow_options); freeString(ifile); freeString(temp_name); return; } name_ptr = end_ptr; } }